After studying communication between PC and LCD/Buttons, I found the procotol. Now you can write you own Linux/Window program controlling LCD, and read back button status
1) LCD/Button communicates with PC via COM2 port. And uses 9600N1 format.
2) Communicate method:
a) PC sends LCD module a command(see data format for detail)(except command code 19), LCD module sends back a response(with same command code);
b) LCD modules sends PC the button status (using command code 19) when a button being pressed or released.
3) The data format (for both command and response) is the following:
[Command Code] [Data Length(N)] [Data1, Data2, ..., DataN] [CRC Checksum]
[Command Code]: 1 byte, command code;
[Data Length] : 1 byte, length of data;
[Data1, Data2 ..., DataN]: N bytes data;
[CRC Checksum] : 2 bytes; CRC checksum ( start with command code, end with dataN), the CRC algorithms for sending and receiving seem to be different
4) Command Code
0: Ping the LCD module. (No Data Field)
1: Display text on line 1
2: Display text on line 2
3: Set special character
4: Set cursor position. (Data1 = x position, Data 2= y position)
5: Set cursor style.
6: Set contrast. text:
7: Set backlight. text:
8: Set power-up text for line 1
9: Set power-up text for line 2
10: Set power-up special character
11: Set IP address.
12: Get IP address.
13: Set subnet mask.
14: Get subnet mask.
15: Set gateway address.
16: Get gateway address.
17: Set serial number.
18: Get serial number.
19: Button status
20: Set boot option.
21: Get boot option.
22: Get firmware version.
5) Command code 19:
This command code only from LCD modules to PC. Data length = 1, Data1 = Button status.
Data1 = 1 : Up button pressed
Data1 = 5 : Up button released
Data1 = 2 : Down button pressed
Data1 = 6 : Down button released
Data1 = 3 : Left button pressed
Data1 = 7 : Left button released
Data1 = 4 : Right button pressed
Data1 = 8 : Right button released