串口接收数据时,会关闭串口,不知道什么原因,代码如下
public: void SynReceiveData()
{
//想获取缓存区的数据到来信号。问题1:串口的触发事件有哪些?如何定义?
SerialDataReceivedEventArgs^ type;
do
{
System::Threading::Thread::Sleep(0);
//堵塞到数据到来或超时
if(SerialData::Chars)//接受缓存是否有信号到来。
{
try
{
Byte firstByte=Convert::ToByte(serialPort1->ReadByte());//问题就在这里。当执行到这条语句,就会出现异常,串口关闭,请问是为什么??
int bytesRead=serialPort1->BytesToRead;
bytesData=new Byte[bytesRead];
bytesData[0]=firstByte;
for(int i=0;i<=bytesRead;i++)
bytesData[i]=Convert::ToByte(serialPort1->ReadByte());
listdata=Convert::ToString(bytesData);
listBox->Text=listdata;
}
catch(System::Exception^ e)
{
MessageBox::Show(Convert::ToString(e));
}
}
}while(1);
}
void ReceiveData(SerialPort^ serialport)
{
Form1^ start=gcnew Form1;
Thread^ threadreceive=gcnew Thread(gcnew ThreadStart(start,&Form1::SynReceiveData));
threadreceive->Start();
}