当前位置:编程学习 > C#/ASP.NET >>

由于线程退出或应用程序请求,I/O 操作已中止,使用serialport编程报错

如题,有哪几种可能的原因会导致“由于线程退出或应用程序请求,I/O 操作已中止”的错误呢?
我写的内个软件运行几个小时后就会有这样的错误,该怎么解决?以下是我部分代码
	
//以下为串口设置
                  serialPort.Encoding = Encoding.Default;
serialPort.ReadBufferSize = 16;
serialPort.DataBits = 8;
serialPort.ReceivedBytesThreshold = 16;
            //serialPort.ReadTimeout = 2000;
//通讯协议  默认无
serialPort.Handshake = Handshake.None;
//////////////////////////////////////////////////////////////////////////////
//以下为响应的事件

private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{

int count = 16;
dtStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//int buffersize = 30;   //十六进制数的大小(假设为8Byte)
Thread.Sleep(1000);      //暂停1000毫秒等一条完整的命令进入缓冲区
buffer = new Byte[count];
            if (buffer != null)
            {
                serialPort.Read(buffer, 0, 16);//这里报的错
.....略
serialport io 线程 --------------------编程问答-------------------- 没有人知道吗? --------------------编程问答-------------------- I/O 操作已中止 usb端口或转换口有问题,改成同步接收看还有没有这个问题,如果还有确认硬件有问题罗  --------------------编程问答-------------------- 我也遇到了这样的问题,楼主有没有解决哦,我用了超级终端之后,然后关闭那个,再运行我的程序的时候如果连接不上设备就不断发送命令就会有这个问题,导致程序当掉。 --------------------编程问答-------------------- 我也遇到这个问题了。。。我的是在接受大量数据时候去发送数据出现这个错误。。。上我的代码给大家看下。
 Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Try
            Threading.Thread.Sleep(50)
            Dim inDataLen As Integer = SerialPort1.BytesToRead()
            If inDataLen > 0 Then
                recbuf = SerialPort1.ReadExisting
            Else
                'MsgBox("接收数据帧错误!")
            End If
            SerialPort1.DiscardInBuffer()
            SerialPort1.DiscardOutBuffer()
            RaiseEvent 接收串口数据(recbuf)
        Catch ex As Exception
            MsgBox("接收串口字节错误:" & ex.Message.ToString)
        End Try
    End Sub
在formload中
 AddHandler 接收串口数据, AddressOf 接收串口数据_1


Private Sub 接收串口数据_1(ByVal str As String)
        Me.Invoke(New DEl_处理数据(AddressOf proString), New Object() {str})
    End Sub

我的是在客户机子上调试出现这个问题了。。但是我不知道出错在哪一行。。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,