Li-Fi通信中的编码/解码问题

时间:2017-07-04 05:47:52

标签: python python-3.x serial-communication

我正在研究一个关于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。

1 个答案:

答案 0 :(得分:1)

在更改为手册中给出的Baudrate = 38400之后我才开始工作,但理论上它应适用于所有波特率。