在 python 中通过 RS232 到 USB 电缆读取秤数据
Posted
技术标签:
【中文标题】在 python 中通过 RS232 到 USB 电缆读取秤数据【英文标题】:read weighing scale data via RS232 to USB cable in python 【发布时间】:2019-10-26 06:18:22 【问题描述】:我正在尝试使用树莓派通过 RS232 到 pyhon 中的 USB 电缆从 称重秤 YH-T7E 读取数据。但是,当我通过它读取数据时,它会给我一个空字符串。
这是我的代码:
import serial
import time
ser = serial.Serial('/dev/ttyUSB0',
baudrate=9600,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.SEVENBITS,
timeout = 1)
while True:
print(ser.read())
上面代码的输出是:
b''
我也尝试过 this 帖子中的解决方案,但由于它一直在等待,所以什么也没提供:
while True:
data = ''
while ser.inWaiting() > 0:
data += ser.read()
if data:
print("Received: ", data)
我已验证 RS232 与笔记本电脑正确连接:
[ 6105.752153] usb 1-1.2: ch341-uart converter now attached to ttyUSB1
即使我使用了minicom,配置了波特率等参数,还是没有收到数据。
这里是YH-T7E manual 供参考
请帮助我?
【问题讨论】:
由于电子秤只是发送数据,您应该首先使用串行终端程序测试您正在接收并使用正确的波特率。或者 PySerial 有一个终端模式 - 查看文档。一旦显示了比例尺中的数据,您就可以尝试让您的代码正常工作。顺便说一句,手册没有提到具有偶校验的数据,并指定数据是 8 位的。另外,不清楚默认波特率是多少,因此您需要在刻度校准设置中声明它。 另外,手册中有一个令人困惑的“大屏幕”部分,它讨论了电流回路,这是一种不同于 RS232 的电气接口。也许这就是 RS232 连接器图上的输入/输出引脚的含义,在这种情况下您可以忽略它。 我在其他地方看到奇偶校验是无的。另外,我已经校准了设备,它的波特率为 1200 你试过串口终端吗?或者你的代码在正确的设置下运行得更好吗? 我尝试了 minicom,校准了规模,将波特率设置为 9600,但仍然没有运气:( 【参考方案1】:您的代码看起来不错。对ser.read()
的调用一次将读取一个字节 - 因此,如果它接收到任何数据,您应该每行看到一个字符。您可能应该在这里解决一些问题。
您的电线连接正确吗?秤的 TX 是否连接到 RS232 端口上的 RX?接地是否连接在一起?
通讯设置是否正确?您是否尝试将其设置为 8 位?还可以尝试将奇偶校验设置为 ODD 或 EVEN,也可以设置为 NONE?
你的 USB RS232 工作吗?也许您可以在其他设备上查看它?
【讨论】:
我已验证 USB 连接正常,[2440.370289] usb 1-1.2:产品:USB2.0-Ser! [2440.371011] ch341 1-1.2:1.0: 检测到 ch341-uart 转换器 [2440.374064] usb 1-1.2: ch341-uart 转换器现在连接到 ttyUSB1 听起来不错。我更多地考虑 USB 串行设备的硬件方面。例如,我从 Ebay 购买的一些廉价设备不符合 RS232 的电压水平。如果您有其他可以输出 RS232 的设备,您可以测试它是否有效。 很遗憾,我没有其他设备可以测试 如果您可以使用 minicom 接收,则 USB 适配器正在工作,因此它会返回您的代码。您的代码打开 ttyusb1 是否已在上面的评论中使用? @J.P.Petersen ,称重线未正确连接。修复了这个问题,数据完美呈现以上是关于在 python 中通过 RS232 到 USB 电缆读取秤数据的主要内容,如果未能解决你的问题,请参考以下文章
pl2303是usb转rs232,ch340也是usb转rs232,但是好像又有不同,求高手解答
在win7中如何驱动USB转RS232,在网上找了很多都不行
RS-232 vs. TTL Serial Communication(转载)