Protokoll programieren

melmager

Erfahrenes Mitglied
Ich bin grade darein ein Datenprotokoll in Java abzubilden und brauche ein paar Rückmeldungen. :-)

Zuerst habe ich die Physikalische Schicht - sprich ein paar Methoden um über eine serielle Schnittstelle
Daten zu senden und empfangen - das wäre schon mal die erste Classe (das war noch einfach)

Als nächstes das Transportprotokoll - die Daten werden in ein Header und Abschluss eingepackt. Im Schluss ist noch ein Checksumme eingebaut
-Header-Daten-Ende > werden versendet
-Bestätigung- < positiv/negativ (checksumme ok?)
-Header-Status-Ende
< kommt rein (Status ob die Befehl die im Datenteil richtig abgeabeitet wurden oder Fehlercode)
-Bestätigung- > (ok?)

Das sollte die nächste Classe sein mit Exeptions / aber auch etwas selbstständig arbeiten können
Wenn zum Beispiel die Bestätigung Fehler kommte solle die Klasse ersmal ein Fehlerzähler hochzählen und es nochmal versuchen - und sagen wir mal erst nach 3 Fehlversuchen eine Exeption auslösen
oder würde Ihr das anders lösen?

Jetzt kommt das Anwendungsprotokoll und hier hänge ich in den Seilen :-(
die APDU - das Versenden der Befehle ist ja kein Hexenwerk ein Paar Methoden teilweise überladen sollen das regeln können (soweit bin ich ja schon)
Im moment hänge ich beim Statusbefehl - den Status abzufragen ist nicht das problem sondern das Auswerten
wie löse ich sowas auf? Das datenfeld von der Statusinformation ist z.B so aufgebaut
0x0c x x x = Uhrzeit - Uhrzeit ist also 4 byte lang und fängt mit 0x0c an
0x78 x x ? Belegnummer 3 byte usw..
Macht man dafür eine eigene Classe ? und wie könnte sowas aussehen?
nach dem motto:
public String getStatTime();
und was mache ich beim Kurzstatus wenn einige Infos nicht mtkommen
eine zweite Methode
public boolean isTimevalid() oder ein Leerstring zurückgeben ?
Im Moment tendiere ich dazu das alles in eine Classe rein kommt und nicht vorhandene Statussachen als Leerstring oder negativwert zurückzugeben.

Für Hinweise oder Ideen immer dankbar :-)
 
Mhhh wieso verschickst du deine Daten nicht einfach per SOAP hin und her?

Dann sparst du dir die komplette Entwicklung neuer Protokolle, und bist
auf dem Wege des Industriestandards :)
 
Das Protokoll ist vorgegeben :-)

Sprich vorhandene Hardware mit einem ISO Protokoll das ich mit Java ansteuern möchte
Von daher benutze ich ja einen Standart - nur der muss implementiert werden.

Mal eine Ganz andre Frage - wie macht man eine Ereignissteuerung ?

Vermutlich über ein Thread der den Eingang pollt und dann entsprechende Metoden aufruft
oder?
 
melmager hat gesagt.:
Das Protokoll ist vorgegeben :-)

Sprich vorhandene Hardware mit einem ISO Protokoll das ich mit Java ansteuern möchte
Von daher benutze ich ja einen Standart - nur der muss implementiert werden.

Mal eine Ganz andre Frage - wie macht man eine Ereignissteuerung ?

Vermutlich über ein Thread der den Eingang pollt und dann entsprechende Metoden aufruft
oder?

Ohne zu wissen was du genau meinst
Ja :-)
 
Christian Fein hat gesagt.:
Ohne zu wissen was du genau meinst
Ja :-)

Nun es gibt ja 2 Möglichkeiten Ereignisse zu überwachen

Nachsehen ob was passiert ist (poll)

oder ein Interrupt

In meinem Fall kommen ja die Daten über die Serielle Schnittstelle, aber bei einer Tastaurüberwacheng auf Eingabe würde es gleich aussehen.

Sehe ich mit einem Thread immer wieder nach ob ein Zeichen da ist
(Ich sehe alle 5 minuten zur Tür raus um zu nachzusehen ob einer da ist :-) )

oder kann ich ein Interrupt auslösen und eine entsprechende Tätigkeit auslösen
(Ich arbeite normal weiter und wenn der Interrupt von der Tür kommt (Klingel) gehe ich auch hin )
Letzteres habe ich in Java noch nicht entdeckt darum die Frage

sowas ähnliches wie AWTEvent bei swing nur halt ohne GUI :-)
 
Zuletzt bearbeitet:
Lass ihn doch ne halbe sekunde schlafen um dann wieder zu schauen ob was da ist :)

Mich wird es nerven alle 5 min aus dem Fenster zu schauen, dem Thread ist das scheiss egal ob das eine angenehme Arbeit ist oder nicht :-)

Obwohl ich hatte schonmal davon gehört das ein Thread der so stumpfsinniges macht, gerne eine WorkToStupidException wirft :-)
 
Christian Fein hat gesagt.:
Lass ihn doch ne halbe sekunde schlafen um dann wieder zu schauen ob was da ist :)

Mich wird es nerven alle 5 min aus dem Fenster zu schauen, dem Thread ist das scheiss egal ob das eine angenehme Arbeit ist oder nicht :-)

Obwohl ich hatte schonmal davon gehört das ein Thread der so stumpfsinniges macht, gerne eine WorkToStupidException wirft :-)

Lach *g* ist wascheinlich sowas wie der "SilentRunMode" eines Schaltkreses :-)

Du siehst ich komme von der Hardwareseite darum quäle ich mich noch heute mit Hardwarenahe Sachen rum
und vor Jahren war es noch so das es hiess : Polling ist böse :-) Interrupt ist was gutes

Eines Tages werde ich ein richtiger Programmierer, der sich mit der Grafischen Oberfläche befasst :-)
ist ein Vorsatz fürs neue Jahr :-) - dann bin ich ewas dichter beim Mainstream

Aber genug vom Offtoppic -- der Ansatz der Classenaufteilung so lassen ?

mit 3 Classen eine für die Schnittstelle - hier denke ich noch drüber nach ob ich dabei über eigenen Implentaion über den Stream gehen soll
eine für das Transportprotokoll und eine Für die Anwendungsschicht
Wobie ich im Moment das so ausarbeite, das ich Die Statusinformation über eigene Methoden abfragen kann
uind wenn der Status nicht vorhanden ist, über eine Exeption gehe
 
Zuletzt bearbeitet:
Zurück