C#SerialPort控件的   事件,按下面方式,数字红不能正常接收数据包,不知道阵头为&真伪为#的定长32个字节的数据包,不断的从下位机传送过来,不知道应该怎么接收数据包?急求  今天尝试了一天都没有解决  谢谢  好人一身平安
     private void ck_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
                DateTime now = DateTime.Now;
                Int32 i = 1;
                bool yesno = true;
                if (serialPort1.BytesToRead >0)
                {
                    int n = serialPort1.BytesToRead;
                    byte[] data = new byte[n];
                    serialPort1.Read(data, 0, n);

解决方案 »

  1.   

    你接收到的数据少了什么?或者说有什么错,serialPort1.BytesToRead不一定等于帧长度,
      

  2.   

     ck_DataReceived这个事件好像接收到数据就触发,而我读 int n = serialPort1.BytesToRead;
                        byte[] data = new byte[n];
                        serialPort1.Read(data, 0, n); 
    此时n一直为1,不知道怎么回事?不知道应该怎么解决
      

  3.   

    波特率都设置的一样的 我用串口调试助手都能正常接收,而我自己编写的数据包接收程序不行,不知道哪问题。最好能有例子,用ck_DataReceived事件接收数据包 ,比如以&字符开始,以#结束,如 &hello serialport#.
    c#中serialport在接收数据的时候,当读到&字符后,把hello serialport字符串存储在一个byte型数组中,当读到#字符时,数组。
    如果读到&字符而一直没有读到#字符,当下一次读到&字符,则视为丢包,清空队列,准备接收下一次数据.
    我的联系方式 [email protected]