OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2527|回复: 4

C# 串口助手

[复制链接]

7

主题

14

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2022-10-13
在线时间
9 小时
发表于 2022-10-13 20:38:10 来自手机 | 显示全部楼层 |阅读模式
初学者一枚,请教各位大佬几个小问题,用C#写了一个简单的串口助手,
问题一:看了看网上资料,在发送数据时为什么一般都是用byte数组而不是char数组呢?
问题二:这两个数组都用上了GB2312的编码,为什么借助虚拟串口和原子哥的XCOM通信,用char数组还是出现了中文乱码?
问题三:串口在接收数据的时候,怎么分辨出是这个字节就是一个字符,还是这个字节和下个字节一起组成一个字符呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2022-10-14 14:33:39 | 显示全部楼层
本帖最后由 LcwSwust 于 2022-10-14 15:19 编辑

工程弄上来。我这有VS2010.
至于英文与中文,可以利用转换函数来处理,也可以自己单独转换,中文是两字节数据,均大于128.例如:
  1.             int len = serialPort1.BytesToRead;
  2.             Byte[] readBuffer = new Byte[len];
  3.             serialPort1.Read(readBuffer, 0, len);
  4. str = Encoding.Default.GetString(readBuffer);
复制代码
再来一段发送的
  1. Encoding gb = System.Text.Encoding.GetEncoding("gb2312");
  2.                 byte[] bytes = gb.GetBytes(textBox2.Text);
  3.                 serialPort1.Write(bytes, 0, bytes.Length);
复制代码

专治疑难杂症
回复 支持 反对

使用道具 举报

7

主题

14

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2022-10-13
在线时间
9 小时
 楼主| 发表于 2022-10-14 19:30:42 | 显示全部楼层
XCOM V2.3.rar (210.43 KB, 下载次数: 8)
回复 支持 反对

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2022-10-14 20:47:04 | 显示全部楼层
菜鸟9号 发表于 2022-10-14 19:30
感谢大佬的回答,上述的几个问题已经弄清楚了,最终使用的代码与您的逻辑相同。学到了几个知识
第 ...

第一,两种都对的,点击”十六进制发送“时,程序对数据作了处理,将字符6转换为了16进制0x36,发送框内的内容变成了36,可能感觉有点画蛇添足。
第二,C#我也刚开始自学,不太了解。
专治疑难杂症
回复 支持 反对

使用道具 举报

7

主题

14

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2022-10-13
在线时间
9 小时
 楼主| 发表于 2022-10-20 15:05:39 | 显示全部楼层
好的,我慢慢理解一下,感谢您。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 12:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表