此异常是向串口写命令时捕获出来的。即serialPort.Write(buffer,0,buffer.Length).
我要实现的功能是向串口循环发送命令,再循环发送的同时,有时需要点击butten手动发送该命令,就在这时点着点着就弹出这个异常。我在我电脑上实验不会出现这种情况。不知道我表述清楚没?请知道的朋友指教。谢谢各位!
我要实现的功能是向串口循环发送命令,再循环发送的同时,有时需要点击butten手动发送该命令,就在这时点着点着就弹出这个异常。我在我电脑上实验不会出现这种情况。不知道我表述清楚没?请知道的朋友指教。谢谢各位!
1、private static ManualResetEvent atmReceiveDone = new ManualResetEvent(false);
2、posThread = new Thread(delegate() { Pos(); }); posThread.Start();
3、public void Pos()
{
……//填写必要代码
PosSocket.BeginReceive(PosMsgBuffer, 0, 2, 0, new AsyncCallback(PosReceiveCallBack), null);
//由于此函数是被线程调用,而线程在执行了BeginReveive后,EndReceive之前,线程资源就可能已释放或者退出,所以要在此处等待,直到接受完数据之后,收到返回的指示时,再返回
posReceiveDone.WaitOne();
}
4、private void PosReceiveCallBack(IAsyncResult AR)
{ int REnd = PosSocket.EndReceive(AR);
NuberData = new byte[2];
NuberData[0] = PosMsgBuffer[0];
NuberData[1] = PosMsgBuffer[1];
int s = (NuberData[0] << 8) + NuberData[1];
Byte[] getbuffer = new Byte[s - 2];
int i;
for (i = 0; i < getbuffer.Length; i++)
{
PosSocket.Receive(getbuffer, i, 1, SocketFlags.None);
}
//线程同步,指示可以返回了
posReceiveDone.Set();
……//填写必要代码
}
不是很懂,你说的是Socket吧!跟串口一样吗?