单片机发送的数据在串口调试助手接收正常,但是在linux下接收出现乱码是什么原因,代码如下,传送数据如下

作者&投稿:英党 (若有异议请与网页底部的电邮联系)
在单片机串口调试时,发送一个数字后,在接收区会出现很多乱码,联系不断的出现~

循环后没有清零或中断,写入数据后一直在对比,然后一直发送。。。
你把while放别处去就好,具体哪里自己解决。。多想想

你收到乱码是指的是什么??你要发送的是什么?显示的是什么??首先确定串口软件和你程序的波特率是不是一致,再看看你要现实的是HEX形式(十六进制数)还是BCD码。
你写的程序很清晰,只发送一个数据,应该不是程序问题,先看看软件设置再看程序吧

你的乱码指的是什么?中文乱码的话,注意接收后可能需要编码转换,比如GB2312,utf8,unicode这几种编码格式的转换

如果不是中文的话,可以按照下面方式进行检查

1、具体检查方法,将linux中的发送和接受进行短接(就是将发送和接受连起来),看看接受的数据是否相同。
这一步中,因为使用的是同一个串口,所以串口的设置一定是相同的。这样如果都收不正确,可以确定是linux串口驱动的问题。

2、详细设置linux串口的参数,包括波特率,校验,串口位数。将linux和单片机设置相同,看看接受数据是否相同
如果还是不相同。

3、在windows中使用串口调试助手设置同单片机串口相同的参数,查看接受数据是否正确。
如果不正确,说明是单片机串口参数设置的问题,或者是时钟频率的问题。
如果正确,说明一定是linux端的问题。

如果是linux端的问题,主要从两个方面解决,一个是参数设置,一个是信息读取。下面是测试方法。
4linux端查看一下代码设置。利用驱动接口,读出串口的参数,看看和你程序中设置的参数是否相同,如果不相同说明设置参数的代码没写对。

5如果参数设置是正确的,那么直接cat 驱动的位置,可以直接读出串口的数据,此时读取的数据应该是和发送端一样的,如若不一样。。。。那么基本就是linux时钟的问题导致的了。若linux是PC上的一般不会出现时钟设置错误,如果linux是嵌入式上的话,你看看时钟配置是否正确吧。

将串口位设为7位,当是8位时会出错

有没有检查LINUX串口驱动?


名词解释题
”地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I\/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为216=64KB,16位微型机的地址总线为20位,其可寻址空间为220=1MB。一般来说,若...

不同操作系统com口发送的数据会变么
会的,一般是由于波特率误差较大造成。COM口的数据流控制1.流控制在串行通讯中的作用这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现...

I2C是什么
I²C(Inter-Integrated Circuit)是内部整合电路的称呼,是一种串行通讯总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边装置而发展。I²C(读作"I-squared-C" ),还有可选的拼写方式是I2C(读作I-two-C)以及IIC(读作I-I-C),在中国则...

交换机的三种数据传输方式之间的区别
3、处理转发数据的时机不同:直通式数据传输,一旦获得数据帧的目的MAC地址,立即向目的端口转发数据;存储转发方式,先将输入端口到来的数据包缓存起来,检查数据包是否正确,同时滤掉冲突包错误。确定数据包正确后,取出目的地之,用查找表找到要发送的输出端口地址,将该包发送出去。碎片隔离数据传输方式...

2006--网络通讯试题解析(计算机综合)
【解析】在N层互连,为了让在两个网段上的计算机能够正常通信,要求N层以上的协议也相同。所以在本题中要求数据传输率和数据链路层协议都相同。 4.数据链路层采用go-back—N 方式进行流量和差错控制,发送方已经发送了编号0~6的帧。当计时器超时,除1 号帧外,其他各帧的确认均已返回时,发送方需要重发(D)帧。

如何实时获取机器设备的运行状态数据?
只显示开停很简单,在电机电源上并一电压传感器,将其转换为数字信号,可以8个一组,用单片机扩展技术,一个单 片机可以“同时”采集多组开停信号,并用定时器(单片机内部有)控制采集时间间隔,每次采信后由单片机通过RS232串口或以太网络接口传至上位机 ,这个单片机程序和上位机程序都比较简单 ...

一片51单片机怎么控制另一片51单片机?
第一片单片机的TXD连接到第二片单片机的RXD上 第一片单片机的RXD连接到第二片单片机的TXD上 然后就可以做 串口通信了 每一片都可以发送数据,然后另一片在串口接收中断中处理数据

上位机如何向单片机发字符串
既然可以收到3个,就说明基本上接收的设置是没有问题的。你检查一下你的接收buf有多大,是否小于发送的数据。当buf满了以后还有数据发送过来时,你是怎么做溢出处理的。是归0,还是不做处理,直接抛弃。可以用示波器看看,发送过来的数据到底是什么。我就试过本来应该发送16个字节的数据,结果上位机发给...

