关于SerialPort串口发送指令的时候会收到三次,要怎么丢去第一包数据,只留下第二三包数据
SerialPort sp=new SerialPor();
//发送数据
try
{
sp.Write(tx, 0, txlen);
}
catch
{
ret = false;
}
//接收数据
if (ret)
{
Thread.Sleep(500);
//读取数据
try
{
//int n = sp.BytesToRead;
rx_act = sp.Read(rx, 0, RX_BUF_LENGTH);
//buffer.AddRange(rx);
//while (buffer.Count <= 6) {
////buffer
//}
sp_status = true;
}
catch (Exception ex)
{
sp_status = false;
ret = false;
}
//sp_status = true;
}
我也是一个刚要学C#的萌新,你看看这个函数前面的引用。把引用中的其中两个删掉就可以了
你判断一下,不需要的数据别处理不就得了
对方设备的协议就这么规定的,要先给你重复你发的内容,再给你发数据,这没办法
对方设备的程序你改不了,它给你发了你就只能收,收了别管不就得了
你说的3次其实数据并不一样,需要整体处理。
另外,串口数据本质上并不是以帧为单位的,串口调试软件只是为了显示方便,才按长度或间隔时间显示为一段一段的,实际使用里虽然也有以时间作为帧划分依据的,但这个和调试助手的划分标准未必一致。