2016-03-01 14 views
0

我有一个小的python示例,我从另一个网站上下来了。我正试图了解如何使用它从串行读取。Python串行读取返回奇怪的值

我送从FRDM K64f板信息通过串行和Python程序读取此,但返回一个奇怪的值,下面是其中的一个示例:

YVkJZC

我的Python代码:

import time 
import serial 

# configure the serial connections (the parameters differs on the  device you are connecting to) 
ser = serial.Serial(
port='/dev/ttyACM0', 
baudrate=9600, 
parity=serial.PARITY_ODD, 
stopbits=serial.STOPBITS_TWO, 
bytesize=serial.SEVENBITS 
) 

ser.isOpen() 

print 'Enter your commands below.\r\nInsert "exit" to leave the  application.' 

input=1 
while 1 : 
    # get keyboard input 
    input = raw_input(">> ") 
     # Python 3 users 
     # input = input(">> ") 
    if input == 'exit': 
     ser.close() 
     exit() 
    else: 
     # send the character to the device 
     # (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device) 
     ser.write(input + '\r\n') 
     out = '' 
    # let's wait one second before reading output (let's give device time to answer) 
     time.sleep(1) 
     while ser.inWaiting() > 0: 
      out += ser.read(1) 

     if out != '': 
      print ">>" + out 

这是我的板代码:

int main(){ 
    Serial pc(USBTX, USBRX); 
    pc.baud(9600); 
     while(1){ 
      char c = pc.getc(); 
     if((c == 'w')) { 
      pc.printf("Hello"); 
     } 
    } 
} 

我得到的确切回报是这样的:

Enter your commands below. 
Insert "exit" to leave the application. 
>> w 
>>YVkJ�ZC 
>> 
+0

你希望从'ser'获得什么样的数据? – acdr

+0

如果没有真正想过它,我还没有在Python中使用过串行。 BUut我希望我可以从板 – UniqueName

+0

返回字符串的值,因为也许你得到的那些“无意义”字符串实际上是你得到的,如果你解释你得到的数据作为unicode(或任何编码)字符串。 – acdr

回答

0

管理解决这个问题。

我的序列声明似乎没有正常工作。

回到pyserial文档并声明我的序列如下,并使用readline()解决了这个问题。

ser = serial.Serial('/dev/ttyACM0')