定义:

SerialPort ComDevice = new SerialPort();

在开启串口前 设置前后文本转换的字符编码

代码:ComDevice.Encoding = System.Text.Encoding.GetEncoding("GB2312");//此行非常重要 可解决接收中文乱码问题

接收代码:

#region 串口相关操作

SerialPort ComDevice = new SerialPort();

private void GetComList()

{

//获取可用串口列表

string[] ports = SerialPort.GetPortNames();

foreach (string port in ports)

{

cbbComList.Properties.Items.Add(port);

}

if (cbbComList.Properties.Items.Count > 0)

{

cbbComList.SelectedIndex = 0;

cbbComList.Enabled = true;

}

}

private void btnComOpen_Click(object sender, EventArgs e)

{

if (btnComOpen.Tag.ToString() == "0")

{

ComDevice.PortName = cbbComList.SelectedItem.ToString();

ComDevice.BaudRate = 115200;

ComDevice.Parity = (Parity)0;

ComDevice.DataBits = 8;

ComDevice.StopBits = (StopBits)1;

ComDevice.Encoding = System.Text.Encoding.GetEncoding("GB2312");//此行非常重要 可解决接收中文乱码问题

try

{

ComDevice.Open();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

btnComOpen.Text = "关 闭";

btnComOpen.Tag = "1";

picComStatus.Image = Properties.Resources.green;

ComDevice.DataReceived += new SerialDataReceivedEventHandler(ComDevice_DataReceived);

}

else

{

try

{

ComDevice.Close();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

btnComOpen.Text = "打 开";

btnComOpen.Tag = "0";

picComStatus.Image = Properties.Resources.red;

}

}

///

/// 发送数据 ---此代码在发送时都是转换成十六进制进行发送

///

private void Send(string cmd, bool HexCmd)

{

if (cmd == null)

return;

if (cmd.Length > 0)

{

if (ComDevice.IsOpen == true)

{

byte[] SendBytes = null;

string SendData = cmd;

if (HexCmd == true)

{ //16进制发送

try

{

//剔除所有空格

SendData = SendData.Replace(" ", "");

if (SendData.Length % 2 == 1)

{//奇数个字符

SendData = SendData.Remove(SendData.Length - 1, 1);//去除末位字符

}

List SendDataList = new List();

for (int i = 0; i < SendData.Length; i = i + 2)

{

SendDataList.Add(SendData.Substring(i, 2));

}

SendBytes = new byte[SendDataList.Count];

for (int j = 0; j < SendBytes.Length; j++)

{

SendBytes[j] = (byte)(Convert.ToInt32(SendDataList[j], 16));

}

}

catch

{

XtraMessageBox.Show("请输入正确的16进制数据!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

else

{

System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");

byte[] bytes = chs.GetBytes(cmd);

string str = "";

for (int i = 0; i < bytes.Length; i++)

{

str += string.Format("{0:X2}", bytes[i]);

}

List SendDataList = new List();

for (int i = 0; i < str.Length; i = i + 2)

{

SendDataList.Add(str.Substring(i, 2));

}

SendDataList.Add("0D");

SendBytes = new byte[SendDataList.Count];

for (int j = 0; j < SendBytes.Length; j++)

{

SendBytes[j] = (byte)(Convert.ToInt32(SendDataList[j], 16));

}

}

ComDevice.Write(SendBytes, 0, SendBytes.Length);//发送数据

}

else

{

XtraMessageBox.Show("请打开串口!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

}

#region 接收数据

private void ComDevice_DataReceived(object sender, SerialDataReceivedEventArgs e)

{

UpdateRecevie(ComDevice.ReadExisting());

}

public delegate void UpdateString(object NewData);

public void UpdateRecevie(object NewData)

{

if (this.InvokeRequired)//等待异步

{

UpdateString _myInvoke = new UpdateString(UpdateRecevie);

this.Invoke(_myInvoke, new object[] { NewData });

}

else

{

txtComReceive.AppendText(NewData.ToString());

txtComReceive.SelectionStart = txtComReceive.Text.Length - 1;

txtComReceive.ScrollToCaret();

}

}

#endregion

java地磅串口显示乱码_解决串口接收中文乱码问题相关推荐

  1. mysql5.7乱码_解决Mysql5.7中文乱码的问题

    在使用mysql5.7时,会发现通过web端向数据库中写入中文后会出现乱码,但是在数据库中直接操作SQL语句插入数据后中文就显示正常,这个问题怎么解决呢?此处不对MySQL的数据编码过程和原理进行讲解 ...

  2. oracle mysql 乱码_解决Oracle数据库中文乱码

    查询当前Oracle所用编码 在服务器上查看数据库服务器字符集 select userenv('language') from dual; USERENV('LANGUAGE') ---------- ...

  3. c# json 汉字乱码_解决Json传输中文乱码问题

    1.如果是通过URL传递:----需要编码两次 var searchText = this.searchText(); searchText = encodeURI(searchText); sear ...

  4. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题

    确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...

  5. keil5中文乱码,编译中文乱码,串口调试助手接收中文乱码

    keil5中文乱码,编译中文乱码,串口调试助手接收中文乱码 keil5的文本编辑器输入中文乱码 一般更改编码就可以解决 打开设置界面 更改编码,可以是GBK码,也可以是UTF-8编码 编辑器中文没有乱 ...

  6. php运行显示中文乱码,如何解决PHP界面显示中文乱码的问题

    如何解决PHP界面显示中文乱码的问题 发布时间:2020-07-14 15:19:00 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP界面显示中文乱码的问题 ...

  7. python idea控制台中文乱码_python 解决cv2绘制中文乱码问题

    python 解决cv2绘制中文乱码问题 因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图 ...

  8. python 中文乱码_python 解决cv2绘制中文乱码问题

    前几天在公司敲出了个BUG,硬是让我头疼了一阵子,没想到BUG的起因竟是一点小小的细节问题,唉!被折磨的够呛,又让我想起那时候遇到的python cv2绘制中文乱码,差不多也是同样的感受. 为此今天我 ...

  9. html地址栏转换乱码,如何解决jquery url中文乱码的问题

    如何解决jquery url中文乱码的问题 发布时间:2021-02-14 08:30:01 来源:亿速云 阅读:105 作者:小新 小编给大家分享一下如何解决jquery url中文乱码的问题,希望 ...

最新文章

  1. 鸿蒙操作系统在使用了吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  2. 一文精简介绍CNN基本结构
  3. android 生成签名命令
  4. single-number-ii
  5. 上帝造题的七分钟(ybtoj-树状数组)
  6. Qt工作笔记-主界面往模式对话框emit信号,有注意的问题
  7. 命令行开启一个unity实例和执行其中的脚本方法的使用和注意
  8. linux c语言 文件拷贝,怎么在linux下用c编程实现文件的复制
  9. 2021Java春招,java求职简历模板下载
  10. LDA模型训练与得到文本主题、困惑度计算(含可运行案例)
  11. 电力拖动自动控制系统matlab,基于Matlab的《电力拖动自动控制系统》课程教学改革...
  12. 二级域名分发系统源码
  13. 三相并联功率因数校正matlab,基于并联技术的三相功率因数校正方法研究
  14. SpringBoot整合Mybatis-Plus
  15. 2019下半年第一个流行词---宏颜获水
  16. JavaFx之横向布局左右两侧对齐(十九)
  17. Vue 实现页面一键截屏功能
  18. lammps学习(一)单晶硅纳米磨削
  19. Java基础学习(9)
  20. 绝地腾讯手游登入显示服务器满了,绝地求生刺激战场注册已满什么意思 注册已满解决方法详解[多图]...

热门文章

  1. 关于颁布总承包服务费标准的通知
  2. 一部老片《冰雪迷案》观后感
  3. 基于activemq的分布式事务解决方案
  4. 癌症的中英文以及英文缩写
  5. android资源文件转bitmap,Android 之 Bitmap 和 File 相互转换
  6. 链表算法 Implemented with C++
  7. 给网站申请Google Adsense的过程方法及注意事项记录
  8. JST日本压着端子EH系列线对板连接器的PCB封装库
  9. 协方差自适应调整的进化策略(CMA-ES)转载自知乎
  10. ORA-28003: password verification for the specified ORA-20001