我正在研究一个关于LIFI的项目,我们希望通过USB端口(Windows操作系统)发送短信来测试通信,闪烁(0s n 1s)n接收器将其反馈回PC USB端口(linux OS) 。编码已经用python3语言完成,它适用于单字符字母和多字符数字,但我的接收器没有为某些字符接收相同的数字或字母。它可能与编码n解码有关。
传送
import serial
ser=serial.Serial()
ser.port="/dev/ttyUSB0"
ser.baudrate=9600
ser.open()
while 1:
print("what to send--")
ab=input()
if ser.isOpen():
a=ser.write(ab.encode()) #Can also use (b'str')- converts to bytes
print("Sent")
print(a)
else:
print("Couldnt Open")
ser.close()
接收机
import serial
ser=serial.Serial("/dev/ttyUSB2", 9600)
if ser.isOpen():
print(ser.name + " is open \n Receiving= ")
while True:
out= ser.read()
print(out.decode())
else:
print("Couldnt open")
ser.close()
我在无限循环中逐个字符地阅读。我收到一些正确的字符,如x,z,o.p但是对于'b'我得到's','c'我得到'r'。对于数字2,3,6,7来说正确但是1,4,5,8,9,0来自!,6,7,>,!,>。 对于一行字母表,我得到 UnicodeDecodeError :'utf8'编解码器无法解码字节0x9c。
答案 0 :(得分:1)
在更改为手册中给出的Baudrate = 38400之后我才开始工作,但理论上它应适用于所有波特率。