python串口通信
python serial port communication
下面是我的串口通信代码
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
import serial
MCU = serial.Serial('COM35', 115200, timeout=.1)
import time
time.sleep(1) #give the connection a second to settle
while True:
data = MCU.readline()
print(str(data))
但我进入 输出 作为
b'\x0b\x16 )6\x06\x07\x08X\x02\x16,'
(十六进制+Ascii值)
这是我的输入数据
uint8_t myBuf[]={11,22,32,41,54,6,7,8,88,2,22,44};
有人知道我在这里做错了什么吗?
您希望输出的格式是什么?正如您所建议的,您拥有的是正确的数据,但是是字节格式的。例如,您可以将其作为 python 整数列表,如下所示 (Python 3):
>>> list(data)
[11, 22, 32, 41, 54, 6, 7, 8, 88, 2, 22, 44]
struct 模块也可能对您解码字节数据有用。
(我不能发表评论,抱歉。)
当您编写 str(data) 时,您请求 python 将二进制数据转换为可读字符串(在可读格式中)。
因为大多数字节没有可读的表示 python 只是将它们翻译成十六进制表示(作为字符串)。
如果你想将它们作为列表打印:list(data)。
也许尝试解码它是个好主意?
和想法一样
while ser.isOpen():
for s in ser.read():
s = ser.readline().decode('utf-8') #reading data from the port with decoding from UTF-8
com = str(s).replace('\n','') #cutting out second pass to the new line
print(s)
下面是我的串口通信代码
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
import serial
MCU = serial.Serial('COM35', 115200, timeout=.1)
import time
time.sleep(1) #give the connection a second to settle
while True:
data = MCU.readline()
print(str(data))
但我进入 输出 作为
b'\x0b\x16 )6\x06\x07\x08X\x02\x16,'
(十六进制+Ascii值)
这是我的输入数据
uint8_t myBuf[]={11,22,32,41,54,6,7,8,88,2,22,44};
有人知道我在这里做错了什么吗?
您希望输出的格式是什么?正如您所建议的,您拥有的是正确的数据,但是是字节格式的。例如,您可以将其作为 python 整数列表,如下所示 (Python 3):
>>> list(data)
[11, 22, 32, 41, 54, 6, 7, 8, 88, 2, 22, 44]
struct 模块也可能对您解码字节数据有用。
(我不能发表评论,抱歉。)
当您编写 str(data) 时,您请求 python 将二进制数据转换为可读字符串(在可读格式中)。
因为大多数字节没有可读的表示 python 只是将它们翻译成十六进制表示(作为字符串)。
如果你想将它们作为列表打印:list(data)。
也许尝试解码它是个好主意?
和想法一样
while ser.isOpen():
for s in ser.read():
s = ser.readline().decode('utf-8') #reading data from the port with decoding from UTF-8
com = str(s).replace('\n','') #cutting out second pass to the new line
print(s)