Python 使用PySerial读取空字节
我将adc值从PIC(微控制器)通过com端口发送到PC。我使用PySerial读取数据。但当我试图读取空字节时,出现了一个问题,它不起作用Python 使用PySerial读取空字节,python,pyserial,Python,Pyserial,我将adc值从PIC(微控制器)通过com端口发送到PC。我使用PySerial读取数据。但当我试图读取空字节时,出现了一个问题,它不起作用 if self.serial_com.inWaiting(): val = self.serial_com.read() else: print "no data" 当我发送空字节(0x00)时,他总是显示“无数据”,所以我无法读取空字节,为什么?我猜空字节不是数据 我在Windows上使用Python 2.7.9和PySerial 2.
if self.serial_com.inWaiting():
val = self.serial_com.read()
else:
print "no data"
当我发送空字节(0x00)时,他总是显示“无数据”,所以我无法读取空字节,为什么?我猜空字节不是数据
我在Windows上使用Python 2.7.9和PySerial 2.7
端口设置为二进制传输。没有空字节剥离,
CR-LF翻译等(POSIX多次启用)
使本模块普遍有用
我会检查另一端的传输程序。您正在使用字符串发送例程吗?(在这种情况下,例程在
null
之前停止。您必须使用对特殊值透明的逐字符发送例程。例如write
,如果您使用C)感谢jcoppens的回答,
要从微控制器发送值(C):首先,我将adc值拆分为2个字节(因为它是16位值),例如:
short int Value = 512;
char value_tab[2];
char* ConvertValue = value_tab;
*ConvertValue++ = Value & 0x00ff; // lower byte
*ConvertValue++ = ((Value & 0xff00) >> 8); // upper byte
我发送带有Microchip(putUSBUSART(char*数据,字节长度)和CDCTxService()提供的函数的value_选项卡。您可以在此处看到这些函数:
我试图用rs232终端发送一个空字节,它显示了一些东西,所以我不知道为什么pyserial不能读取它。在pyserial的函数read()中,它返回一个bytes(data)和bytes=str。因此,如果我不能读取空字节,这可能是正常的,因为read()返回一个“str”,而不是一个真正的byte。最后,它工作了,这是一个错误,在我的C代码与图片对不起。谢谢:)