使用PySerial读取空字节

时间:2015-07-16 14:33:27

标签: python pyserial

我从一个COM端口将PIC(微控制器)的adc值发送到我的PC。我使用PySerial来读取数据。但是当我尝试读取空字节时,我遇到了问题,它不起作用。

if self.serial_com.inWaiting():
    val = self.serial_com.read()
else:
    print "no data"

当我发送空字节(0x00)时,他总是显示“无数据”,所以我无法读取空字节,为什么?我想空字节不是数据吗?

我在Windows上使用Python 2.7.9和PySerial 2.7

2 个答案:

答案 0 :(得分:0)

来自PySerial documentation

  

端口设置为二进制传输。没有NULL字节剥离,   CR-LF翻译等(对POSIX有很多次启用。)这个   使这个模块普遍有用。

我会检查另一端的传输例程。你在使用字符串发送例程吗? (在这种情况下,例程在null之前停止。你必须使用逐字符发送例程,这对于特殊值是透明的。例如write如果你在C中工作)

答案 1 :(得分:0)

谢谢jcoppens给你答案, 要从微控制器发送值(在C中):首先我将adc值拆分为2个字节(因为它是16位值),例如:

   <repository>
    <id>pentaho-releases</id>
    <url>http://repository.pentaho.org/artifactory/repo/</url>
   </repository>

我发送带有Microchip提供的函数的value_tab(putUSBUSART(char * data,BYTE length)和CDCTxService())。您可以在此处查看这些功能:description code

我试图用rs232终端发送一个空字节并显示一些内容,所以我不知道为什么pyserial无法读取它。