问题描述
有个C#的问题想请教,在线等!!我用C#中的serialport类做一个串口通信,遇到个问题,我查看了资料“通过调用一次serialport类中的Read()方法并不能确保所读取的数据就是完整一桢”,我现在就遇到这个问题,我用Read()方法只能得到我数据的前9个字节,后面的数据得不到,百思不得其解,望赐教!Byte[]BSendTemp={0x00,0xff,0xff,0xcc,0x01,0x01,0x02,0x40,0x00,0x44};//建立临时字节数组对象serialPort.Write(BSendTemp,0,10);//发送命令Thread.Sleep(4000);intcount=serialPort.BytesToRead;//为什么我只能读到9byte的数据,我一共有50几byte,百思不得其解byte[]BReceived=newbyte[count];serialPort.Read(BReceived,0,count);MessageBox.Show(count.ToString());
解决方案
解决方案二:
privatevoidserialPort_DataReceived(objectsender,SerialDataReceivedEventArgse){intbytes=0;StringstrMoney=String.Empty;//钱数StringstrNumber=String.Empty;//币数StringstrMoneyAndNumber=String.Empty;//钱数+币数bytes=serialPort.BytesToRead;//读取串口中的数据byte[]buffer=newbyte[bytes];//转换成数组for(inti=0;i<bytes;i++){buffer[i]=(byte)(serialPort.ReadByte());//循环遍历每个元素}if(bytes!=0)//判断数组是否为0{............}