串口接收数据怎么直接转成中文?

冬夜 2011-07-30 06:52:29
我的串口接收到的据需要转换成相对应的字符或是中文?中文和字符有可能同时会出现。

原来有一个程序是厂家给的,我们可以在前台看到串口的提示信息,有字符也有中文,我现在可以转成字符,可是要是进来的数据本来是显示中文的,那么就会出现乱码了。有什么方法可以解决吗? 怎么自动判断进来的是中文还是英文字符?
...全文
344 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
oioixiabings 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jn40105 的回复:]
在网上下了个源码 搞定了 虽然具体没有看明白 ,不过还是谢谢大家
[/Quote]
楼主,从哪个网址下的源码,是否分享一下,给个链接好吗?
冬夜 2011-08-02
  • 打赏
  • 举报
回复
在网上下了个源码 搞定了 虽然具体没有看明白 ,不过还是谢谢大家
冬夜 2011-07-31
  • 打赏
  • 举报
回复
我用串口调试助手可以正确显示中文,比如16进制数据为:“D3 D0 B1 A8 BE AF CA E4 C8 EB B2 E2 CA D4 CA A7 B0 DC” 对应的中文为:“有报警输入测试失败”但是我用ASCII码翻译一下这句话的对应16进制的ASCII码为:“6709 62a5 8b66 8f93 5165 6d4b 8bd5 5931 8d25 ” 能帮我解决一下吗?接收到的16进行是什么编码的,我是新手不太懂,谢谢了!
oioixiabings 2011-07-31
  • 打赏
  • 举报
回复
关注一下!
请楼主有结果后,分享一下,谢谢!
机器人 2011-07-31
  • 打赏
  • 举报
回复
ASCII码肯定解不了中文。ASCII码字符集里没有中文,
上面的数据是GB2312编码的

var data = new byte[] { 0xD3, 0xD0, 0xB1, 0xA8, 
0xBE, 0xAF, 0xCA, 0xE4,
0xC8, 0xEB, 0xB2, 0xE2,
0xCA, 0xD4, 0xCA, 0xA7,
0xB0, 0xDC};
var str = System.Text.Encoding.GetEncoding("GB2312").GetString(data);
Console.WriteLine(str);
Console.Read();





grgh2000 2011-07-30
  • 打赏
  • 举报
回复
只要判断字符是否是ASCII,如果不是,就可能是中文了
冬夜 2011-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxinggood 的回复:]
写错了

string content = System.Text.Encoding.UTF8.GetString(data);
[/Quote]


谢谢啊 明天到公司再试一下。
mjp1234airen4385 2011-07-30
  • 打赏
  • 举报
回复
如果是下位机的话,一般较少采用utf8编码的数据。
你可以使用Encoding.Default.GetString Encoding.gbk编码
子夜__ 2011-07-30
  • 打赏
  • 举报
回复
  static void Main(string[] args)
{
string s = "hello";
for (int i = 0; i < s.Length; i++)
{
if ((s[i] > 'a' && s[i] < 'z') || (s[i] > 'A' && s[i] < 'Z'))
{
System.Console.WriteLine("English Letter");
Console.ReadLine();
}

}

}
机器人 2011-07-30
  • 打赏
  • 举报
回复
写错了

string content = System.Text.Encoding.UTF8.GetString(data);

机器人 2011-07-30
  • 打赏
  • 举报
回复
收到 byte[] 后,用 System.Text.Encoding.GetString(data, System.Text.Encoding.UTF8)

你的看传给你的是什么编码的
特点: 1).监控串口:具有端口监控功能,可以监控、拦截、保存所收发的数据(NT/2K/XP/Vista/Win7)。 2).串口调试:支持常用的串口操作功能,支持大数据量的收发、保存,支持自动发送。 3).动态变参:在不改变当前所打开端口的情况下,能动态改变端口参数(如:波特率、校验位、流控制等)。 4).双模编辑:数据发送区内嵌十六进制编辑器(类似UltraEdit),支持十六进制文本双模式切换编辑,支持unicode。 5).国际版本:国际版,支持多国语言。 6).无需安装:界面友好,方便易用。 简要描述: 1).用于串口调试,支持常用的110-256000波特率,支持自定义波特率。 2).能以字符或十六进制接收或发送任何数据,能发送、接收任意大小的文件。 3).在不改变当前所打开端口的情况下,能动态改变端口参数(如:波特率、校验位、流控制等)。 4).数据发送区可实时编辑、发送文本数据。 5).能将所接收的原始数据以及显示数据分别保存。 6).数据发送区允许设置发送周期,自动发送数据。 7).可调试的端口范围是COM1-COM255,支持扩展端口(USBRS232)。 8).可设置字体、文字颜色、背景颜色。 9).允许将发送区的数据在接收区回显,模拟终端操作。 10).允许发送区数据以回车键作为发送操作信号。 11).Terminal模式支持自动应答功能,支持Hex、Text、浮点数等类型。 12).Terminal模式支持预定义数据发送,支持Hex、Text、浮点数等类型。 13).Monitor模式支持彩色文本显示,便于更好的区分、观察数据. 14).允许Monitor模式下拦截到的数据以十六进制或字符方式显示。 15).允许接收区在接收到的数据后添加回车字符(CRLF),便于观察数据。 16).可将Terminal模式下接收到的数据按照十六进制文本方式导出到文件或剪贴板。 17).允许保存程序环境变量。 18).定义热键,方便操作。 19).国际版,支持多国语言。 20).数据发送区内嵌十六进制编辑器,支持unicode。 21).支持串口监控功能,可以监控串口设置以及收发的数据。 22).在线自动更新提示功能,当有可用新版本时提示用户下载。 23).本程序线程安全,可以同时启动多个副本调试多个串口。 A.程序拥有端口监控功能,可以监控内核事件并拦截所有通过指定端口收发的数据,该功能 目前只在2000/XP/2003平台上有效。 1.在使用监控功能前必须保证所要监控的端口处于关闭状态。 2.运行本程序,选择所要监控的端口并启动监控功能,然后启动要被监控的端口; B.程序第一次启动时自动设置语言,也可以手动在View->Language菜单项选择相应的语言, 目前支持英文、简体中文、繁体中文。 2.运行环境 --------------------- Windows 9x/2000/XP/2003/Vista/Win7, 32位/64位

110,571

社区成员

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

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

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