永发信息网

C#中串口通信编程 怎么改才能收发汉字 http://blog.csdn.net/shengyongwang/article/details/42021

答案:4  悬赏:0  手机版
解决时间 2021-11-29 14:05
C#中串口通信编程 怎么改才能收发汉字 http://blog.csdn.net/shengyongwang/article/details/4202154
最佳答案
在你提供参考的csdn博客里,已经有详细的串口通信程序示例了,所以我就不重复那些了,现在我只给出收发中文数据的示例代码。
通常情况下,我们的程序代码是如下这样:
SerialPort serialPort = new SerialPort(); //这是串口通信对象
serialPort.WriteLine("Hello World"); //这是发送数据
string message = serialPort.ReadLine(); //这是接收数据
这没什么问题,收发都正常。但当你把英文"Hello World"换成中文"你好世界" 发送出去后,在另一边接收到的却是乱码。那么,怎样正确收发中文呢?正确的做法是,先将中文字符编码后再发送。接收时,将数据解码还原成中文。具体看下面:

//在发送数据时,使用这样的方法代码。
System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding();
Byte[] writeBytes = utf8.GetBytes("你好世界");
serialPort.Write(writeBytes, 0, writeBytes.Length);

//在接收数据时,使用这样的方法代码。
System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding();
Byte[] readBytes = new Byte[serialPort.BytesToRead];
serialPort.Read(readBytes, 0, readBytes.Length);
String decodedString = utf8.GetString(readBytes);
Console.WriteLine(decodedString); //控制台输入了中文:你好世界

这样就可以支持收发中文、英文、以其世界上常见的语种文字,毕竟UTF8编码支持大多数语言文字。如果,我们不使用UTF8编码,而使用GB2312编码,可以不可以呢?当然可以了。问题是死的,而头脑是灵活。呵呵~
全部回答
数据的格式要用发的时候用utf8 收时用gb2312
你给的范例是通过串口收发数据的,而汉字本来就是数据,所以不需要修改就可以收发。‘’
关键是如何显示的问题,例如:你一个txt文件用画图软件能打开吗?答案是否定的。
那么同样,你只要将接收过来的数据用一个文本控件或richtext控件显示就可以了。
将汉字转换成十六进制数字 进行收发
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
10时40分,到下午2时30分。中间飞行了多少时
目前龙岩地区的矿泉水有那些。
梦见披着棉被走
俊达车业怎么去啊,有知道地址的么
华为m2可以插内存卡吗
公狗几个月会有性冲动动作??
如何用软文提高网站流量
上海岩城金属材料有限公司怎么样?
南极宾馆在哪里啊,我有事要去这个地方
绝招课文的接后故事
那个显卡好
刘明湘为什么分手
十三五规划五十四条的内容是什么
下周1去和妻子谈复合之事是否能成功复合
邮政储蓄卡网银已开通,怎么开通网上支付业务
推荐资讯
雪莉在running man里为什么中文骂人
群青可以做食品添加剂吗
白皇后小时候扮演者
现在神木5900大卡的大块烟煤多少钱一吨?要是
湖南的985,211大学分别有哪些
求助,急!!!四川考生理科516
星乔台球地址在什么地方,想过去办事,
怎么使用电脑将歌曲降调
(理科必答)用石墨作电极电解CuCl2溶液时,
My English teacher insisted that the exerc
苹果ipad air2官网怎么没有
bim 画梁,无法连接。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?