解决方案 »

  1.   

    建议按这个做,注意用的是read
    http://blog.csdn.net/wuyazhe/article/details/5598945
      

  2.   

    在serial_port_DataReceived()事件里接收
    int read_len = serial_port.BytesToRead;
    serial_port.Read(buf, buf_size, read_len);
      

  3.   

    sp.Readline()读取到的是字符串,会把你收到的字节给解码成对应的ASCII码,所以是乱码。
    用读取字节的方式读取,不要用读取字符串的形式
    int len=sp.BytesToRead;
    byte[] buffer=new byte[len];
    sp.Read(buffer,0,len);//读取字节接收到的数据存起来再分析是不是AA AA开头
      

  4.   

       for (int i = 0; i < buffer.Length; i++)
             {
                  DataRecTemp = Convert.ToString(Convert.ToInt32(buffer[i].ToString()), 16);
                   if (DataRecTemp.Length != 2)
                   {
                          DataRecTemp = "0" + DataRecTemp;
                    }
                    DataRce = DataRce + DataRecTemp;
            }//这样循环分析,如果buffer里面有上万条数据,那这个循环不是要循环好久。不能读取出来的数据就是16进制的么?
     string[] strSplit = bag.SplitPage(DataRce, "aaaa");//按aaaa分割