大家好,我问个串口操作的:串口阻塞了怎么办! 我现在在搞AT指令操作短信猫的。有时候我使用SerialPort.Read或者ReadExisting读数据出错了,然后接下来的读取都会被阻塞了,意思是说线程就挂在那里了,界面假死并不是什么大问题,主要是他出一次错之后就没办法正常工作了,然后要人工的打开超级终端,输入一个at,然后才可以。这怎么办啊??!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SerialPort.Read的时候try一下做异常捕获再处理啊。 是这个代码: public string GetSMS() { System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort("COM1", 9600); sp.Open(); sp.DiscardInBuffer(); sp.Write("at+cmgl=\"ALL\"\r"); sp.DiscardInBuffer(); int tick = Environment.TickCount; int timeout = 60000; bool at_finish = false; StringBuilder sb = new StringBuilder(); while (Environment.TickCount - tick < timeout && !at_finish) { sb.Append(sp.ReadExisting()); } sp.Close(); string result = sb.ToString(); return result; }http://topic.csdn.net/u/20101126/15/f292f2ee-b5da-41e9-8c75-7da52cb50edb.html sp.Write("at+cmgl=\"ALL\"\r");sp.DiscardInBuffer();//这一句删掉试试。 你做一个异步读取,serial.DateRecived试试 sp.ReadExisting(),我觉得在ReadExisting之前应该判断下,缓冲区有没有数据 上一次的永远无法完成。我也不知道为什么。当然,别的指令是可以完成的,但是at+cmgl=\"ALL\"就是不完成 给软件安装包数字签名 关于url重写的问题 datagrid更改绑定数据项 搞不懂连接数据库为什么出错,大家进来帮我看看啊。。。。。。 如果做一个服务端和客户端联系的应用程序..分不多,请原谅 为什么要在Bind数据时要先判断sPostBack的值 怎样在一个事件中触发另一个事件? C#的串口发送指令怎么无法成功呢?????? 如何在TreeView 控件上自定义滚动条 用按狃取代滚动条. wince 怎么显示gif图 设计模式的问题 我在本机上用C#写完了的一个winform项目,现在想让其他电脑访问我的这个项目,应该怎么搭建C/S结构?
是这个代码:
public string GetSMS()
{
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort("COM1", 9600);
sp.Open();
sp.DiscardInBuffer();
sp.Write("at+cmgl=\"ALL\"\r");
sp.DiscardInBuffer();
int tick = Environment.TickCount;
int timeout = 60000;
bool at_finish = false;
StringBuilder sb = new StringBuilder();
while (Environment.TickCount - tick < timeout && !at_finish)
{
sb.Append(sp.ReadExisting());
}
sp.Close();
string result = sb.ToString();
return result;
}http://topic.csdn.net/u/20101126/15/f292f2ee-b5da-41e9-8c75-7da52cb50edb.html
sp.DiscardInBuffer();//这一句删掉试试。