Wie verarbeitet man serielle Daten, die vom Kartengerät zum Android übertragen werden, zeitgebunden?Android

Forum für diejenigen, die für Android programmieren
Guest
 Wie verarbeitet man serielle Daten, die vom Kartengerät zum Android übertragen werden, zeitgebunden?

Post by Guest »

Problembeschreibung:
Ich habe einen Kartenautomaten und eine Android-App. Die Android-App wird über ein serielles Kabel über einen USB-zu-RS232-Konverter mit dem Kartengerät verbunden. Die Android-App läuft als Ionic Cordova-App und nutzt die Bibliothek com.github.mik3y:usb-serial-for-android:3.4.3.
Allerdings sind wir es Probleme beim Parsen der Antwort von der Maschine. Die Bibliothek stellt die Methode bereit:

Code: Select all

public void onNewData(byte[] data)
Diese Methode empfängt Datenblöcke im Datenarray. Eine erfolgreiche Antwort sieht so aus:

Code: Select all

0x06 0x01
Dies zeigt eine Bestätigung (ACK) von der Maschine an. Danach erfolgt die Antwort in Blöcken im Format:

Code: Select all

0x02 seqNumber data 0x03 0x08 0x09
Wobei:
0x02 markiert den Anfang der Antwort.
0x03 markiert das Ende der Antwort.
0x08 und 0x09 stellen die CRC-Werte dar, die sich je nach Daten ändern.
Problem:
Wir müssen:
Überprüfen Sie die Bestätigung.
Akkumulieren die Antwortblöcke.
Überprüfen Sie den CRC.
Dekodieren Sie alles innerhalb von 900 ms nach dem Senden der Anfrage an die Maschine.
Derzeit erreichen wir dies in etwa 4 Sekunden, was zu langsam ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post