以最简单的方式从串口读取?

Phi*_*lip 7 serial-port

我有一个基于TrueRNG USB 的硬件 RNG,我正在尝试在 Mac OS X 10.9.2 上读取它的输出。我只需要单向沟通。

该设备说它显示为“CDC 虚拟串行端口”,实际上我将其视为/dev/tty.usbmodem1411.

我从来没能做到cat /dev/tty.usbmodem1411;当我这样做时,我根本没有输出。但是,我可以使用minicompicocom阅读它。使用picocom,它甚至可以使用--noinit --noreset选项,这表明我应该能够使用cat该设备。

所以,我的问题/问题:

  1. 为什么我不能cat那个设备?
  2. 虽然它适用于minicomand picocom,但它只适用于第一个会话:如果我关闭这些程序中的任何一个,然后重新打开它们,那么它们读取大约 300 个字节并永远阻塞。如果我关闭并再次重新打开,他们将无法阅读任何内容。但是,当我拔下并重新插入 USB 设备时,它在第一次尝试时再次可读。为什么会这样,这是否与 TrueRNG 文档中的引用有关?“通过清除虚拟串口上的 DTR 标志,数据流将停止。当 DTR 被设置时,数据流将恢复。”
  3. 我想以十六进制查看随机数据。所以,我试试这个命令:picocom /dev/tty.usbmodem1411 | xxd -p。然而,输出似乎不尊重换行符;只是回车。它移动到下一行而不倒回到行的开头。我更喜欢它是连续的。

以下是一些诊断:

% 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;
Run Code Online (Sandbox Code Playgroud)

Phi*_*lip 1

显然我需要使用/dev/cu.usbmodem1234而不是dev/tty.usbmodem1234. 感谢制造该设备的公司提供的解决方案。