pyserial和pH m的问题

2024-05-19 21:38:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读取梅特勒-托莱多七倍pH计的输出。根据手册我设置波特率,奇偶校验,停止位和数据位。设备每3秒输出一次数据。在我设置timeout=3之前。然而,我收到了奇怪的数据:

import serial

ser = serial.Serial(
    baudrate=9600,
    port='/dev/ttyUSB1',
    timeout=3,
    parity=serial.PARITY_EVEN,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS
    )

ser.xonxoff = 1
ser.rtscts = 0
ser.dsrdtr = 0

data = []
decode = []
line = []
count = 0

while count < 100 :
    data.append(ser.read())
    # line.append(ser.readline())
    count = count + 1

print(data)
ser.close()

data就像:

['K', 'X', '+', '\xb1', ':', '\x02', ' ', '\x02', ' ', 'J', '\r', '\x93', '\xc9', '\xa2', 'p', '\n', '\x92', '3', '\xe9', '\xc2', 'C', '\n', 'Q', 'C', '\xa1', 'H', '\r', 'K', 'X', '+', '\xb1', ':', '\x02', ' ', '\x02', ' ', 'J', '\r', '\x93', '\xc9', '\xa2', 'p', '\n', '\x92', '3', '\xe9', '\xc2', 'C', '\n', 'Q', 'C', '\xa1', 'H', '\r', '', 'K', 'X', '+', '\xb1', ':', '\x02', ' ', '\x02', ' ', 'J', '\r', '\x93', '\xc9', '\xa2', 'p', '\n', '\x92', '3', '\xe9', '\xc2', 'C', '\n', 'Q', 'C', '\xa1', 'H', '\r', 'K', 'X', '+', '\xb1', ':', '\x02', ' ', '\x02', ' ', 'J', '\r', '\x93', '\xc9', '\xa2', 'p', '\n', '\x92', '3']

你知道我做错了什么吗?输出应该像c0H06.00pH

正如建议的那样,我用timeout=0尝试了它,但是我得到了空字符串。我要分析模拟信号。也许什么都没有发生,但是如果我设置timeout=3,为什么我会收到一些东西呢?你知道吗

我终于做到了。我不得不将pH计的输出模式从打印机设置为模拟。你知道吗


Tags: datacounttimeoutserialphserx02xe9