3592|4

54

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

DataReceived事件如何正确的得到想要的回复信息 [复制链接]

想做的事情是:每发一次“AT”指令到串口,等到串口返回的信息“OK”或是“ERROR”后,再执行下一条的AT指令
我想有两种方式:
1、用的是SerialPort里的DataReceived事件,但现在发一个命令,事件有时会被触发几次,可能在最后一次读取的字符串才是包含“OK”或是“ERROR”的字符串。DataReceived是用的辅助线程,那么在event被触发的同时,主程序会不会已经运行到发送下一条命令了,主程序里都还没有收到上条命令的回复。
   


2、在命令后面加Thread.Sleep(100),
就像这样:

sendCommand("AT\r");
Thread.Sleep(100);
sendCommand("AT+CMGF=0\r");
Thread.Sleep(100);
...
最后,事件触发时,读出sp.ReadExisting();的缓冲区里的字节,看到好象有些命令根本没有被执行。
希望大家给点建议,怎么解决这个问题?

最新回复

我也关注!!!!  详情 回复 发表于 2008-7-30 20:33
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
Sleep.....怎么用这个呢?这个终端了你当前进程去做其他事情了。。。。。你在ontimer时间里做一个发送AT命令,然后使用的时候Settimer(NAME,1000);不用的时候Killtime(Name);
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个事件调用的是辅助线程,我想让主线程延迟一下,等辅助线程先得到返回数据
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
...我最怕用SLEEP。。很容易把目标硬件给干掉。。。我以前做I2C控制的一个外设也想用SLEEP延时,,结果硬件整个被关掉了。。。。最后自己写个循环来延时。。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
我也关注!!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表