我有一个 Velleman k8090 继电器板,我试图从中读取一些数据。我可以很好地写到板上,但是每当我输出读取的数据时,我都会得到奇怪的字符,比如菱形或倒置的问号。这是我的代码的一部分:
import serial
COM_PORT = 'COM4'
class Velleman8090:
def __init__(self, port=COM_PORT):
self.port = port
self.baud_rate = 19200
self.data_bits = 8
self.parity = 'N'
self.stop_bits = 1
self.flow_control = 'N'
def open_device(self):
self.talk = serial.Serial(self.port, self.baud_rate, self.data_bits, self.parity, self.stop_bits)
def firmware_version(self):
data = packet(0x71, 0x00, 0x00, 0x00)
self.talk.write(data)
print self.talk.read()
def close_device(self):
self.talk.close()
def chksum(cmd,msk,p1,p2):
return (((~(0x04 + cmd + msk + p1 + p2)) + 0x01) & 0xff)
def packet(cmd,msk,p1,p2):
return str(bytearray([0x04, cmd, msk, p1, p2, chksum(cmd, msk, p1, p2), 0x0f]))
def main():
vm8090 = Velleman8090()
vm8090.open_device()
vm8090.firmware_version()
vm8090.close_device()
为什么我会得到这些奇怪的字符?文档指出它应该返回年份和星期。
编辑:经过一些搜索和故障排除后,我现在很确定它与 Python 代码或数据类型有关,而不是硬件。 该论坛包含一个从板读取的 C 示例。我从板上正确读取了该示例,因此我相当确定它与 Python 代码有关,而不是与硬件本身有关。