谁有计算机组成原理期末考试试题啊,帮帮忙吧,谢谢!
5.主机与设备传送数据时,采用___A___,主机与设备是串行工作的。A.程序查询方式;B.中断方式;C.DMA方式;D.通道。6.在整数定点机中,下述第___B___种说法是正确的­。A.原码和反码不能表示 -1,补码可以表示 -1;B.三种机器数均可表示 -1;C.三种机器数均可表示 -1,且三种机器数的表示范围相同;D....

单片机实现两相异步电机的SVPWM控制
无论是在工农业生产还是在日常生活中的家据存储区只有256个单元,需要扩展片外数据存储器6264。此外用电器,都大量地使用着各种各样的电动机。因此对电动机的控采用脉冲分配器CH250实现单片机对步进电动机的通电换向即脉制变得越来越重要了。电动机的控制技术的发展得力于微电子技冲分配,通过光电耦合器4N25实现步进电动...

伊犁哈萨克自治州19791739214: 通过单片机串口向计算机发送一个数据,为什么在调试助手中不停的接收数据? -
郜视加奇: 你这程序连个主循环都没有,所以运行的结果就是不停地复位、不停地重新发送……

伊犁哈萨克自治州19791739214: 在调试rs232串口通信时,单片机往PC机上发数据,串口调试助手可以接收,但是PC往单片机发数据,接收不到. -
郜视加奇: 先解释一下现象:(1)MAX232的12脚即R1OUT连接到了单片机的RX脚,因此使用探头碰MAX232的12引脚时导入了干扰信号,所以接收到了乱的数据.同时,也证明了单片机的接收电路和程序都没有问题.(2)板子上的地接到示波器上的地...

伊犁哈萨克自治州19791739214: 想用单片机接受从串口调试助手那里发送过来的数值数据,如何写代码(C语言)? -
郜视加奇: // 单片机串行口发送/接收程序,每接收到字节即发送出去// 和微机相接后键入的字符回显示在屏幕上// 可用此程序测试//#include <reg51.h>#define XTAL 11059200 // CUP 晶振频率#define baudrate 9600 // 通信波特率 void main(void) { unsigned ...

伊犁哈萨克自治州19791739214: 用串口调试助手是不是发给单片机一串数据,而后单片机返回数据到串口助手界面 -
郜视加奇: 如果可以检测,那么必须得在单片机中先有串口程序.如果单片机能运行串口程序,那么基本上就说明单片机是好的.那串口调试助手还有什么用呢?

伊犁哈萨克自治州19791739214: 串口调试助手收不到数据 -
郜视加奇: 你的程序完全不必这样写,把发送和接收都放在串口中断函数中,在中断函数中先做个判断,TI和RI分别做处理. 用串口调试助手调试的时候要选择16进制显示. 另外,你的这段程序是可以实现返回接收的数据的,只是在调试的时候要注意发送和接收的数据的是不是都是16进制或者是ASCII码.

伊犁哈萨克自治州19791739214: 单片机 调试串口 为什么显示发送的数据 -
郜视加奇: 这说明发送成功了,也说明单片机接收成功了,且把PC发送过来的数据会回发成功,证明通讯正常.

伊犁哈萨克自治州19791739214: 怎样用串口调试程序看到单片机发的信息 -
郜视加奇: 你直接在单片机里面写一个发给串口的程序就行了.然后插上串口.单片机上电,就可以在上面的接收框里面收到字符.

伊犁哈萨克自治州19791739214: stm32 接收串口调试助手的数据 -
郜视加奇: 说得有点笼统,不会是你的串口调试助手没设置成HEX格式吧.你也可以试着用stm32串口往上一直发数据,看一下串口显示的是什么.

伊犁哈萨克自治州19791739214: 单片机STC12C5A60S2的串口2发送的数据怎么在串口助手上显示? -
郜视加奇: 更换一个串口助手测试看看,排除串口软件的问题,测试是否是usb转串口驱动或者串口线的问题.常备几个串口助手,格西烽火、SSCOM、串口调试助手等都比较稳定.

伊犁哈萨克自治州19791739214: 用串口调试助手向单片机发送数据,单片机怎么接受并储存到一个数组中 -
郜视加奇: 你说的这种通信要求可以采用帧传送的方式,自己要确定一个帧格式,例如: 0X55//帧头标志 0XAA //128字节数据 校验字节1 校验字节2校验字节是防止数据传输错误,校验方式可自行选择. 如果数据不是很重要,定义一个132字节接收队列(全局变量数组),如果数据很重要,定义两个132字节接收队列,一个做接收缓冲,接受正确才更新正式队列.还要定义一个接收指针,当接收到帧头标志,接收指针清零,以后每接收一个字符,以接收指针做下标将数据存入接收数组.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网