Grote lichtkrant: Difference between revisions

From RevSpace
Jump to navigation Jump to search
No edit summary
 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Project
{{Project
| Name=Grote lichtkrant reverse engineeren
| Name=Grote lichtkrant reverse engineeren
| Status=in progress
| Status=Completed
| Contact=Juerd
| Contact=Juerd
}}
}}
Line 19: Line 19:


Alles is ontdekt door te observeren wat "WinSpec 5" via de seriele kabel stuurt en ontvangt. De informatie is daarom incompleet, en waarschijnlijk kloppen de beschrijvingen niet. In ieder geval is het onwaarschijnlijk dat de gebruikte terminologie overeenkomt met die van de fabrikant.
Alles is ontdekt door te observeren wat "WinSpec 5" via de seriele kabel stuurt en ontvangt. De informatie is daarom incompleet, en waarschijnlijk kloppen de beschrijvingen niet. In ieder geval is het onwaarschijnlijk dat de gebruikte terminologie overeenkomt met die van de fabrikant.
Bovendien is het met maar 1 apparaat uitgeprobeerd. Het zou goed kunnen dat andere modellen of andere firmwareversies een dialect van het hier beschreven protocol spreken.


De communicatie is eenvoudig: de computer stuurt een commando, de lichtkrant-controller geeft antwoord. De controllers hebben een adres (een nummer), en negeren commando's die voor andere adressen bedoeld zijn.
De communicatie is eenvoudig: de computer stuurt een commando, de lichtkrant-controller geeft antwoord. De controllers hebben een adres (een nummer), en negeren commando's die voor andere adressen bedoeld zijn.
Line 24: Line 26:
Per 6 regels is er een controller. Onze lichtkrant heeft 9 regels en dus 2 controllers. De tweede controller stuurt maar 3 regels aan.
Per 6 regels is er een controller. Onze lichtkrant heeft 9 regels en dus 2 controllers. De tweede controller stuurt maar 3 regels aan.


Een veel gebruikte manier om waardes door te sturen is hex ascii, oftewel een geheel getal verstuurd als hexadecimaal getal, uitgedrukt in ASCII. De decimale waarde 10 is in A, wat in ascii 41h is. Als er 2 bytes nodig zijn, worden voorloopnullen gebruikt, ook weer in ascii: 30h 41h.
Een veel gebruikte manier om waardes door te sturen is hex ascii, oftewel een geheel getal verstuurd als hexadecimaal getal, uitgedrukt in ASCII. De decimale waarde 10 is in hexadecimaal "A", wat in ascii 41h is. Als er 2 bytes nodig zijn, worden voorloopnullen gebruikt, ook weer in ascii: 30h 41h ("0A").


De structuur van een commando:
De structuur van een commando:
Line 43: Line 45:
|-
|-
|}
|}
De structuur van het antwoord:
''Nog documenteren''


== Commando G (login) ==
== Commando G (login) ==
Line 99: Line 98:
! Teken !! Omschrijving
! Teken !! Omschrijving
|-
|-
| 5Fh (_) || Voorgaande teken dubbele breedte
| 5Fh ("_") || Voorgaande teken dubbele breedte
|-
|-
| B4h || Eerste cijfer van uurcomponent huidige tijd
| B4h || Eerste cijfer van uurcomponent huidige tijd
Line 143: Line 142:
| 6 || SSMMHH dec ascii || Tijd, met minst significante cijfer eerst (17:50:01 wordt 100571)
| 6 || SSMMHH dec ascii || Tijd, met minst significante cijfer eerst (17:50:01 wordt 100571)
|-
|-
| 1 || 34h (4) || Betekenis onbekend; lijkt wel afhankelijk te zijn van datum
| 1 || 34h ("4") || Betekenis onbekend; lijkt wel afhankelijk te zijn van datum
|-
|-
| 4 || DDMM dec ascii || Datum, met minst significante cijfer eerst (2 januari wordt 1020)
| 4 || DDMM dec ascii || Datum, met minst significante cijfer eerst (2 januari wordt 1020)
|-
|-
| 1 || 30h (0) of 31h (1) || Schrikkeljaaraanduiding, 0 is niet, 1 is wel
| 1 || 30h ("0") of 31h ("1") || Schrikkeljaaraanduiding, 0 is niet, 1 is wel
|-
|-
| 2 || 33h 32h (32) || Onbekend
| 2 || 33h 32h ("32") || Onbekend
|-
|-
| 8 || ascii || Nieuw wachtwoord, aangevuld met spaties
| 8 || ascii || Nieuw wachtwoord, aangevuld met spaties
Line 157: Line 156:
| 32 || hex ascii || Helderheid (voor egaal beeld, 32 dezelfde digits 0-F gebruiken)
| 32 || hex ascii || Helderheid (voor egaal beeld, 32 dezelfde digits 0-F gebruiken)
|-
|-
| 1 || 34h (4) || Onbekend
| 1 || 34h ("4") || Onbekend
|-
|-
| 25 || 3Fh, 25 maal || Onbekend
| 25 || 3Fh, 25 maal || Onbekend
Line 165: Line 164:


