110,535
社区成员
发帖
与我相关
我的任务
分享
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
Timer MyTimer = new Timer(_Timeout);
MyTimer.Elapsed += new ElapsedEventHandler(MyTimer_Elapsed);
MyTimer.Enabled = true;
MyTimer.Start();
//while ((IsTimeout == false) && (DataIsReceived == false)) ;
MyTimer.Stop();
MyTimer.Elapsed -= new ElapsedEventHandler(MyTimer_Elapsed);
MyTimer.Dispose();
sp.Close();
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//throw new Exception("The method or operation is not implemented.");
SerialPort sp = (SerialPort)sender;
int BytesToRead = sp.BytesToRead;
byte[] data = new byte[BytesToRead];
sp.Read(data, 0, BytesToRead);
for (int i = 0; i < data.Length; i++)
{
if (DataRecCount == 0)
{
if (DataHead == data[i])
{
DataBuff += data[i].ToString("X2");
DataRecCount++;
}
}
else
{
DataBuff += data[i].ToString("X2");
if (DataRecCount == 1)
{
if (data[i] == 0x03)
{
BytesToRec = 4;
}
}
DataRecCount++;
if ((BytesToRec > 0) && (DataRecCount == BytesToRec))
{
DataIsReceived = true;
break;
}
}
}
}