从串行端口接收数据


2

我想从RS232串口接收数据到终端,并带有指令到文件。它应该很直接。

cat /dev/ttyS0
cat /dev/ttyS0 > file.txt

在此之前,我已将参数配置为与设备(生化分析仪)的参数相匹配。

sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb

  1. 波特率 - 9600
  2. 平价 - 没有
  3. 比特 - 8位
  4. 停止比特 - 2

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

Answers:


6

尝试 小型机 首先看看你的串口返回什么。安装它 sudo apt-get install minicom

你可以按如下方式启动它(对于ttyS0):

sudo minicom -D /dev/ttyS0

您可以在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应用程序或一些示例代码加上库。

你可以自己写一些东西,但这并不容易。有一些Python支持 ASTM 并且有一个 Perl脚本 你可以试试。

所以也有一个 岗位 有关ASTM的一些信息..


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

选择正确的参数。 Minicom正在展示9600 8N2。希望没关系。但没有收到 - 没有一点。分析仪说:“仪器发送&lt; ENQ&gt;作为发送请求,但主机在15秒内未返回&lt; ACK&gt;或&lt; NAK&gt;。(链接超时)”
Br. Sayan

1
这听起来像你的设备实际上期望计算机理解数据和 发回复 - 它想要一个 ENQ / ACK 交换,也许是为了确保计算机正在倾听。尝试按下发送ACK字节 按Ctrl + F
grawity

1
设备确实等待ENQ / ACK交换,并且在收到消息之前不发送任何消息。我们成功地接收了消息 nrComm Lib ,NZD建议。但它没有达到目的,因为我们需要自动存储在文件中的消息。正如@grawity所暗示的那样,Ctr + F也没有奏效。需要找出不同的方法。在旁注中,您能否建议一些方法来检查RS232电缆是否正常工作(尽管我确定它确实如此),以及哪些引脚短路,以便确保它没问题。
Br. Sayan

2
@ Br.Moksha如果您真的想要,可以通过短接TxD和RxD(9针sub-D连接器(DE9)上的引脚2和3)来测试电缆。确保关闭硬件流量控制( ctrl-A Oserial port setup 在minicom)。您在minicom中键入的每个字符都将被循环回来。如果您还想测试硬件流量控制,则必须缩短RTS和CTS(9针Sub-D上的引脚8和9)。另见维基百科: RS-232 串行端口 还有这个 教程 来自National Instruments
NZD
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.