精华内容
下载资源
问答
  • 串口乱码

    2019-09-29 20:28:26
    1.第一要想的是下载一份原来的代码试试,串口正常说明 硬件正常。 2.考虑波特率,时钟。 3.编译器配置方面 4.系统代码地址问题 转载于:https://www.cnblogs.com/polar-lights/p/9236547.html...

    1.第一要想的是下载一份原来的代码试试,串口正常说明 硬件正常。

    2.考虑波特率,时钟。

    3.编译器配置方面

    4.系统代码地址问题

    转载于:https://www.cnblogs.com/polar-lights/p/9236547.html

    展开全文
  • 串口乱码疑云.docx

    2019-12-26 19:17:47
    本文研究了串口工具中产生的乱码的原因,介绍了解决串口乱码问题的方法,比较了几种解决乱码方法的特点,并且给出关键的代码,使读者能够具有自行解决乱码问题的能力。
  • 串口乱码疑云

    千次阅读 2019-12-27 11:03:59
    凡是用串口工具调试APP的人都有一个绕不过去的坑,那就是乱码坑!最简单的乱码坑是由于串口的波特率与传送信息模块的波特率不一致造成的,在串口工具上重新设置正确的波特率就马上见效出坑了。出现乱码最先检查的...

            凡是用串口工具调试APP的人都有一个绕不过去的坑,那就是乱码坑!最简单的乱码坑是由于串口的波特率与传送信息模块的波特率不一致造成的,在串口工具上重新设置正确的波特率就马上见效出坑了。出现乱码最先检查的就是波特率,因为它的纠正最简单迅捷。作者最近在调试一个蓝牙的APP时就进了这个乱码坑,而且不是波特率坑,花了好几天时间,也没把这个坑整得完全明白,但还是有一些体会,现分享给大家,供参考。

            作者调试的是一个手机与ble蓝牙jdy16模块链接进行通信的APP,在手机与蓝牙模块接通后,手机向蓝牙模块发送了一条中文信息,蓝牙模块接收到了,在串口工具上显示出来,这时发现显示出来是一堆乱码,见下图:

            首先检查波特率的设置,没有问题,想到乱码是由于编码与解码不一致造成的,就又检查android studio中的编码设置:

    在android studio中的settings和Other settings中有关编码的部分是统一设置成了UTF-8编码的,是一致的,那产生乱码的原因有很大的可能是串口助手与APP的编码不一致造成的,那么,串口助手用的是哪种编码呢,在APP中,我试了很多种编码方法发送到串口助手,比如,用过URLEncoder.encode(“编码1”)与URLDecoder.docode(“编码2”)方法, 编码方式也试了好多种,比如GBK,GB2312,UTF-8...等等,但是结果却令人非常沮丧,在串口工具上始终显示的是乱码。同时,我注意到,同样的字符如果发送到手机上显示则是正确的汉字符号。在分析乱码时,找到一个乱码恢复网站,把乱码贴上去,得到一个意外的结果:

    看上面这张图的最后一行,它把乱码准确地还原了,确认原码是UTG-8,现码是GBK,这个结论应该是对的,我在android studio中所有编码的设置都是UTF-8,那么串口助手的编码方式就应该是GBK,按照这个结论,如果我在APP中把中文字符的码编方式设置成GBK就应该与串口工具的编码方式一致了,不会再产生乱码,但是做了一系列的实验,乱码依然如旧。那么,这些在串口工具上产生乱码的编码再传回来会是什么效果?因为调试是一个透传蓝牙模块,想要得到蓝牙接收到的数据再回传的过程很简单,只需要在APP里再读取蓝牙的数据即可,于是我加了几行代码:

    再把收到的信息显示出来就是:

    可见,从蓝牙模块转了一圈后回传的信息与发送的信息是完全一致的。显然,目前这个乱码的锅应该由串口工具来背啊。那么,选用不同的串口工具会有什么结果呢,我试了不少于10种各式串口工具,大多数串口工具显示都是乱码,而且,这些串口工具都没有编码选择这个功能,只能按照工具本身设定的编码方式来解码,如果串口工具接收到的信息与工具设定的编码不致,就会产生乱码。但是,我还真找到两款在UTF-8编码下不产生乱码的串口工具:

    第一款是格西烽火串口助手:

    下面这个图是APP从蓝牙接收到的返回信息:

    从这两个图能看出格西烽火串口工具可以很完美的显示UTF-8编码的字符,因为它的编码相同的,所以在所有的终端都会显示相同的信息。但是,它给我的注册时间只有几天,到年底,到期后不知道是不是免费使用的啦。还有就是貌似没有GBK编码选项。

            第二款是 深蓝串口助手,它的显示效果如下图:

    这个是使用深蓝串口助手时从蓝牙返回的信息:

            从上面的图中可以看出,深蓝串口助手在中文字符解码上还是有些暇疵,有些没有显示出来。还有要说明的是,这两款串口助手都有编码选择功能,可以根据APP的编码选择串口工具的编码,这样一来,串口工具在中文时出现乱码机会就小很多,不过,格西烽火串口助手的编码有很多种,选择很丰富,深蓝串口助手只有只种编码方式可供选择。

            还要说明一点,这两款串口工具显示的字符与APP从接收从蓝牙返回的信息以及在手机上显示的信息是一致的,都是发出的原信息。

            后来总算是找到了在通常使用的串口工具上正确的显示中文字符的方法,那就是使用getByte()方法,把原字符转换成字节再转成目标编码方式显示:

    在这段代码中,res是中文的字符串,GBK是要转换成的目标编码,用这个方法在普通串口工具上的显示效果:

            然而,虽然在串口工具上能正确的显示中文字符了,但手机上和从蓝牙返回的信息却成了乱码,下图是蓝牙模块接收到信息后透传的信息:

            同理,用String string=new String(“中文字符串”.getBytes(“编码1”),“编码2”)方法也能达到这个效果,其中编码1是中文字符串现在的编码,编码2要转换成的目标编码。

            正如上面的事实,要想在串口工具中不出现乱码,我看来有两种方式,一种是选用编码方式可选择的串口工具,设定与APP一致的编码,这样的发送的信息能保持较好的一致性,第二种方式是在普通串口工具中使用正确的编码转换方法,此种方式有可能产生串口工具与接收终端信息不一致的结果。建议还是选第一种方式吧,省心!再就是给那些串口工具的开发者提个建议,多加个编码选择功能很难么?有了编码选择功能使用者的感受会好很多,多费点心增加些实用的功能吧。

    本文为作者原创,如转请注明出处!

     

    展开全文
  • stm32f107串口乱码

    2018-07-10 15:18:05
    最近在写串口程序的时候遇到了串口乱码的问题,后来上网查了之后才发现是晶振不匹配的原因。我使用的板子的晶振是16MHz,而系统默认是配置为8MHz,修改步骤:1:首先确认程序工程目录的文件属性为非只读的,如果是...

    最近在写串口程序的时候遇到了串口乱码的问题,后来上网查了之后才发现是晶振不匹配的原因。

    我使用的板子的晶振是16MHz,而系统默认是配置为8MHz,修改步骤:

    1:首先确认程序工程目录的文件属性为非只读的,如果是只读的那么改为非只读的,这是为了能够修改工程的系统文件;

    2:在1的基础上修改stm32f10x.h头文件约120行处修改HSE_VALUE的配置值:

    #if !defined  HSE_VALUE
     #ifdef STM32F10X_CL   
      #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
     #else 
      #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
     #endif /* STM32F10X_CL */
    #endif /* HSE_VALUE */

    根据自己使用的晶振情况进行宏定义,添加以下内容:

    //Added by Mabel.
    #define HSE_VALUE    ((uint32_t)16000000)
    //end
    #if !defined  HSE_VALUE
     #ifdef STM32F10X_CL   
      #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
     #else
      #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */  
     #endif /* STM32F10X_CL */

    #endif /* HSE_VALUE */

    3:可是我的修改了以上之后还不行,是因为我没有进行系统时钟初始化,在main函数中调用systick_init();即可。当然需要加上相应的头文件:#include "systick.h"


    以下是修改参考连接:

    https://blog.csdn.net/markinstephen/article/details/53505493

    https://www.cnblogs.com/htsky/p/5923422.html

    展开全文
  • stm32的库函数与串口乱码的原理与解决
    前几天在中移物联网申请了一个迷你开发板,运行官方提供的程序,感觉板子是正常的。但是自己写的程序能够刷到板子上,但是串口却是乱码。官方和我的额程序都是用的库函数的方式写的。在网上,有人说库函数默认是8兆晶振,但是“option for target”->"target"里将Xtal(MHz)设置为12,也不起作用。

    对比发现,官方的库函数,都是在程序文件里的,mdk应该是4.X版的。我用的mdk5.X版的,后来在官网下载了5.21a的版本依然是同样的错误。
    我自己的程序的库文件是从 mdk的“Manage Run-Time Environment”界面下的Device -> StdPeriph Drivers 里选择对应文件。
    这些由系统提供的文件上都有一个锁,在编辑器里也无法修改。

    在官方和我的程序里都加上 printf("3-USART1->BRR \t %d\r\n",USART1->BRR); 语句,发现

    在设定波特率为115200下,官方数值为625,而我的程序为521
    在设定波特率为9600下,官方数值为7500,我的程序为6250

    依此判断,还频率的问题造成的。怎么修正还得研究。

    找到 “MDK安装目录\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include\stm32f10x.h”,在120行开始显示:
    #if !defined  HSE_VALUE
     #ifdef STM32F10X_CL   
      #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
     #else 
      #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
     #endif /* STM32F10X_CL */
    #endif /* HSE_VALUE */


    曾经也尝试着自行定义 “#define HSE_VALUE    ((uint32_t)12000000)”也不起作用。
    后来,无意间发现,系统提供的文件,都是只读属性。去掉只读属性,在mdk里,钥匙图标没有了,可以修改stm32f10x.h文件了。

    结论,1、“option for target”->"target"里将Xtal(MHz)的参数仅用于模拟调试,不影响实际板卡的参数设置。系统提供的文件可以被修改。3、在错位的情况下,芯片可能被超频了。但是还能运行(没坏)。

    看似上述不多的文字,却耗费了我几周的业余时间做各种验证测试。希望能够帮助有此类问题的朋友。


    展开全文
  • 单片机使用12M晶振串口乱码问题,串口通信01或1,接收为81等等问题 若是TH1和TL1=0xFD,将晶振改为11.0592MHZ重新下载 或者按照以下步骤 在STC-ISP中选择波特率计算器 把波特率从9600改成了4800,并且勾上了波特...
  • STM32F105的串口乱码问题

    千次阅读 2017-10-11 23:56:38
    STM32F105的串口乱码问题我在调试STM32F105时,串口发送数据一致乱码,找来找去,原来问题还是出现在软件配置上。 然后我发现在文件stm32f10x.h中有这么一段代码。if !defined HSE_VALUE#ifdef STM32F10X_CL #...
  • esp8266 串口乱码

    2020-07-02 09:18:14
    编码问题 波特率问题 这里提一下波特率问题 8266的启动信息波特率为:74880 一般的串口调试工具没有,这里可以使用安可信串口调试助手解决
  • STM32串口乱码

    2020-04-13 12:03:16
    今天用最小系统,需要串口的调试,然后就死活不对,一直是乱码,看Hex的话一直是出现0A 0A 0A 0A 0A 0A 0A 0A 0A在循环 问题分析并解决 问题 切记RXD端口如果出现问题,建议先将RXD端口设置成 =》GPIO_Mode_IPU(上...
  • 问题:串口调试升级高通AR9342模块,出现乱码问题,在uboot里乱码,其他不乱码。 方法:在串口工具里把波特率改成117200 即可。
  • 项目需要使用android采集串口设备的数据,硬件使用CH34X芯片的“USB转UART”,当设备连接在计算机上时,读取数据是正常的。在计算机上使用两种方式进行了读取:方式一:使用Xshell方式二:自行编写代码:自己编写的...
  • 1、查看你使用的USB转串口是3.3V的串口还是5V串口,如果发送方使用的是3.3V然后你使用的USB转串口是5V是可以收到数据的但收到的数据都是错误的 2、查看波特率、奇偶校验、停止位等是否设置正确。 3、如果是STM32,...
  • c51 uart串口乱码调试

    2015-12-13 19:25:32
    用timer2作串口波特率发生器,串口方式3做串口与电脑通讯,调试时接收乱码,发送乱码。 代码如下 void uart_init(void){ PCON &= 0x00;SCON = 0xf0;T2CON&=0xF0;//EXEN2=0,TR2=0,C/T2=0;CP/RL2=0T2CON|=0x34;RCLK=1,...
  • 问题:载板RS422串口与PC机通信异常 现象:载板发送正常,接收异常,另外与客户设备连接时,通信不正常,无法确认发送接收是否正常 原因:1、硬件连接有问题。对应RS422串口,需要如下对外接口定于: RX+ ...
  • linux串口乱码

    2012-03-07 14:55:51
    linux串口乱码,,,大家分析分析,,,
  • 【Arduino】串口乱码解决办法

    千次阅读 2019-05-04 15:33:14
    最近在做毕设,需要实现两块...在第一块主板程序里模拟了两个软串口,一个是Bluetooth serial,也就是接蓝牙的管脚,用来接受蓝牙数据,另一个是myserial,用来接舵机控制板。 在程序里定义char变量send...
  • 串口调试工具,和板端对发乱码: 只连了RXD和TXD没连3.3v电源和接地,连接后正常发送 串口调试收发正常,PC端linux下软件经串口传输失败: 虚拟机用串口需要在 虚拟机->可移动设备下添加后设置,出现ttyUSB0后可...
  • 最近一直在折腾全志A83平台的开发板,发现自带的CH340串口转USB线输出乱码或者就是没反应,现象如下:   解决方法: 1、minicom设置的波特率是否正确 2、检查驱动是否正确 3、更换为RS232串口线   因为...
  • S3C2440--串口乱码解决办法

    千次阅读 2010-11-11 18:29:00
    关于S3C2440,最近看到网上有很多朋友说出现串口乱码的问题,同时也看到很多朋友指出了一些解决的办法,但又看到有人说按网上提出的办法还是没能解决乱码问题,我提一个大家都没怎么提的地方吧,希望对大家...
  • stm32 串口乱码的解决

    2016-09-30 12:01:00
    但是自己写的程序能够刷到板子上,但是串口却是乱码。官方和我的额程序都是用的库函数的方式写的。在网上,有人说库函数默认是8兆晶振,但是“option for target”->"target"里将Xtal(MHz)设置为12,也不起作用。...
  • 1.波特率出错或者其他串口设置出错 2.三线即可进行通信,未接地或者接触不良,TTL/232 TX、RX接反,485 A、B接反 3.如果接电脑可以通信,而设备间通信不行,可能设备供电电压不足,导致电平紊乱,可以换电量充足的...
  • 51单片机使用12M晶振串口乱码问题

    千次阅读 2019-03-26 21:29:13
    前几天,画了块51的板子,晶振用的是12MHz的,调试过程发现串口打印输出一直乱码,用的是STC-ISP(V6.86R)这个工具软件里面的波特率计算器来直接计算波特率,配置如下图所示: 就是这个配置导致了通信乱码,原因是...
  • CC2541蓝牙串口乱码解决

    千次阅读 2015-09-07 13:58:19
    在CC2541蓝牙模块调试过程中,用到了串口模块,但是在串口输出时偶尔会出现乱码,大部分情况数据是正常的。最后通过TI的官方论坛和相关文档,查找到了原因: 原来CC2541在出厂默认情况下,当CC2541的射频工作时,即...
  • 现象:STM32串口打印乱码 ** 代码如下: int main { 。。。 HAL_ADC_Start_DMA(&hadcx, &ADC_ConvertedValue, sizeof(ADC_ConvertedValue));** 。。 while(1) { printf("%d \r\n",ADC_ConvertedValue); } 。...
  • 读取IMEI号码出现乱码故障 尝试解决方法 怀疑1、单片机参数配置错误 怀疑2、GPRS与N76E003接口电平兼容问题 怀疑3、电磁兼容 射频干扰问题 暂时处置方法 最终解决方法 修改串口发送函数 原有的串口发送函数 ...
  • 2440 移植u-boot 是串口乱码问题

    千次阅读 2017-06-09 14:40:27
    2.移植到get_HCLK() get_PCLK() ,按照书上所说烧到nor 串口就能打印了 3.但是使用的时候一直乱码 ,网上查了查也没解决 4.尝试重新移植.比较代码 就是不行, 5.又copy补丁文件的配置还是乱码, 6.考虑是串口坏掉?烧写...
  • 焊上转接口(串口),启动系统结果没有任何输出,查了一下,原来是TX,和RX焊反了,重焊。这回有输出,但是乱码,从以下几个方面来查问题: 1,设置的波特率是否一致。主机和PC上的是否一致。有乱码,第一时间想到...
  • 为了改这个bug,我花了一天的时间……只能怪自己,没... 然后 串口 就好使了, 怎么看自己的开发版晶震是多少  如果没有写可以去查一下型号 真就自己太菜了,第一时间没有考虑到 时钟  电赛不易,诸君共勉! ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 923
精华内容 369
关键字:

串口乱码