OK massive noob here,
i ve got a rs232 adr device ( it's a tablet, not wacom but same kind ). i know its 19200 8n1 and i want to reverse engineering it by trying to understand the protocol of this thing. I ve manage to monitor the com port with realterm, and now i ve got a bunch of hex numbers/data corresponding to the activity of the tablet ( i guess stuff like : is the sylus on or hovering ? and x and y position of the stylus ). The problem is... i just don't know what to do, how to read, or how even to understand those HEX values. Ive tried to translate them to decimal values but...i don't even know what kind of protocol/pattern i have to see.
I don't expect a miracle answer but just if someone can show me a learning path ( book, tutorials, anything), to at least understanding what is going on with this data, and at the end of the road, writing sketches to interfacing with those data.
If you can't find the protocol definition (have you Goolged for it?) then you have to figure it out yourself.
It sounds like you have already made a good start, now you need to try and isolate the bytes that are sent as a result of various events.
For example watch the line until nothing is happening, then touch the upper left of the screen. Did a burst of data appear? Touch the lower right and record the burst from that. Then look at the two lots of data and try to figure out the format. In this example you would expect maybe four bytes to hold the X and Y locations, they should be easy to see.
Hopefully every event produces the same basic format, just with different data. If so you should be able to start deciphering the contents of the data "packets".
The line may not go idle between events, there may be other stuff going on all the time like a query to see if anything is there. As long as what's happening is stable and repeatable you can still differentiate between that and event data.
I m trying to see patern, but sometime i found some, do a test to see if it consistent and then the pattern iw completly different.
Like in the second exemple, i can see 7C a lot and then it desapears...
This is some data when i hover above the tablet with the stylus on diverse area:
C0 35 F9 FC 7C C0 35 F9 26 F9 4A 34 F9 59 F9 C0 9C 94 DA 00 40 9D 4C DA
00 40 47 A4 B4 00 4A 89 7C 69 7B C0 CD C7 26 00 C0 CD C7 26 00 C0 CD C7
26 00 C0 CD C7 26 00 C0 C5 C7 12 FC 4A 37 3B 67 FC 40 23 7E CA 00 C0 46
6E 94 00 40 13 62 94 00 C0 11 5E 94 00 C0 35 FC 8D 3E 4A 98 66 CA 00 40
11 84 9C 00 C0 26 CC 9C 00 C0 30 78 D1 1E C0 9F 4F 15 1E 40 C7 CF 71 00
40 C7 CF 9B 1E 40 8E CF 73 00 40 1C CF 17 1E 40 8E 4F E6 00 4A 10 78 48
1E C0 CE 47 8A 00 C0 39 3B D1 FC C0 9E 3B CF FC CA 89 47 13 FC
And this is when i press on it and draw :
87 2F 7C 70 1E 87 33 22 CE 00 87 33 3E 9C 00 87 33 52 9C 00 87 33 6E 9C
00 87 33 8A 9C 00 87 33 AA CE 00 87 33 CA CE 00 87 33 EE CE 00 87 5F 7C
41 FA 87 DE 7C C5 FA 87 5C 7C 64 FA 87 5A 7C CC FA 87 D8 7C 50 FA 87 56
7C 9A 1F 87 2A 7C 45 1F 87 29 7C 5C FA 87 68 7C 93 00 87 67 7C 63 FA 87
26 7C 73 FA 87 25 7C 3A FA 87 64 7C ED FA 87 C5 7C F0 FA 87 30 7C F3 FA
87 7E 78 1D FA 87 3D 78 78 FA 87 77 78 3D FA 87 8E D4 A4 00 87 27 FC A4
00 87 8D 24 AC 00 87 E7 78 62 3D 87 63 78 23 3D 87 5F 78 64 3D 87 5A 78
CA 3D 87 35 78 25 3D 87 D1 78 25 3D 87 CC 78 25 3D 87 23 78 25 3D 87 30
78 25 3D 87 7D CF 89 3D 87 78 CF 89 3D 87 8E 4F 99 3D 87 E7 4F 32 3D 87
EB 4F 62 0F 87 73 4F CC 0F 87 63 4F C4 0F 87 F3 4F 88 3D 87 5C 4F D6 00
87 36 4F A4 00 87 D7 CF 8F 1F 87 2A 4F 47 1F 87 29 CF 8E 1F 87 68 4F D2
00 87 67 CF 27 1F 87 33 4F 1A FA 87 4D 4F 19 FA 87 4D CF 18 FA 87 4D 4F
93 00 87 4E 4F 8B 1F 87 50 CF 35 FA 87 D2 4F 34 FA 87 9A CF 33 FA 87 35
CF 12 FA 87 C5 4F 4C 1F 87 36 4F 98 1F 87 5C CF 9C 00 87 60 4F CE 00 87
32 CF CE 00 87 69 CF 1D 1E 87 1B 4F 9E 1E 87 72 4F CE 00 C0 CF 4F 3B 1E
40 C2 A4 9C 00 40 99 6C CE 00 C0 4D 3C CE 00 40 4E 14 CE 00 40 8E F4 71
00 40 84 DC 71 00 40 99 7C DD 1E CA 9E 7C DD 1E
For the protocol the only thing i know is that the tablet has a 5 bytes impulse train, 1 status bytes : 176 tablet on but no stylus detected, 240 stylus detected and hovering and 241 stylus detected and writing on the tablet and then 4 position bytes : subcol (0-127), col(4-22), sub row (0-127) and row (4-17). for exemple 241,63,13,63,10 means that the sylus is pressed at the center of the tablet.
But.... when i try to translate the HEX values i ve got from Realterm to decimal, i never see numbers like 176 240 and 241...that's why it gives me a little headache.
Try to see patterns. - I don't know how you hovered so it is just the patterns I see
observations:
The C0 looks like a separator/start/stop character. (see above)
packet lengths seem to be multiples of 5
The first byte has only 4 values = { 40, 4A, C0, CA } => looks like a command
Write a program that reads 5 bytes and merges byte1,2 to an int and byte 3,4 to an int; something like :
command = readbyte();
int col = readbyte() * 256 + readbyte(); // or readbyte() + 256 * readbyte(); depends on LOW HIGH byte order
int row = readbyte() *256 + readbyte();
print command, row, col
You must be able to get a 0,0 coordinate at one of the corners or in the middle of the tablet.
If you get the coordinates right things will be simpler.
The second part has same pattern, command 87 which probably means "draw" followed by X,Y coordinates.
87 2F 7C 70 1E
87 33 22 CE 00
87 33 3E 9C 00
87 33 52 9C 00
87 33 6E 9C 00
87 33 8A 9C 00
87 33 AA CE 00
87 33 CA CE 00
etc
Draw distinct lines horizontal vertical diagonal and look for patterns.
Something else to do, if you haven't done so already - is to contact the manufacturer, by phone if necessary. Be polite about your request, and give exact information (model number and such). You may get something, you may not. Tell them you are working on a driver for the PC (or maybe the Mac), and need some help. Ask them if there are any original testing utilities or drivers available as well as any documentation on the protocol. The first person you talk to may not have any clue what you need, just be polite, and try to escalate the call to better technical service (if you're lucky, you'll get transferred to some form of "engineering" department).
Another thing to look into is if there are any open-source drivers (for Linux, perhaps) available; check around the GIMP project and similar for tablet drivers and such - you might also look into archives of the vintage for drivers and the like (for example, if the tablet is old enough for DOS, look around in the multitude of DOS archives for drivers and/or test utilities).
Coding Bradly : For the "parity odd or none" thing someone who played with the tablet but is now unreachable told me that it was "non", anyway i tried with the parity set to "odd" and heres the result of a basic test :
87 70 3F 55 7E draw top left
87 8B 1D 7D 77 draw bottom right
When i hove the 5 bytes section are begining by C0, 40 or CA, mainly C0 and 40 alternating.
Graynomad : i absolutly don't know if the data stream is synchronised as i said 'Massive noob". But as you ask, no i don't have any data coming till i m approaching the pen, i m using a teensy loaded with usb serial prog for interfacing with my pc. I ve only connected the send data from the tablet to the pc, so i can only monitor data sent by the tablet.
cr0sh : in fact there is a lot of ressource and tools from Topaz Website, but as i said in my first post, i m a massive noob, and when i start to read stuff from the topaz site i understand close to nothing, but as i said, i m just trying to find a way to understand it with a learning curve.