-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathProjectNotes.txt
66 lines (50 loc) · 3.59 KB
/
ProjectNotes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
***Description***
Features: Only single reading is implemented, despite the single/multi button. Read command
is executed on a timer. Button commands to start and stop reading exist for debugging.
Raw hex output to console plus decoded number in application window.
Why use enums and constant strings for app state? Enums control value of fcn arguments.
Constant strings reduce spelling errors in values that are used in multiple locations
and simplify multiple-language support. It is common practice in Android app development.
Control of device port. I cannot find a good place to close the port. For now, I will open and
close it for each read operation. Rearrange reader functions for greater speed. One instance
of reader for the read pane. Open the port when the timer starts. Close the port when the timer stops.
How to coordinate change of app state with change of panes?
1) When the user clicks a radio button, the state and the panes must change. Let the AppState
setSettings... fcns change the panes to ensure that it is done.
2) When the user changes the default settings, the panes do not
need to be changed. Let the button event handlers change app state and panes as separate commands.
3) Let the app state decide if the panes need to be reloaded by checking the settings category
that is being changed.
I choose 2.
The timer task must complete before the next timer event fires.
There is no harm in calling cancel() multiple times.
Window size. You must clean & build the project after changing a size constant.
I choose not to use a scroll pane.
Should I use the dll's hex_a and a_hex functions to convert data?
***Problems***
Unsatisfied Link Error. Cannot load umf.dll.
Solution: SO 30767478 says that the dll must be in SysWOW64 folder
when running a 32-bit JRE on a 64-bit computer. (I think this is the explanation.)
Previous versions have used other workarounds, such as putting the dll in the root
directory, which did not work in this application for an unknown reason.
Settings pane captures keypresses in combo boxes to guide the user to the desired choice. The compiler
objects to casting the event source as a combo box, despite attempts to check the type before casting.
Compiler warning
Note: C:\Users\MichalG\Documents\NetBeansProjects\SkyRfidJavaApp\src\skyrfidjavaapp\SettingsPane.java
uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
My solution is to pass the combo box directly to the event handler, so that the compiler recognizes
its type.
AppState xml file path may not work when packaged as jar.
Auto-read timer runs after the read pane is changed.
Solution: Keep one instance of each pane in the SkyRfidJavaApp class. Create a flag
to stop the timer. Create a method of the ReadPane class that changes this flag.
Create switch pane method in SkyRfidJavaApp. When panes are switched, turn the timer on and off.
RF.exe shows AFI. How does it read this value? I see only functions to write the value.
What if a tag leaves the field during the read?
Multiple handles
Is there a conflict if reader and writer have handles on the RFID device? I will avoid the
question by closing the port when the pane switches from read to write.
Use of "this." I use it often to activate NetBeans auto-complete. It makes typing easier. Is there a risk?
Multiple tags
Timer must adjust to number of cards read so that all can be shown before next read.