当前位置: 代码迷 >> 单片机 >> 有个串口方面的有关问题。必须经过串口调试工具打开一次串口后。
  详细解决方案

有个串口方面的有关问题。必须经过串口调试工具打开一次串口后。

热度:11   发布时间:2016-04-28 15:48:39.0
有个串口方面的问题。必须经过串口调试工具打开一次串口后。。
就是第一次连接好单片机与主机后,必须经过串口调试工具打开一次串口,再关闭后。软件写串口,读串口才正常。以后也正常。
单步调试了一下,发现软件中打开串口是正常的,但就是写串口后,读数据总是为空。

但为什么用串口调试工具打开一次,正常打开后,再关闭。以后软件中的读写串口都正常了?
代码如下:

m_pGpsComm->FlushComm();
m_pGpsComm->WriteComm(sendBuf, sendLen);
Sleep(500);
recvLen = m_pGpsComm->ReadComm(recvBuf, 128);

用虚拟串口模拟的时候,每次都是正确的,不知道是不是和硬件有关系?

不知道为什么

------解决方案--------------------
你的软件没有对串口正确初始化
所以需要用别的软件初始化一下
检查初始化代码吧,比如设置波特率什么的
------解决方案--------------------
单步调试了一下,发现软件中打开串口是正常的,但就是写串口后,读数据总是为空。

使用示波器,分别观察异常情况下和正常情况下的波形,对比一下电平值、波形周期长度,肯定有些不一样的地方,然后根据不同的地方出现在哪里,进一步分析。

------解决方案--------------------
初始化发送一下波特率,停止位,数据位,奇偶位之类的。
------解决方案--------------------
你的软件没有对串口正确初始化

------解决方案--------------------
1楼正解。

1楼说的初始化,是指的上电后的第一次初始化, 你代码中这部分应该没做,或者有问题,

不知道你说的 什么以后每次初始化都正确 是什么意思, 第一次初始化后,后面反复通信即可。

你以为后面每次通信都初始化? 

你加串口工具明显是,硬件检测到后,自己做了初始化工作嘛。。。
  相关解决方案