串口通信的问题,因为要发出一连串的指令,每条指令都需要串口给出应答才能执行下一条语句。现在我做了两个线程,发送指令是一个线程,每条语句执行后把线程Suspend,然后启动接收线程接受串口数据,串口数据接收后,再把发送线程resume,同时接收线程suspend;发送线程继续执行发送指令,如此循环...但是一直得不到正确结果,第一条指令发送和接收都正常,第二条就不成了,请不吝赐教!!!
解决方案 »
- c# 中字幕滚动
- 谁能给我一个多线程+Access+处理窗口中进度描述的范例?!!!
- 关于接口实现的问题?
- Datatable如何快速导入到excel
- 请教在用C#做B/S结构的办公自动化系统时,如何使没有登陆的人通过输入网址无法直接看到内容,而页面自己连接到登陆页面!
- 调用web服务报错
- 什麼方法能把數據庫中的數據專入PDF比較好
- 关于ReferenceEquals的一个疑问
- 如何用C#开发B/S程序?
- ▓▓▓▓各位大侠请教,关于用BestCrypt v.7加密,但忘记密码,如何办??急急急急急急急急急▓▓▓▓▓
- 怎么发布cs 应用程序
- 请问谁有Codesmith 可以生成的 petshop结构 模板?
private void shuiliang_Load(object sender, System.EventArgs e)
{
send=new Thread(new ThreadStart(communication));
getInput=new Thread(new ThreadStart(receive));
}
private void receive()
{
inData=(string) com.Input;
txtComm.Text=inData;
if(send.ThreadState.ToString()=="Suspended") send.Resume();
}
private void communication()
{
String sendData;
if(comboBox2.Text.Substring(12,2)=="SJ")
{
sendData="AT+CREG?\r";
com.Output=sendData;
send.Suspend();
String one=inData.Substring(11,10); if(one!="+CREG: 0,1") {txtComm.Text+="modem天线不正常!!!";send.Abort();}
else
{
txtComm.Text+="modem天线正常!!!";
sendData="ATD13752514105;\r";
com.Output=sendData;
send.Suspend();
// String atdRes=inData.Substring(inData.Length-1,1);
}
}
} private void com_OnComm(object sender, System.EventArgs e)
{
if(com.CommEvent==2)
{
getInput.Start();
}
}
如果你在线程里面一直while的话,很难收到数据。
当你第一次接受完后线程就结束了
应该用while(true)
{
不断接受,如果有内容就显示
}
试试