社区
C#
帖子详情
急:串口接收数据乱码问题
pimlee
2012-02-28 10:20:01
目前做称重管理系统:
现在环境是:一个传感器连接称重显示器,然后连接电脑。
用一个串口测试程序测了一下。接收到的数据,一开始老是乱码。
为什么?
第二,我比特率之类的参数已经和显示器参数都设置好了。
第三。是不是因为乱码的问题,我读出来的数据都是问号
先谢谢
...全文
1332
44
打赏
收藏
急:串口接收数据乱码问题
目前做称重管理系统: 现在环境是:一个传感器连接称重显示器,然后连接电脑。 用一个串口测试程序测了一下。接收到的数据,一开始老是乱码。 为什么? 第二,我比特率之类的参数已经和显示器参数都设置好了。 第三。是不是因为乱码的问题,我读出来的数据都是问号 先谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
44 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
abc516
2014-04-02
打赏
举报
回复
这两天我也遇到这个情况。最后发现不是编程的问题,是上海耀华电子秤XK3190-A27E仪表的问题。这个仪表的输出串口有两种配置,一种是RS232C,另一种是大屏幕(电流环)。编程去接收后面一种接口的数据就会出现乱码,实际操作手册里有描述: 大屏幕(电流环) 接线请参见图2-4. 大屏幕信号为20mA恒流的电流环信号,以二进制码串行输出,波特率为600。每一桢数据有11个位,1个起始位(0)、8个数据位(低位在前)、1个标志位、1个停止位(1)。 客户已将仪表退回原厂进行更换。
pimlee
2012-03-20
打赏
举报
回复
多谢多谢。我总结下
c1c2c33
2012-03-15
打赏
举报
回复
我也遇到这个问题,但是我换成USB转串口 就不会出现乱码?用主板自带的会出现乱码
狂奔小蜗牛
2012-03-07
打赏
举报
回复
在接收上编码问题。你看下这块。或许可以解决!
cdglynn
2012-03-07
打赏
举报
回复
[Quote=引用 15 楼 pimlee 的回复:]
[/Quote]
按这个解码不可以了吗,不能直接转换成字符串,得写解析吧
lfqsy
2012-02-29
打赏
举报
回复
我觉得主要是进制转换问题,然后把有用的部分取出来解析就可以了,c#有时候接收不完全,这个要判断
pimlee
2012-02-28
打赏
举报
回复
[Quote=引用 20 楼 aerkate 的回复:]
之前纠结为什么存到文件里面是乱码,发现没有转化成16进制
[/Quote]
转换成16进制然后?
aerkate
2012-02-28
打赏
举报
回复
之前纠结为什么存到文件里面是乱码,发现没有转化成16进制
pimlee
2012-02-28
打赏
举报
回复
[Quote=引用 18 楼 showlie 的回复:]
1、首先验证一帧应答数据的合法性:起始符、结束符、异或校验
2、第3~8字节的值是ASCII表中的值,如31表示数字1,32表示数组2,也就是说称重值为5位
3、把5位称重值合成为int类型数值weight
4、获取第9字节小数点位数pointer(也是ASCII转换),然后weight=weight/power(10,pointer)
5、获取第2字节符号位symbol,weight=……
[/Quote]
怎么写?
showlie
2012-02-28
打赏
举报
回复
1、首先验证一帧应答数据的合法性:起始符、结束符、异或校验
2、第3~8字节的值是ASCII表中的值,如31表示数字1,32表示数组2,也就是说称重值为5位
3、把5位称重值合成为int类型数值weight
4、获取第9字节小数点位数pointer(也是ASCII转换),然后weight=weight/power(10,pointer)
5、获取第2字节符号位symbol,weight=symbol=='+'?weight:0-weight;
pimlee
2012-02-28
打赏
举报
回复
[Quote=引用 13 楼 ycagri 的回复:]
关键是搞一份通讯协议看一看,不能自己瞎猜
[/Quote]
15楼那个图是不是通讯协议
pimlee
2012-02-28
打赏
举报
回复
[Quote=引用 14 楼 chinajiyong 的回复:]
引用 11 楼 pimlee 的回复:
楼上,急需说明
接收区,你是想用10进制显示吗
接收的是16进制,你的数据好像是双字节传过来的,比如地位在前,高位在后
就这样转换为10进制
iSum += Convert.ToInt32(bufPress[i + 1].ToString("X2") + bufPress[i].ToString("X2"), 16);
[/Quote]
这个是2.001就对了,你这个是整数。
pimlee
2012-02-28
打赏
举报
回复
EnForGrass
2012-02-28
打赏
举报
回复
[Quote=引用 11 楼 pimlee 的回复:]
楼上,急需说明
[/Quote]
接收区,你是想用10进制显示吗
接收的是16进制,你的数据好像是双字节传过来的,比如地位在前,高位在后
就这样转换为10进制
iSum += Convert.ToInt32(bufPress[i + 1].ToString("X2") + bufPress[i].ToString("X2"), 16);
ycagri
2012-02-28
打赏
举报
回复
关键是搞一份通讯协议看一看,不能自己瞎猜
ycagri
2012-02-28
打赏
举报
回复
乱码的问题:
1、串口参数是否正确:波特率、数据位、停止位、校验位
2、不是所有编码都可以用ASCII显示的,因为16进制编码的时候,可以使用一些ASCII无法显示的控制字符
pimlee
2012-02-28
打赏
举报
回复
楼上,急需说明
EnForGrass
2012-02-28
打赏
举报
回复
编码的问题,看输出什么编码
pimlee
2012-02-28
打赏
举报
回复
现在输出这么一串。怎么变成数字
18 3F 3F 6A 3F 3F 60 3F 3F 6A 3F 1C 3F 0A 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
pimlee
2012-02-28
打赏
举报
回复
传输的数据方式是:10位:1位起始位,8位数据位(ASCII编码)、1位停止位。
加载更多回复(22)
c# 口口
乱码
_
急
串口接收
数据
乱码
有关
问题
C# codeusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO.P...
串口输出
乱码
问题
的解决方法汇总(持续更新):
串口
乱码
问题
解决
STM32串口发送接收
数据
目录串口通信串口的结构体如何配置串口的发送通过串口向电脑发送ok字符 串口通信 我用的32是stm32f10x最小系统没有UART4和UART5 USART : 通用同步异步收发器 UART : 通用异步收发器 nRTS : 请求发送 nCTS : 请求接收 区别:USART指单片机的一个IO端口模块,可以根据需要配置成同步模式(SPI,IIC),也可以配置成异步模式(UART).可以理解为USART为SPI,IIC对等的”协议”。 UART则不是一个协议,为一个实体。 串口的结构体
STM32踩坑:STM32串口发送
乱码
问题
STM32串口发送
乱码
问题
小编是一个嵌入式初学者,才学没多久,将近两个月的样子,在学习过程中遇到了一些
问题
,在这里给大家分享一下解决方案。 今天要分享的
问题
是 STM32 串口发送字符串,但是在调试助手上面接收到的字符却是一串
乱码
,看着让人头疼。 这是
乱码
的图片 然后问了公司办公室的大佬,也在网上查了一下资料,总结了一下,原因大致有两点: 1) 开发板上外部时钟的晶振与代码中的外部时钟的晶振不一致(这是我写的串口实验发生
乱码
的原因) 2) 串口调试助手接收
数据
的波特率与串口初始化时的波特率不一致(这种
串口收发
乱码
解决方案
串口收发
乱码
解决方案串口收发
乱码
解决方案总结 串口收发
乱码
解决方案 在使用基于stm32f103rct6芯片的板子实现485收发时,发现可以发送也可以接收,但是收发的
数据
都是
乱码
。 第一步,因为可收可发,引脚肯定没
问题
; 第二步检查波特率,检查后发现波特率也没
问题
; 第三步检查时钟配置,仿佛也是没
问题
。。。 此时已经郁闷了。 二话不说,先上485配置代码: static void uart1_config(uint32_t baud_rate) { GPIO_InitTypeDef GPIO_Ini
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章