Tôi có RNG phần cứng dựa trên USB TrueRNG và tôi đang cố đọc đầu ra của nó trên Mac OS X 10.9.2. Tôi chỉ cần giao tiếp một chiều.
Thiết bị nói rằng nó xuất hiện dưới dạng "Cổng nối tiếp ảo CDC" và thực sự tôi thấy nó là /dev/tty.usbmodem1411
.
Tôi chưa bao giờ có thể cat /dev/tty.usbmodem1411
; Khi tôi làm, tôi không nhận được đầu ra nào cả. Tôi có thể, tuy nhiên, sử dụng minicom
hoặc picocom
để đọc từ nó. Với picocom
, nó hoạt động ngay cả với --noinit --noreset
các tùy chọn, gợi ý rằng tôi sẽ có thể sử cat
dụng thiết bị đó.
Vì vậy, các vấn đề / câu hỏi của tôi:
- Tại sao tôi không thể
cat
thiết bị đó? - Mặc dù nó hoạt động với
minicom
vàpicocom
, nó chỉ hoạt động trong phiên đầu tiên: nếu tôi đóng một trong hai chương trình này, sau đó mở lại chúng, sau đó chúng đọc khoảng 300 byte và chặn vĩnh viễn. Nếu tôi đóng và mở lại , họ không thể đọc bất cứ thứ gì. Tuy nhiên, khi tôi rút và cắm lại thiết bị USB, thiết bị sẽ lại có thể đọc được mãi mãi trong lần thử đầu tiên. Tại sao điều này sẽ xảy ra, và nó có liên quan gì đến trích dẫn này từ tài liệu TrueRNG không? "Bằng cách xóa cờ DTR trên cổng nối tiếp ảo, luồng dữ liệu sẽ dừng lại. Luồng dữ liệu sẽ tiếp tục khi DTR được đặt." - Tôi muốn xem dữ liệu ngẫu nhiên trong hex. Vì vậy, tôi thử lệnh này :
picocom /dev/tty.usbmodem1411 | xxd -p
. Tuy nhiên, đầu ra dường như không tôn trọng ký tự dòng mới; Chỉ là cỗ xe trở về. Nó di chuyển đến dòng tiếp theo mà không cần tua lại đến đầu dòng. Tôi muốn nó được liên tục.
Đây là một số chẩn đoán:
% 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
Bạn có thể thử với mèo /dev/tty.usbmodem1411 | hexdump -C (với con mèo bạn có thể đọc được từ nó, nhưng khá nhiều ký tự không thể in được). Ngoài ra, bạn có thể sử dụng dd if = / dev / tty.usbmodem1411
—
Nikolaidis Fotis
Nikolaidis, cảm ơn bình luận của bạn. Như tôi đã đề cập, với
—
Philip
cat
tôi không thể đọc từ nó. Hoàn toàn không có dữ liệu đi ra, cho dù có thể in hoặc không thể in. Tương tự cho dd
.