问题描述
在串口通信中,给设备发送命令不管我Send几次,DataReceive为什么要分两次来接收数据,而且每次接收数据的长度不一样,为什么?求大神指点,谢谢了privatevoidserialPort_DataReceived(objectsender,SerialDataReceivedEventArgse){try{byte[]buffer=newbyte[serialPort.BytesToRead];serialPort.Read(buffer,0,buffer.Length);stringresult=System.Text.Encoding.ASCII.GetString(buffer);MessageBox.Show(result);//测试}catch(Exceptionex){MessageBox.Show(ex.Message);}}privatevoidtoolStripButtonGet_Click(objectsender,EventArgse){Send(s1);Send(r1);//Send(s2);//Send(r2);//Send(s3);//Send(r3);}publicvoidSend(stringdata){intn=0;MatchCollectionmc=Regex.Matches(data,@"(?i)[da-f]{2}");List<byte>buf=newList<byte>();//填充到这个临时列表中foreach(Matchminmc){buf.Add(byte.Parse(m.Value,System.Globalization.NumberStyles.HexNumber));}serialPort.Write(buf.ToArray(),0,buf.Count);n=buf.Count;}
解决方案
解决方案二:
有个属性是设置接收到多少字节才引发回调事件的,设置一下就好了