我用单独的一个线程接收数据,跟单片机通信,
比如我发送FF 05 05 05 01 五个字节,单片机返回一定的字节,字节的多少根据命令的不同而不同,
这时我定义了几个全局的标志位,通过标志位来用while循环接收数据并处理比如说 我按下开始按钮 _iFlag=1; 我在接收线程里
判断 if(_iFlag==1)
{
while(//接收的字节不等于5)//根据协议里 现在返回5个字节数据
}问题是 我现在在外部改变了 这个标志位
并不能够马上进入 标志位里处理的命令
有什么方法 让他响应 当前按钮下的命令。。
比如我发送FF 05 05 05 01 五个字节,单片机返回一定的字节,字节的多少根据命令的不同而不同,
这时我定义了几个全局的标志位,通过标志位来用while循环接收数据并处理比如说 我按下开始按钮 _iFlag=1; 我在接收线程里
判断 if(_iFlag==1)
{
while(//接收的字节不等于5)//根据协议里 现在返回5个字节数据
}问题是 我现在在外部改变了 这个标志位
并不能够马上进入 标志位里处理的命令
有什么方法 让他响应 当前按钮下的命令。。
解决方案 »
- 求 vs2008与access连接的一个类库
- 汉诺塔问题
- 要对50多台机器上的客户端是否在线能进行即时判断,有没有较好的方法
- 初级问题 :: 把一个TextBox1的内容写到Access数据dsht的代码?
- winform下写excel的问题
- 如何动态显示图片而网页面不进行刷新操作?
- 如何清空Byte[]数组中的记录?
- ComboBox加到datagrid的问题
- 高分求助.怎样在Datagrid中排序后得到选中行(多行)的行号??
- 如何在cs里出字符串包括<%# DataBinder.Eval(Container, "DataItem.guid")%>绑定数据
- C# 自定义类问题
- c# 安装包文件(包含了Framework)太大的,
如果在外则_bReadOut=true; 并用串口超时机制 ,如果catch到 则_bReadOut=true;
发送命令的时候 首先判断_bReadOut;如果为真,则发送,如果非真,则不发送,并提示用户现在数据正在处理中,则稍后再发。
怎么样 让命令接着响应呢
{
mre.WaitOne();
//接收的字节不等于5
mre.ReSet();
} //根据协议里 现在返回5个字节数据
在按钮里面: mre.Set();
就行
他就执行WHILE后面的程序……然后又等待你再次按下BUTTON 如此反复
但是 现在可能正处在某个while的接受状态里
现在要解决的问题就是立刻跳出当前的while接收字节的循环
是这样的 比如我发送FF 05 05 55 01 返回 固定的五个字节
我接收到返回的字节后 ,定时发送 FF 06 05 00 01 五个字节 然后读取单片机返回的数据,这时单片机返回62个字节,如果现在我想停止 我在按钮里置了标志位 ==3
这时候 并不能马上执行这个指令,因为 现在很可能while的接受数据正处在上一个循环里