horschtinator
19.09.2012, 21:28
Hallo liebe Forengemeinde,
wir haben heute bei unserer Technikerarbeit ein dickes Problem festgestellt:
Wir sollen per Labview eine Platine per USB ansteuern.
Die Kommunikation funktioniert wie folgt:
Der PC sendet ein Signal, welches aus 10 Byte(char Array mit 10 Bytes) besteht an die Platine:
0x2,0x0,0x1,0x12,0x0,0x0,0x1,0xA,0x1B,0x1
Die Unterstrichenen Bytes sind ein Zeitstempel, der nach jedem Sendevorgang inkrementiert wird.
Die kursiven Bytes sind der CRC16 Code.
Das Problem ist aber jetzt folgendes:
Die Platine antwortet ordnungsgemäß zurück(Mit dem Oszi kontrolliert), aber der Visa Read buffer verdreht komplett das eingehende Array.
Erwartet wird als Eingangssignal ein 40ByteArray, welches auch kommt, aber leider komplett verdreht.
Erwartetes Signal:
0x01,0x1E, 0x2,0x12, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xA,0x85,0xC6
Tatsächliches Signal:
0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x85,0xC6,0x1,0x1E,0x2,0x12,0x0,0x0,0x1,0xA
Woher kommt diese Verschiebung im Array?
Wie gesagt, haben wir auch mit dem Oszilloskop gemessen, da kommt alles richtig!
Der Fehler tritt abhängig von verschiedenen Timestamp Zuständen auf, d.h, er kommt immer nur bei Timestamp 0x7, bei Timestamp 0x1A und noch ein paar weitere.
Ich kann mir den Fehler nicht erklären, z.B bei Timestamp 0x6 oder 0x8 Funktioniert alles perfekt, das Array wird in der richtigen Reihenfolge usw.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
Meine Labviewversion ist 2011
Viele Grüße
HEinz
wir haben heute bei unserer Technikerarbeit ein dickes Problem festgestellt:
Wir sollen per Labview eine Platine per USB ansteuern.
Die Kommunikation funktioniert wie folgt:
Der PC sendet ein Signal, welches aus 10 Byte(char Array mit 10 Bytes) besteht an die Platine:
0x2,0x0,0x1,0x12,0x0,0x0,0x1,0xA,0x1B,0x1
Die Unterstrichenen Bytes sind ein Zeitstempel, der nach jedem Sendevorgang inkrementiert wird.
Die kursiven Bytes sind der CRC16 Code.
Das Problem ist aber jetzt folgendes:
Die Platine antwortet ordnungsgemäß zurück(Mit dem Oszi kontrolliert), aber der Visa Read buffer verdreht komplett das eingehende Array.
Erwartet wird als Eingangssignal ein 40ByteArray, welches auch kommt, aber leider komplett verdreht.
Erwartetes Signal:
0x01,0x1E, 0x2,0x12, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xA,0x85,0xC6
Tatsächliches Signal:
0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x85,0xC6,0x1,0x1E,0x2,0x12,0x0,0x0,0x1,0xA
Woher kommt diese Verschiebung im Array?
Wie gesagt, haben wir auch mit dem Oszilloskop gemessen, da kommt alles richtig!
Der Fehler tritt abhängig von verschiedenen Timestamp Zuständen auf, d.h, er kommt immer nur bei Timestamp 0x7, bei Timestamp 0x1A und noch ein paar weitere.
Ich kann mir den Fehler nicht erklären, z.B bei Timestamp 0x6 oder 0x8 Funktioniert alles perfekt, das Array wird in der richtigen Reihenfolge usw.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
Meine Labviewversion ist 2011
Viele Grüße
HEinz