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

lifu119 2012-08-31 09:43:13
就是第一次连接好单片机与主机后,必须经过串口调试工具打开一次串口,再关闭后。软件写串口,读串口才正常。以后也正常。
单步调试了一下,发现软件中打开串口是正常的,但就是写串口后,读数据总是为空。

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

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

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

不知道为什么
...全文
399 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aydf1 2012-08-31
  • 打赏
  • 举报
回复
你的软件没有对串口正确初始化
geleg 2012-08-31
  • 打赏
  • 举报
回复
初始化发送一下波特率,停止位,数据位,奇偶位之类的。
C_Rabbit 2012-08-31
  • 打赏
  • 举报
回复
单步调试了一下,发现软件中打开串口是正常的,但就是写串口后,读数据总是为空。

使用示波器,分别观察异常情况下和正常情况下的波形,对比一下电平值、波形周期长度,肯定有些不一样的地方,然后根据不同的地方出现在哪里,进一步分析。
lifu119 2012-08-31
  • 打赏
  • 举报
回复
那为什么以后初始化都会成功呢?还是相同的代码啊[Quote=引用 1 楼 的回复:]

你的软件没有对串口正确初始化
所以需要用别的软件初始化一下
检查初始化代码吧,比如设置波特率什么的
[/Quote]
ckc 2012-08-31
  • 打赏
  • 举报
回复
你的软件没有对串口正确初始化
所以需要用别的软件初始化一下
检查初始化代码吧,比如设置波特率什么的
lifu119 2012-08-31
  • 打赏
  • 举报
回复
完成,是停止位设置错误了
  • 打赏
  • 举报
回复
1楼正解。

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

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

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

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

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