当前位置: 代码迷 >> 单片机 >> 关于pc和单片机的串口通信解决方案
  详细解决方案

关于pc和单片机的串口通信解决方案

热度:32   发布时间:2016-04-28 16:12:56.0
关于pc和单片机的串口通信
本人做了一个温控节点,把温度数据通过串口实时的传给pc,我也可以在pc上发命令给单片机,现在问题是:如果我不发命令给单片机,则系统正常,pc可以正常接收单片机发来的温度数据,但当我发命令给单片机时,系统就卡死了。我怀疑是当我通过pc发命令时,pc正好在接收数据(因为温度数据是实时发送的,不停的),所以发生冲突,导致系统卡死,不知道我的怀疑对还是错??不知道有没有什么解决方法,既可以把温度数据实时的传给pc,pc也可以随时发命令给单片机,求高人解答!!

------解决方案--------------------
你的单片机的串口在处理与PC的通讯,是采用的中断 还是轮询 方式啊?


感觉很可能是单片机采用了中断,但单片机的UART接受中断函数处理不当,
从而当PC端发送数据时,单片机进入接受中断 就死掉?


你看看你对单片机串口的 初始化是否正确? 如果采用中断,好好看看中断初始化,以及中断处理函数。

------解决方案--------------------
估計是你程序的問題,接收數據過快導致程序卡死是很容易的,像溫度這樣的變化不是很快的數據,1秒采集一次就已經是很快的了

這種串口通信的問題可以參考Modbus協議來做
看懂后你可以自己定一個一問一答的協議也可以
------解决方案--------------------
使用串口调试器先调试一下通信,看看返回
------解决方案--------------------
232 通讯, 加个max232 进行ttl 与电脑的串口电平转化,有mscomm 控件可以调用。 卡死是软件问题。
------解决方案--------------------
卡死一般不太会是PC端的问题。
查查你单片机的程序,要是中断接收的话,很有可能就在中断里卡死了。
我怀疑是在等待标志位那里,或者是数据处理那里挂掉了。
你看一下吧。
  相关解决方案