C# serialport类编写串口通信程序,无法接收全部数据!通信指令发出之后,收到9个字节,而正确返回的字节数应该有59个字节。一开始我怀疑是下位机的问题,可是我用串口精灵调试的时候可以收到59个字节,所以我肯定是我程序的问题!求大神指教!!!图片是我向串口精灵的作者的提问,请大家帮我想想办法。 下面是serialport初始化:
cbbCOMPorts.Enabled = false;
serialPort.PortName = cbbCOMPorts.Text;
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Encoding = Encoding.Unicode;
serialPort.Encoding = System.Text.Encoding.Unicode;
serialPort.Open();
这个是发出指令
private void btn_xunjian_Click(object sender, EventArgs e)//巡检
{
try
{
btn_xunjian.Enabled = false;
Byte[] BSendTemp = { 0x00, 0x00, 0xff, 0xff, 0xcc, 0x01, 0x01, 0x02, 0x40, 0x00, 0x44 }; //通信指令
serialPort.Write(BSendTemp, 0, 11);//发送命令数据
Thread.Sleep(1000);
btn_xunjian.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
下面是接受字节的程序
int bytesToRead =serialPort.BytesToRead;
byte[] BRecieve = new byte[bytesToRead];
int bytesRead = 0;
bytesRead = serialPort.Read(BRecieve, 0, bytesToRead);
//读取
string str = ByteArrayToHexString(BRecieve);
txtDataReceived.AppendText(str+Environment.NewLine);
txtDataReceived.ScrollToCaret();
请高手帮我看看