在 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,但是好像又有不同,求高手解答

Android手机使用USB接口与RS232通讯

在win7中如何驱动USB转RS232,在网上找了很多都不行

RS-232 vs. TTL Serial Communication(转载)

如何使用串口助手在PC上直接抄电表?我有USB转串口,232转485头。

硬件开发笔记:硬件开发基本流程,制作一个USB转RS232的模块:设计原理图