串口配置问题,重点检查波特率,检验位,停止位,数据位,
硬件问题,GND一定要接,txrx要正确,串口芯片问题,接线太长,大于2米等
软件问题,注意发送函数重入问题,用系统的互斥,不用系统的想办法不在同一时间发送
一般是波特率的问题,根据下位机设置的波特率,选择上位机的波特率,两者波特率及协议应该一致。
另外,如果传输中文,中文使用的编码方式,也会引起乱码的可能,但是这种乱码仅局限于中文。
1、检测GND是否接好。
2、两边波特率是否一致
3、如果线太长或者太细了都会影响传输准确性。
4、重启上位机软件
上位机乱码
有可能是你的波特率不一致
有可能是你的上位机没有选择HEX显示(十六进制)
有可能是你的下位机发送的本来就是乱码的数据
这个问题 有多方面的
首先是串口配置是否正确,波特率选择是否正确,用的线束是否合格
是否是 ASCII码和 16进制选择有误,都试一下,
1、先检查串口配置,波特率,停止位,校验位等
2、检查是否线接反了
3、电平是否匹配,这个很容易被忽视,因为有些模块串口出来的电压比较奇葩,像1.8V的,这种需要进行电平转换,否则就是乱码
如果上位机能接收信号,可以:
连续发送固定ASCII码,例如0xAA,多个,在上位机接收端打开窗口调试助手等软件查看
1. 如果永远接收不到0xAA,而是乱码,先检查上下位机的收发波特率、停止位、速率等;
2. 如果是丢失数据,例如发了5个,接收到了4个,应该是软件设置的问题居多[硬件不大可能,也不排除];
3. 如果偶尔出错,可以查看有无其他较高中断级别的的中断在收发过程产生中断造成的;
4. 串口传输线采用绞合线比并联直通线好,线不宜太长。
试试吧