110,566
社区成员
发帖
与我相关
我的任务
分享
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort serialPort1 = sender as SerialPort;
shuju = new byte[serialPort1.ReadBufferSize];
serialPort1.Read(shuju, 0, shuju.Length);
serialPort1.DiscardInBuffer();
Thread thread = new Thread(shujuchuli);
thread.Start();
}
private void shujuchuli()
{
if (shuju[0] == 0x5A && shuju[8] == 0xAA)
{
if (shuju[4] == 0x10 && shuju[5] == 0x01)
{
label8.BeginInvoke(new MethodInvoker(delegate
{
label8.Text = ((double)(shuju[6] * 256 + shuju[7]) / 10).ToString("f1");
}
));
}}
这就是 我要用数组元素的原因
if (headPosition > -1)
{
resultList.Add(receiveData.ToArray());
receiveData = receiveBytes.Skip(tailPosition + 1).ToList();
}
const byte HEAD = 0x5A;
const byte TAIL = 0xAA;
List<byte[]> resultList = new List<byte[]>();
List<byte> receiveData = new List<byte>();
SerialPort serialPort = new SerialPort();
public Form1()
{
InitializeComponent();
serialPort.PortName = "COM1";
serialPort.Open();
serialPort.DataReceived += (sender, e) =>
{
int count = serialPort.BytesToRead;
byte[] receiveBytes = new byte[count];
serialPort.Read(receiveBytes, 0, count);
int tailPosition = receiveBytes.ToList().IndexOf(TAIL);
if (tailPosition > -1)
{
receiveData.AddRange(receiveBytes.Take(tailPosition + 1));
int headPosition = receiveBytes.ToList().IndexOf(HEAD);
if (headPosition > -1)
{
resultList.Add(receiveData.ToArray());
receiveData.Clear();
}
else
{
MessageBox.Show("数据格式错误");
receiveData.Clear();
return;
}
}
else
{
receiveData.AddRange(receiveBytes);
}
};