De lichtkrant geeft wat info over zichzelf.
De lichtkrant geeft wat info over zichzelf.
== Antwoord ==
Elk commando wordt bevestigd door de controller.
{|
! Aantal bytes !! Waarde !! Omschrijving
|-
| 2 || hex ascii || Adres van antwoordende controller
|-
| 3 || dec/hex? ascii 30h 30h 32h ("002") || Onbekend
|-
| 1 || ascii || De letter van het gegeven commando
|-
| 1 || ascii || Status van het commando: 59h ("Y") = succes, 46h ("F") = failure
|-
| ? || ? || Na commando "I" wordt extra info meegestuurd
|-
| 4 || hex ascii || CRC van al het voorgaande
|-
| 2 || 04d 04d || End of Transfer (2x)
|}
= Kabel =
RS485:
{|
! dsub9 lichtkrant !! utp !! remote
|-
| 4 || groen || T-
|-
| 5 || oranje || GND
|-
| 7 || wit/blauw || R-
|-
| 8 || blauw || R+
|-
| 9 || wit/groen || T+
|}
Weerstandje in de dsub-connector gemeten op 386 Ω.
= Links =
* [http://www.circuitsonline.net/forum/view/12437/ Forumdraad over deze en andere lichtkranten van Surtronic], bevat o.a. pinouts
* [http://www.surtronic.nl/ Site van de fabrikant]
* [http://www.surtronic.nl/home/downloads.htm Pagina waar WinSpec 5 te downloaden is] achter login - dit zou nu wel eens [http://www.surtronic.com/winspec-software hier] kunnen staan, nog steeds een wachtwoord nodig...

Latest revision as of 07:10, 27 January 2016

Project Grote lichtkrant reverse engineeren
Status Completed
Contact Juerd
Last Update 2016-01-27

Plaatjes

Protocol

Alles is ontdekt door te observeren wat "WinSpec 5" via de seriele kabel stuurt en ontvangt. De informatie is daarom incompleet, en waarschijnlijk kloppen de beschrijvingen niet. In ieder geval is het onwaarschijnlijk dat de gebruikte terminologie overeenkomt met die van de fabrikant.

Bovendien is het met maar 1 apparaat uitgeprobeerd. Het zou goed kunnen dat andere modellen of andere firmwareversies een dialect van het hier beschreven protocol spreken.

De communicatie is eenvoudig: de computer stuurt een commando, de lichtkrant-controller geeft antwoord. De controllers hebben een adres (een nummer), en negeren commando's die voor andere adressen bedoeld zijn.

Per 6 regels is er een controller. Onze lichtkrant heeft 9 regels en dus 2 controllers. De tweede controller stuurt maar 3 regels aan.

Een veel gebruikte manier om waardes door te sturen is hex ascii, oftewel een geheel getal verstuurd als hexadecimaal getal, uitgedrukt in ASCII. De decimale waarde 10 is in hexadecimaal "A", wat in ascii 41h is. Als er 2 bytes nodig zijn, worden voorloopnullen gebruikt, ook weer in ascii: 30h 41h ("0A").

De structuur van een commando:

Aantal bytes Waarde Omschrijving
3 15h 15h 03h Geen idee. Elk commando begint hiermee.
2 hex ascii Adres
2 hex ascii 255 - adres (e.g. 254 als adres = 1)
3 hex ascii Lengte van commando (n)
n - Commando: hoofdletter die het commando bepaalt, eventueel gevolgd door parameters.
4 hex ascii CRC-CCITT (X-modem) van al het voorgaande, behalve de eerste drie bytes

Commando G (login)

De lichtkrant reageert pas op andere commando's na een login. Het standaardwachtwoord is leeg.

Aantal bytes Waarde Omschrijving
8 ascii Wachtwoord, aangevuld met spaties (20h)

Commando P (enter programming mode)

Commando's A, B en C zijn alleen te gebruiken tussen P en H in. Tijdens programming mode gaat het scherm (helaas!) op zwart.

Commando A (schedule)

Het apparaat gebruikt een cron-achtig schema. Dit is nog niet goed uitgezocht.

Aantal bytes Waarde Omschrijving
2 hex ascii Programma (bijv. 01)
8 ascii Naam van het programma, aangevuld met spaties.
19 2ah 20h 2ah 20h 20h 20h 20h 20h 20h 20h 2ah 20h 20h 20h 20h 20h 20h 20h 30h Cron-achtige definitie

Commando's C en B (set text)

Voor de eerste pagina wordt commando C gebruikt, voor alle opvolgende pagina's commando B.

Aantal bytes Waarde Omschrijving
2 hex ascii Programma (bijv. 01)
2 hex ascii Paginanummer; de eerste is 01.
1 decimal ascii 1-6 Effect bij verschijnen
1 decimal ascii 1-6 Effect bij verdwijnen
2 decimal ascii 01-99 Aantal seconden
282 ascii Tekst: steeds 6 regels van 45 tekens, elk voorafgegaan en gevolgd door een spatie (20h). Tussen de regels staat geen regeleinde.

In de tekst kunnen de volgende speciale tekens worden gebruikt:

Teken Omschrijving
5Fh ("_") Voorgaande teken dubbele breedte
B4h Eerste cijfer van uurcomponent huidige tijd
B5h Tweede cijfer van uurcomponent huidige tijd
B6h Eerste cijfer van minuutcomponent huidige tijd
B7h Tweede cijfer van minuutcomponent huidige tijd
B8h Eerste cijfer van secondecomponent huidige tijd
B9h Tweede cijfer van secondecomponent huidige tijd
BAh Eerste cijfer van dagcomponent huidige datum
BBh Tweede cijfer van dagcomponent huidige datum
BCh Eerste cijfer van maandcomponent huidige datum
BDh Tweede cijfer van maandcomponent huidige datum
BEh ?
BFh Eerste letter van maandcomponent huidige datum
C0h Tweede letter van maandcomponent huidige datum
C1h Derde letter van maandcomponent huidige datum
F6h Dubbele punt, knipperend

Commando H (done programming)

Commando's A, B en C zijn alleen te gebruiken tussen P en H in.

Commando U (configure)

Aantal bytes Waarde Omschrijving
6 SSMMHH dec ascii Tijd, met minst significante cijfer eerst (17:50:01 wordt 100571)
1 34h ("4") Betekenis onbekend; lijkt wel afhankelijk te zijn van datum
4 DDMM dec ascii Datum, met minst significante cijfer eerst (2 januari wordt 1020)
1 30h ("0") of 31h ("1") Schrikkeljaaraanduiding, 0 is niet, 1 is wel
2 33h 32h ("32") Onbekend
8 ascii Nieuw wachtwoord, aangevuld met spaties
20 dec ascii? "00000000000000003303", geen idee wat het betekent
32 hex ascii Helderheid (voor egaal beeld, 32 dezelfde digits 0-F gebruiken)
1 34h ("4") Onbekend
25 3Fh, 25 maal Onbekend

Commando I (info)

De lichtkrant geeft wat info over zichzelf.

Antwoord

Elk commando wordt bevestigd door de controller.

Aantal bytes Waarde Omschrijving
2 hex ascii Adres van antwoordende controller
3 dec/hex? ascii 30h 30h 32h ("002") Onbekend
1 ascii De letter van het gegeven commando
1 ascii Status van het commando: 59h ("Y") = succes, 46h ("F") = failure
? ? Na commando "I" wordt extra info meegestuurd
4 hex ascii CRC van al het voorgaande
2 04d 04d End of Transfer (2x)

Kabel

RS485:

dsub9 lichtkrant utp remote
4 groen T-
5 oranje GND
7 wit/blauw R-
8 blauw R+
9 wit/groen T+

Weerstandje in de dsub-connector gemeten op 386 Ω.

Links