2016-10-19 1 views
1

Die Anwendung verwendet serielle Kommunikation über USB und funktioniert gut, wenn der PC von der Festplatte bootet.Serielle Kommunikation über USB mit einem LIVE USB-Boot

Ich habe ein LiveUSB-Image (. ISO) des Betriebssystems erstellt. Hat den gleichen PC vom USB-Laufwerk gestartet, der das .iso-Image enthält.

Jetzt ist der Prüfling verbunden und die Anwendung wird ausgeführt, die berichtet, dass es Müll auf der Linie die meiste Zeit gibt. Allerdings funktioniert es bei einigen Versuchen, es ist sehr inkonsistent.

Ich konnte nicht verstehen, wie sich ein Boot von einem Live USB von einem HDD Boot unterscheidet.

FYI, PC hat Fedora Core 22 mit 4.0.4 Linux Kernel.

Serielle Kommunikation: Baudrate ist 115200 mit 1 Stoppbit.

Jede Hilfe wird sehr geschätzt.

Danke,

Shahab

bearbeiten

I dmesg und fand einen Unterschied überprüft haben,

cdc_acm : failed to set dtr/rts auf Live-USB-Boot. Im anderen Fall wird es nicht gesehen. Ähnlich wie question auf Stackoverflow.

Eine weitere Beobachtung, die serielle Kommunikation funktioniert gut, wenn das Gerät angeschlossen ist und der PC vom Live-USB-Stick startet. Wenn das USB-Kabel zum Gerät nicht angeschlossen und wieder eingesteckt ist, wird das Problem gemeldet.

+0

Live USB und HHD haben unterschiedliche MBR. Dies hängt auch davon ab, wie der USB-Stick vom BIOS formatiert oder sichtbar ist. Einige BIOS können Ihnen erlauben zu wählen: HDD, FDD etc. –

+0

@EugenKonkov danke für den Kommentar. Ich konnte jedoch nicht verstehen, wie ein MBR die serielle Kommunikation unterbricht. – user3612463

+0

Ihre Anwendung erwartet Daten im Format wie HDD, aber Sie erhalten es in einem anderen Format (ISO). Aus diesem Grund wird nicht erwartet, dass der Fehler oben angezeigt wird. Können Sie Byte für Byte vergleichen, was Sie in beiden Fällen erhalten? Dump empfangen Daten in Datei und leiten Sie dann Daten aus Datei in Ihre App um. Falls Ihre App beim Umleiten von Daten aus der Datei keinen Fehler meldet, sind Sie sicher, dass das Problem in Ordnung ist. Wenn ein Fehler ausgegeben wird, liegt ein Problem in den Daten vor. –

Antwort

0

Nach dem Wiederverbinden des USB-Kabels wird die Nummer Ihrer seriellen Schnittstelle wahrscheinlich inkrementiert und Sie haben eine dead/dev/ttyUSB0 und wahrscheinlich eine neue funktionierende/dev/ttyUSBX. Da Ihre Anwendung das Verzeichnis/dev/ttyUSB0 geöffnet hält, wird es erst entfernt, wenn Sie Ihre App neu starten. Lesen Sie weiter das alte ttyUSB0 und Sie werden den Müll bekommen. Ein zweiter Hinweis wäre, dass Sie wahrscheinlich ein schreibgeschütztes Dateisystem haben, wenn Sie von Live starten, so dass Sie nichts neues im Ordner/dev erstellen können, so dass das neue Gerät nicht angezeigt wird.

+0

danke für die Antwort. Ich habe jedoch beobachtet, dass das Gerät jedes Mal mit dem Befehl 'dmesg' als'/dev/ttyACM0' angezeigt wird. – user3612463

+0

Ich starte meine Anwendung jedes Mal neu, ich schalte das Gerät ein.Ich töte meine Anwendung und dann schalte ich das Gerät um; erst nachdem es als '/ dev/ttyACM0' erkannt wurde, starte ich die Anwendung. – user3612463

Verwandte Themen