Processing mbed和处理之间的串行停止

Processing mbed和处理之间的串行停止,processing,serial-communication,mbed,Processing,Serial Communication,Mbed,我现在想要一个解决方案 作为mbed原型板之一的LPC1768通过波特率为115200的串行总线与处理进行通信。但是,随着时间的推移,串行通信停止 在这种情况下,LPC1768使用默认串行库的serial.putc()发送传感器数据。另一方面,processing使用serial.read()接收数据。处理代码如下所示: if(serial.available()>1) { serial.read(); } 为了探索这个问题的解决办法,我厌倦了这些事情 我检查了serial.avail

我现在想要一个解决方案

作为mbed原型板之一的LPC1768通过波特率为115200的串行总线与处理进行通信。但是,随着时间的推移,串行通信停止

在这种情况下,LPC1768使用默认串行库的serial.putc()发送传感器数据。另一方面,processing使用serial.read()接收数据。处理代码如下所示:

if(serial.available()>1) { serial.read(); }
为了探索这个问题的解决办法,我厌倦了这些事情

  • 我检查了serial.available()为46,并在处理过程中使用了serial.clear(),但mbed停止并没有发送数据。因为我认为这是因为处理的接收缓冲区溢出
  • 我添加了serial.writable()并检查发送的串行缓冲区是否有空间。如果没有空间,我使用了以下代码并初始化了序列号:

    LPC_UART2->FCR |= 0x06; 
    serial.baud(115200);
    
,因为我认为原因是mbed的发送缓冲区溢出。然而,他们没有工作

请注意,这些代码基本上工作正常。 然而,串行通信突然停止。我还能做什么


致以最诚挚的问候

我以前从未使用过LPC1768,所以请少说几句。检查LPC1768串行通信端是否有类似flush()的函数来清除通信缓冲区,并在处理端尝试串行。另外,尝试在处理上建立一个超时系统:自上次接收数据包以来,有一个毫秒计数器,如果该计数器超过阈值,请关闭串行端口并重新初始化它并重置计数器。嗨,George。谢谢你的快速回复。我认为第二次尝试与LPC1768上的刷新功能相同。另外,在处理时,Serial的clear()不起作用。所以,正如你所建议的,我在处理上实现了一个超时系统,这个问题显然得到了解决。谢谢你的建议。然而,我想知道内在的解决方案。我找到了关于arduino的以下线程:,但没有找到任何解决方案。您好。我同意:一个基于问题的实际原因的干净的解决方案会很好。如果你有时间,这可能值得调查,否则,从实用的角度来看,简单地确定通信中断并重新启动通信就可以了。在接收端,我会尝试记录连接断开的时间,看看是否有一种模式:它是否总是在大约相同的时间后断开?在电子方面,是否有可能随时间对电压/电流进行采样,看看一段时间后是否有可能影响RX/TX线路的电压/电流下降?我以前从未使用过LPC1768,所以请少说几句。检查LPC1768串行通信端是否有类似flush()的函数来清除通信缓冲区,并在处理端尝试串行。另外,尝试在处理上建立一个超时系统:自上次接收数据包以来,有一个毫秒计数器,如果该计数器超过阈值,请关闭串行端口并重新初始化它并重置计数器。嗨,George。谢谢你的快速回复。我认为第二次尝试与LPC1768上的刷新功能相同。另外,在处理时,Serial的clear()不起作用。所以,正如你所建议的,我在处理上实现了一个超时系统,这个问题显然得到了解决。谢谢你的建议。然而,我想知道内在的解决方案。我找到了关于arduino的以下线程:,但没有找到任何解决方案。您好。我同意:一个基于问题的实际原因的干净的解决方案会很好。如果你有时间,这可能值得调查,否则,从实用的角度来看,简单地确定通信中断并重新启动通信就可以了。在接收端,我会尝试记录连接断开的时间,看看是否有一种模式:它是否总是在大约相同的时间后断开?在电子方面,是否可以随时间对电压/电流进行采样,并查看一段时间后是否有可能影响RX/TX线路的下降?