C#如何接收单片机串口发送的数据

我想显示单片机发送的数据,并且显示在richTextBox1中,不过我目前上位机收到的数据时乱码,我猜测没有转化为16进制,求大神帮忙改下程序,让单片机的数据顺利显示在r... 我想显示单片机发送的数据,并且显示在richTextBox1中,不过我目前上位机收到的数据时乱码,我猜测没有转化为16进制,求大神帮忙改下程序,让单片机的数据顺利显示在richTextBox1中
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n =serialPort1.ReadBufferSize;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
serialPort1.Read(buf,0,n);//读取缓冲数
string text = "";
text = System.Text.Encoding.ASCII.GetString(buf);//将RevData中的数据转换成字符串
UpdateReceiveTextBox(text);//在接收文本框中显示
}
private void UpdateReceiveTextBox(string text)
{

//不在同一线程
if (richTextBox1.InvokeRequired)
{
HandleInterfaceUpdateDelegate InterfaceUpdate = new HandleInterfaceUpdateDelegate(UpdateReceiveTextBox);
Invoke(InterfaceUpdate, new object[] { text });
}
//在同一线程
else
{
richTextBox1.Text += text;
}
}
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
七终多E
2012-01-06 · TA获得超过1.4万个赞
知道大有可为答主
回答量:3756
采纳率:46%
帮助的人:3437万
展开全部
你这个是摘自某个GSM通讯的案例代码吧 连注释都一样
追问
是摘的,数据进来了,但是显示不出来
追答
serialPort1.Read(buf,0,n);//读取缓冲数 这行加断点 调试到这里的时候 执行这一句 然后看看buf里面到底有没有数据 如果没有确定正常接受数据 如果确实收到了 
那么这句 text = System.Text.Encoding.ASCII.GetString(buf);//将RevData中的数据转换成字符串
改成text = System.Text.Encoding.Default.GetString(buf);//将RevData中的数据转换成字符串 试试
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
coder_tmp
2012-01-07 · TA获得超过443个赞
知道小有建树答主
回答量:547
采纳率:100%
帮助的人:351万
展开全部
关注
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式