单片机向我发送十六进制的流数据,我怎么样读取并显示出原数据啊,比如单片机发送的是E9 E9 0A 0B 0C,我就想在textBox中显示出E9 E9 0A 0B 0C。代码如下:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            if (checkBox1.Checked)//是否用十六进制显示
            {
                byte[] tempDate = new byte[serialPort1.BytesToRead];
                serialPort1.Read(tempDate, 0, serialPort1.BytesToRead);
                delegate1 receivedelegate1 = new delegate1(datareceive);
                ...
                this.Invoke(receivedelegate1);
            }
执行完Read()函数后我是否就把输入缓存区中的数据存到字节数组tempDate中了?我想要在textBox中显示数据是否要把字节数组中的数据转换成对应的十六进制字符?

解决方案 »

  1.   

    你获得的应该是字节数组,那么用Encoding去转成字符串
      

  2.   

    就是说我Read函数执行完了我字节数组中就已经读入了输入缓存区中的数据了?另外那个Encoding函数怎么用啊?
      

  3.   

    单片机向我发送十六进制的流数据,我怎么样读取并显示出原数据啊,比如单片机发送的是E9 E9 0A 0B 0C,我就想在textBox中显示出E9 E9 0A 0B 0C。代码如下:
    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
      {
      if (checkBox1.Checked)//是否用十六进制显示
      {
      byte[] tempDate = new byte[serialPort1.BytesToRead];
      serialPort1.Read(tempDate, 0, serialPort1.BytesToRead);
      delegate1 receivedelegate1 = new delegate1(datareceive);
      s = System.Text.Encoding.Default.GetString(tempDate);
      this.Invoke(receivedelegate1);
      }
    }
    public void datareceive()
            {
                //this.textBox1.AppendText(serialreadstring);
                this.textBox1.Text += s;
            }
    为什么收到的是乱码啊?