我想从 RS232 串行端口接收数据到我的终端,并向文件发出指令。这应该很简单。
cat /dev/ttyS0
cat /dev/ttyS0 > file.txt
在此之前,我已经配置了参数以匹配设备(生化分析仪)。
sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb
IE
- 波特率 - 9600
- 奇偶校验 - 无
- 位 - 8 位
- 停止位 - 2
但我在终端上没有收到任何东西。它只是空白的。问题是什么?
答案1
尝试微型计算机首先,看看你的串行端口返回什么。使用以下命令安装它:sudo apt-get install minicom
您可以按如下方式启动它(对于 ttyS0):
sudo minicom -D /dev/ttyS0
您可以从 Minicom 内部设置通信参数(使用ctrl-A P
),以确保它们是正确的。
如果您的设备使用特定协议,则可能需要命令来启动通信。因此,请查看用户手册。
您的设备可能设置为使用硬件握手。如果可能,请将其关闭(至少一开始就关闭)。
如果您无法关闭它,那么您也必须在您这边进行设置。在 Minicom 中,它位于 下,ctrl-A O
然后serial port setup
。
我经常使用 Minicom 来调试串行通信,我发现它效果最好。
我从原帖者那里得到了更多信息:
实验室仪器(Cobas C311)使用 ASTM 协议。在界面中,我们只需单击“发送到主机”,它就会发送一堆 ASTM 记录。我只需要在文件中接收它们。还有其他设置吗?开始获取数据的命令是什么?...以及如何将数据保存在文件中?
选择正确的参数。Minicom 显示 9600 8N2。希望没问题。但什么也没收到——一个位也没有。分析仪说,“仪器将 ENQ 作为发送请求传输,但主机在 15 秒内未返回 ACK 或 NAK。(链接超时)”
该设备使用ASTM 协议。设备发送该<ENQ>
字符作为已准备好开始发送数据的信号。
您无法使用minicom
或任何其他终端程序接收该字符。您需要支持此协议的适当应用软件。
您一定要阅读用户手册并检查安装盘(如果有)和制造商网站,以查找支持此协议的应用程序。
如果他们没有支持此设备的应用程序,我会感到惊讶。如果他们提供某些东西,那很可能是 Windows 应用程序或一些示例代码加上库。
可以自己写一些东西,但并不容易。Python 支持美国试验材料协会还有Perl 脚本你可以尝试一下。
SO 也有一个邮政包含一些有关 ASTM 的信息。