110,535
社区成员
发帖
与我相关
我的任务
分享
private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
//取得第一个字节
if (sp.IsOpen)
{
byte firstbyte = Convert.ToByte(sp.ReadByte());
//判断第一个字节是否是起始位:16进制的0x02
if (firstbyte == 0x02)
{
//定义接收数据长度
int bytesRead = sp.ReadBufferSize;
//数据接收字节数组
byte[] bytesData = new byte[bytesRead];
//接收字节
byte byteData;
for (int i = 0; i <= bytesRead - 1; i++)
{
try
{
if (sp.IsOpen)
{
byteData = Convert.ToByte(sp.ReadByte());
//判断数据结束字节
if (byteData == 0x03)
{
break;
}
bytesData[i] = byteData;
}
}
catch (Exception ex)
{
MessageBox.Show("for " + ex.Message + ex.GetType().FullName);
}
}
//将字节数组转换成字符串
strReceive = System.Text.Encoding.Default.GetString(bytesData);
Invoke(interfaceUpdateHandle, strczData);
// BeginInvoke(interfaceUpdateHandle, strReceive);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + ex.GetType().FullName);
}
}