从串口接收数据

Br.*_*yan 2 linux serial-port cat rs232 stty

我想从 RS232 串行端口接收数据到我的终端并带有一个文件的指令。它应该非常简单。

cat /dev/ttyS0
cat /dev/ttyS0 > file.txt
Run Code Online (Sandbox Code Playgroud)

在此之前,我已经配置了参数以匹配设备(生物化学分析仪)的参数。

sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb
Run Code Online (Sandbox Code Playgroud)

IE

  1. 波特率 - 9600
  2. 奇偶校验 - 无
  3. 位 - 8 位
  4. 停止位 - 2

但是我在终端上没有收到任何东西。它只是空白。问题是什么?

NZD*_*NZD 6

先试试Minicom,看看你的串口返回什么。安装它sudo apt-get install minicom

您按如下方式启动它(对于 ttyS0):

sudo minicom -D /dev/ttyS0
Run Code Online (Sandbox Code Playgroud)

您可以在 Minicom 内设置通信参数(使用ctrl-A P),因此您可以确定它们是正确的。

如果您的设备使用特定协议,则它可能需要一个命令来开始其通信。所以看看用户手册。

也许您的设备已设置为使用硬件握手。如果可能,请将其关闭(至少在开始时)。

如果您无法将其关闭,那么您也必须将其设置在您身边。在 Minicom 中,这是在ctrl-A O和 然后serial port setup

我经常使用 Minicom 来调试串行通信,我发现它效果最好。

我从 OP 收到了更多信息:

实验室仪器(Cobas C311)使用ASTM协议。在界面中,我们只需要点击“发送到主机”,它就会发送一堆 ASTM 记录。我只需要在一个文件中接收它们。有没有其他设置?开始采集数据的命令是什么?...以及如何将数据保存在文件中?

选择正确的参数。Minicom 正在展示 9600 8N2。希望没事。但什么也没收到——一点也没有。分析仪说:“仪器将 ENQ 作为发送请求发送,但主机在 15 秒内没有返回 ACK 或 NAK。(链接超时)”

该设备使用ASTM 协议。设备发送<ENQ>字符作为它准备开始发送数据的信号。
这不是您可以使用minicom或任何其他终端程序接收的东西。您将需要支持该协议的适当应用软件。

您一定要阅读您的用户手册并检查安装盘(如果有)和制造商的网站以获取支持此协议的应用程序。
如果他们没有对此设备的应用程序支持,我会感到惊讶。如果他们提供一些东西,它很可能是一个 Windows 应用程序或一些示例代码加上一个库。

自己写一些东西是可能的,但这并不容易。有一些对ASTM 的Python 支持,并且您可以尝试使用Perl 脚本

SO 也有一个帖子,里面有一些关于 ASTM 的信息。

  • @Br.Moksha 如果您确实需要,可以通过短接 TxD 和 RxD(9 针 sub-D 连接器 (DE9) 上的针脚 2 和针脚 3)来测试电缆。确保关闭硬件流量控制(minicom 中的`ctrl-A O`、`serial port setup`)。您在 minicom 中输入的每个字符都将被循环返回。如果您还想测试硬件流控制,则必须短接 RTS 和 CTS(9 针 Sub-D 上的针脚 8 和 9)。另请参阅维基百科:[RS-232](https://en.wikipedia.org/wiki/RS-232) 和 [串口](https://en.wikipedia.org/wiki/Serial_port) 和本 [教程](http://www.ni.com/tutorial/3450/en/) 来自 National Instruments (2认同)