C# 串口接收超时

用C#写了个串口通信程序,调试的时候无法接受,显示“操作已超时”。
接收部分程序如下:
try
{
//clear the text box
textBox.Text = "";
//read serial port and displayed the data in text box
textBox.Text = sp.ReadLine();
}
catch(System.Exception ex)
{
baudRatelLabel.Text = ex.Message;
}
各位大侠,请问是怎么回事?小妹在此谢过了。。。。
串口是MSCommLib.dll

串口类是什么类?

库是:MSCommLib.dll?吗

sp是什么类型的?是你自己做的类?你在ReadLine内部是如果调用MsComm的

根据自己的应用了.
@MSComm.CommPort = PrinterComm[terminalNumber];
@MSComm.Settings = "19200,N,8,1";//设置通信口参数
@MSComm.InBufferSize = short.MaxValue / 2;//设置MSComm2接收缓冲区为32字节
@MSComm.OutBufferSize = 800;//设置MSComm2发送缓冲区为2字节
@MSComm.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;//设置接收数据模式为二进制形式
@MSComm.EOFEnable = true;
@MSComm.SThreshold = 0;//设置Output 一次从发送缓冲读取字节数为1
@MSComm.InBufferCount = 0;//清除接收缓冲区
@MSComm.OutBufferCount = 0;//清除发送缓冲区
@MSComm.RThreshold = 1;//设置接收1个字节产生OnComm事件
@MSComm.DTREnable = true;//??
@MSComm.Handshaking = MSCommLib.HandshakeConstants.comNone;
//@MSComm.InBufferSize = 1024;
@MSComm.InputLen = 0;//决定每次Input读入的字符个数,缺省为0,表示读取接收缓冲区的全部内容
@MSComm.NullDiscard = false;

@MSComm.PortOpen = true;//打开串口14

上面设置后,添加一个事件。当有数据来的时候触发。
MSPrinter.OnComm +=new DMSCommEvents_OnCommEventHandler(_OnComm0);
private void _OnComm0()
{
ReceiveBytes = (byte[])MSPrinter.Input;//这样读收到的数据。
...
}

小妹给个分吧。大哥没有分提问了。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-21
调整连接字串,用关键字作为选择的条件,如果是连接的SQL数据库,可以调整下数据库的最长响应时间,和最大响应数目
第2个回答  2009-11-20
该操作未在超时时间到期之前完成。- 或 -未读取任何字节。
在执行这个方法前你应该看看缓冲区中有没有数据。
相似回答