Carriage Return, Line Feed and End of Line mit cFP2200 Problem
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Carriage Return, Line Feed and End of Line mit cFP2200 Problem
Guten Morgen,
ich habe eine Steuerung auf dem cFP2100 entwickelt, dazu noch ein Test Fenster das mit der Steuerung über ein selbst definiertes Protokoll kommuniziert. Als Terminator für meine Pakete dient (0x0D0A, \r\n) Beides in LabVIEW 2011 mit RealTime Modul implementiert.
Letzte Woche habe ich einen neuen FieldPoint cFP2200 bekommen und die Steuerung auf eine kompiliert und übertragen.
Nun hatte ich das Problem, dass die Befehle von dem Test Panel nicht richtig empfangen werden. Es wird nicht nach dem CRLF das Packet an den Parser weitergeleitet sondern erst wenn 512 bytes alles an den Parser übergeben.
Mein Steuerung hängt aber an jedes Packet das versendet wird die von LabVIEW angebotene „End of Line Constante“. Bei den cFP2100 war auch alles in Ordnung.
Nachdem ich Wireshark gestartet und mir die Pakete angesehen habe, musste ich feststellen das die Steuerung wieder erwarten ein Line Feed (LF) (0x0A, \n) statt dem erwarteten (und auch Implementierten End of Line (EOL) (0x0D0A, \r\n) an die Pakete hängt. Gelöst habe ich das indem ich explizit
Meine Vermutung ist das es von National falsch implementiert ist, bevor ich das aber mit Sicherheit behaupten kann, würde ich gerne wissen ob jemand dieses Verhalten bereits beobachtet hat oder bestätigen kann.
Auf dem cFP2100 war das PHAR LAP ETS als Real-Time System drauf, auf dem cFP2200 ist jetzt ein VxWorks OS drauf. Das könnte vielleicht auch ein Hinweis auf den Fehler sein?
Angehängt habe ich die Bildausschnitte von dem Sender und Empfänger.
Würde mich freuen wenn jemand es bestätigen kann oder es jemandem eine Fehlersuche erleichtert. (Ich habe einige Stunden gesucht)
RE: Carriage Return, Line Feed and End of Line mit cFP2200 Problem
So ganz blicke ich jetzt nicht, welcher Screenshot zu welcher Implementation gehört, ABER soviel kann ich sagen:
Die "End of Line Constant" ist (und war schon immer) betriebssystemabhängig. Und ganz klar, unter VxWorks ist sie halt nur LF. Das ist keine fehlerhafte Implementation von LabVIEW, sondern von dir.
Wenn dein Protokoll unabhängig vom Zielsystem sein soll, dann solltest du es auch so programmieren.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!