c#串口缓存字节数_C#serialport串口读写数据的问题。

收录日期:2020/12/18 21:38:47 时间:2016/08/15 18:21:08 标签:C#

单片机向我发送十六进制的流数据,我怎么样读取并显示出原数据啊,比如单片机发送的是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中显示数据是否要把字节数组中的数据转换成对应的十六进制字符?

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

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

单片机向我发送十六进制的流数据,我怎么样读取并显示出原数据啊,比如单片机发送的是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;

}

为什么收到的是乱码啊?

先用串口调试工具测试下,看看是代码问题还是单片机问题

单片机没事,我用它给串口助手发就没问题

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页