多线程读写串口问题.....

xscansou 2010-03-26 12:45:42
m_send="AT+CMGL=4\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
char ans1[1000];
ReadComm(ans1, 1000);

.........


这是线程1中执行的。


m_send="AT\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);


char ans2[1000]; // 应答串

ReadComm(ans2, 1000);

AfxMessageBox(ans2);


这是线程2执行的。

其实偶只想得到AT返回的OK结果,现在是多了,AT+CMGL=4后取得的结果.

是否这样表述正确,就是怎么把
"m_send="AT+CMGL=4\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
""
这一句的执行后的串口数据清理干净。。
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xscansou 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 phshentu 的回复:]
串口是独占的资源,在多线程环境下操作独占的资源要进行同步

仔细想想书上多线程的介绍,你会知道怎么去做的.
[/Quote]

嗯...是这样的.
申宇田 2010-04-02
  • 打赏
  • 举报
回复
串口是独占的资源,在多线程环境下操作独占的资源要进行同步

仔细想想书上多线程的介绍,你会知道怎么去做的.
zhou1xp 2010-03-31
  • 打赏
  • 举报
回复
PurgeComm(hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
xscansou 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zh928315 的回复:]
是操作GPRS模块吧。

应该把数据放缓冲区里面
[/Quote]

怎么清除缓冲区???
juniorli 2010-03-29
  • 打赏
  • 举报
回复
char ans2[1000]=""; // 应答串置空!!!
zh928315 2010-03-26
  • 打赏
  • 举报
回复
是操作GPRS模块吧。

应该把数据放缓冲区里面
xscansou 2010-03-26
  • 打赏
  • 举报
回复
明白了。。。。呵呵,好像串口是不是只支持单一访问,同时要么写要么读取
这不是鸭头 2010-03-26
  • 打赏
  • 举报
回复
看的晕头转向还没有看明白....
zhou1xp 2010-03-26
  • 打赏
  • 举报
回复
没看懂你的需求,不知道你在说什么
skynfly 2010-03-26
  • 打赏
  • 举报
回复
不懂,帮顶下

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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