2015-06-25 47 views
0

我通过串口将PIC与Raspberry PI连接起来。我的max485发送和接收使能引脚由gpio引脚控制。我收到的数据已成功打印。但它没有执行所需的功能。无法识别串行接收数据

while True: 
    GPIO.output(repin, False) 
    port.flushInput() 
    time.sleep(.oo5) 
    port.write(bytes(address)) 
    time.sleep(.01) 
    GPIO.output(repin, Ture) 
    port.flushInput() 
    data=port.readline() 
    if data: 
     address=address+1 
     if data == "ok" : 
     print "reached" 
     print data 
    if not data: 
     print "no data" 

当我收到确定。它打印“确定”,但没有打印“达到”。当数据未收到时,它将打印一个空白值而不是“无数据”。

+0

也许有可能您收到的字符串包含终止CR,LF或NULL。试着专门比较前两个字符。 –

+0

您的代码以“Ture”开头。我想它应该是“而真”? –

+0

当data = port.read(2)被使用时,它工作正常。但我需要使用readline()。我的数据可能是2或3字节长。@罗杰罗兰德 – user007

回答

1

使用调试器在PIC和监控PIC UART写寄存器没有什么错在你的代码。如果您正确写入PIC程序,则问题来自max485.connect双绞线电缆接地的正确终端电阻,并具有适当的电阻。

+0

更换电阻器后我会通知你@Akash Nil – user007

+0

通过将A&B接地并将4.7k串口连接到它们,问题得以解决。谢谢。 – user007

1

检查您的UART_Write方法在PIC微控制器端。您是否会发送\r\n以及ok?你可以澄清,在监视窗口,这是TXREG