串口接收中文时乱码
求助大神:串口接收文本时,以十六进制接收时数据正常,接收以中文显示时偶尔会出现乱码,一直搞不定,请高手给点意见。
代码如下
代码如下
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;
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;
}
}
#region 接收数据
private void ComDevice_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] ReDatas = new byte[ComDevice.BytesToRead];//返回命令包
ComDevice.Read(ReDatas, 0, ReDatas.Length);//读取数据
UpdateRecevie(System.Text.Encoding.Default.GetString(ReDatas));
}
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
...全文
相关推荐
串口乱码疑云.docx
本文研究了串口工具中产生的乱码的原因,介绍了解决串口乱码问题的方法,比较了几种解决乱码方法的特点,并且给出关键的代码,使读者能够具有自行解决乱码问题的能力。
C#串口通信(解决中文传输和实现换行)
C#串口通信(解决中文传输和实现换行),该版本解决了传输中文变成乱码、敲回车键不换行等问题
Qt串口助手,支持和单片机中文通信
上位机和下位机串口中文通信时,经常出现乱码,该程序就是针对这个问题找到了解决办法。
串口助手带CRC校验.rar
串口调试助手,有三个发送区,每个区有单独的CRC校验;显示流畅,不容易丢数据.中文显示无乱码;波特率、数据位、校验都可以设置
民德扫描器_COM_Text串口中文输出
民德扫描器_COM_Text串口中文输出 民德扫描器_COM_Text串口中文输出


