Auf einfachste Weise von der seriellen Schnittstelle lesen?


7

Ich habe ein TrueRNG USB-basiertes Hardware-RNG und versuche, dessen Ausgabe unter Mac OS X 10.9.2 zu lesen. Ich brauche nur eine einseitige Kommunikation.

Das Gerät sagt, dass es als "CDC Virtual Serial Port" angezeigt wird, und ich sehe es tatsächlich als /dev/tty.usbmodem1411.

Ich habe es nie geschafft cat /dev/tty.usbmodem1411; Wenn ich das tue, bekomme ich überhaupt keine Ausgabe. Ich kann es jedoch verwenden minicomoder daraus picocomlesen. Mit picocomfunktioniert es sogar mit --noinit --noresetOptionen, was darauf hindeutet, dass ich in der Lage sein sollte, catdieses Gerät zu verwenden.

Also, meine Probleme / Fragen:

  1. Warum kann ich catdas Gerät nicht?
  2. Obwohl es mit minicomund funktioniert picocom, funktioniert es nur in der ersten Sitzung: Wenn ich eines dieser Programme schließe und sie dann wieder öffne, lesen sie ungefähr 300 Bytes und blockieren für immer. Wenn ich schließe und wieder öffne , können sie nichts lesen. Wenn ich das USB-Gerät ausstecke und wieder einstecke, ist es beim ersten Versuch wieder für immer lesbar. Warum sollte das so sein und hat es mit diesem Zitat aus der TrueRNG-Dokumentation zu tun? "Durch Löschen des DTR-Flags an der virtuellen seriellen Schnittstelle wird der Datenstrom gestoppt. Der Datenstrom wird fortgesetzt, wenn DTR gesetzt ist."
  3. Ich möchte die zufälligen Daten in hex anzeigen. Also versuche ich diesen Befehl : picocom /dev/tty.usbmodem1411 | xxd -p. Die Ausgabe scheint jedoch den Zeilenumbruch nicht zu berücksichtigen. nur der Wagenrücklauf. Es wird zur nächsten Zeile verschoben, ohne zum Zeilenanfang zurückzuspulen. Ich würde es vorziehen, kontinuierlich zu sein.

Hier einige Diagnosen:

% stty -a -f /dev/tty.usbmodem1411
speed 9600 baud; 0 rows; 0 columns;
lflags: -icanon -isig -iexten -echo -echoe -echok -echoke -echonl
        -echoctl -echoprt -altwerase -noflsh -tostop -flusho -pendin
        -nokerninfo -extproc
iflags: -istrip -icrnl -inlcr -igncr -ixon -ixoff -ixany -imaxbel -iutf8
        -ignbrk -brkint -inpck -ignpar -parmrk
oflags: -opost -onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb crtscts -dsrflow
        -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;

1
Können Sie es mit cat /dev/tty.usbmodem1411 | versuchen hexdump -C (mit cat können Sie möglicherweise daraus lesen, aber einige Zeichen können nicht gedruckt werden). Außerdem könnten Sie dd verwenden, wenn = / dev / tty.usbmodem1411
Nikolaidis Fotis

Nikolaidis, danke für deinen Kommentar. Wie ich schon sagte, mit dem catich nicht lesen kann. Es werden absolut keine Daten ausgegeben, egal ob druckbar oder nicht druckbar. Gleiches gilt für dd.
Philip

Antworten:


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.