c#编写的上位机软件收到汉字乱码(前后显示正常中间乱码)

Johanna911027 2017-07-12 10:09:36
各位大神,本人写的上位机软件和串口调试助手可以正常通信,收到的汉字均显示正常。下位机与串口调试助手通信也正常,但是下位机和我的上位机通信却存在第一行和最后一行显示正常,中间乱码的情况。猜测是因为换行符引起的,但是不知如何解决,请大神指点,拜谢!
由于机器不能联网,所以无法截图,显示内容大致是这样


手持机测试开始!
??测蜂鸣器..................完成
?觳庹穸 泶?..............完成
?觳?存储系统..............成功
??测气压计..................成功
系统测试.......................完毕
...全文
387 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Johanna911027 2017-07-12
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
换行符属 ASCII 码,不可能引起乱码 只有扩展 ASCII 字符才可能引起乱码 可能是你在处理时丢失或重复使用了某个字符 需要看到你接收到的 byte 数组,才能做进一步分析
谢谢版主回复,我刚入门,很多概念都没有搞清楚。改用了serialPort.ReadExisting()就没有问题了
Johanna911027 2017-07-12
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
猜测是因为换行符引起的,但是不知如何解决 -》你单独发一条数据看看结果呢, Unicode是怎么设置的。
ComDevice.Encoding = System.Text.Encoding.GetEncoding("GB2312"); 串口数据接收事件
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    int num = serialPort.BytesToRead;
    byte[] dataBuffer = new byte[num];
    serialPort.Read(dataBuffer, 0, num);
    string strreceived = System.Text.Encoding.Default.GetString(dataBuffer);
    textBoxData.AppendText(strreceived);
}
xuzuning 2017-07-12
  • 打赏
  • 举报
回复
换行符属 ASCII 码,不可能引起乱码 只有扩展 ASCII 字符才可能引起乱码 可能是你在处理时丢失或重复使用了某个字符 需要看到你接收到的 byte 数组,才能做进一步分析
exception92 2017-07-12
  • 打赏
  • 举报
回复
猜测是因为换行符引起的,但是不知如何解决 -》你单独发一条数据看看结果呢, Unicode是怎么设置的。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