精华内容
下载资源
问答
  • LINUX串口文件传输

    2018-07-25 08:55:12
    串口文件传输数据帧格式:0xAA+0xAA+序号+数据长度+50字节数据+校验和。支持错误重传。 用法: 发: ./test /devttyUSB0 0 a.txt 收: ./test /devttyUSB1 1 b.txt a.txt为要发送的文件,b.txt为保存的文件 test...
  • 串口是怎样传输数据

    千次阅读 多人点赞 2020-06-24 16:59:08
    ✍概述 ...串口数据解析  利用电脑端的串口助手通过CH340串口模块将数据0x55发送出去,并通过逻辑分析仪来捕捉数据。下图为串口发送的数据,是以十六进制(hex)形式发送的。 逻辑分析仪捕捉数据: 我

    ✍概述
      ➹通过逻辑分析仪捕捉串口传输的数据来了解串口传输数据的实质。
      
      串行接口简称为串口,串行接口 (Serial Interface)是指数据一位一位地顺序传送。实现双向通信就需要一对传输线,即TX与RX线。
    电路连接方式:
      串口如果要实现双向传输,则设备1与设备2,TX与RX要交叉相连。
    在这里插入图片描述
    串口数据解析
      利用电脑端的串口助手通过CH340串口模块将数据0x55发送出去,并通过逻辑分析仪来捕捉数据。下图为串口发送的数据,是以十六进制(hex)形式发送的。
    在这里插入图片描述
    逻辑分析仪捕捉数据:
    在这里插入图片描述
    我们看到逻辑分析仪成功将数据0x55捕捉到。接下来看串口的数据构成是怎样的。
    查阅资料,串口传输一帧数据如下图所示:
    在这里插入图片描述
    所谓串口的一帧数据即串行的发送一次数据(比如0x55(0101_0101))时TX数据线上的电平变化。由上图可知串口一帧数据的构成为:起始位(1bit)+数据(8bit)+奇偶校验位+停止位(1bit),8bit数据传输的方式为先低位(LSB)再高位(MSB)即通过(D0_D1_D2_D3_D4_D5_D6_D7)的顺序将数据依次放置在TX数据线上。我们再看我们所用的串口助手:
    在这里插入图片描述
    我们的设置为传输数据位为8bit,检验位为0bit即没有校验位,停止位为1bit。所以我们串口一帧数据的构成为:起始位(1bit)+数据(8bit)+停止位(1bit),所以串口一帧数据的传输单位为10bit,平时我们所说的串口传输单位为1Byte即8bit是指传输的有效数据,即起始位(1bit)+数据(8bit)+停止位(1bit)中的8bit数据,那为什么要多此一举的在收尾处各加1bit的数据呢,其实是为了接收设备能去正确的接收到8bit的有效数据,起始位相当于一帧数据的帧头,停止位相当于一帧数据的帧尾。
    起始位: 数据线TX由高电平变为低电平。
    停止位: 数据线TX由低电平变为高电平。
    起始位和停止位作用:
      如果接收设备检测到数据线由高电平变为低电平,就是接收到了来自发送设备的起始信号,表示开始数据的传输。如果接收设备检测到数据线由低电平变为高电平,就是接收到了来自发送设备的停止信号,表示一帧数据的结束,通过以上特点接收设备就可以将中间的8bit有效数据解析出来,这样就完成了一帧数据的传输。
    解析逻辑分析仪捕捉的数据
      由以上分析知串口传输一帧数据构成:起始位(1bit)+数据(8bit)+停止位(1bit)。
    解析逻辑分析仪获取的数据:
    在这里插入图片描述
    通道一:TX数据线
    通道二:数据解析
    通过通道一可以观察出一帧数据的格式确实为:起始位(1bit)+数据(8bit)+停止位(1bit)。中间8bit数据是通过(D0-D7:1010_1010)的顺序发送的,通过接收设备解析(高字节_低字节)为(D7-D0:0101_0101)即0x55。以上就为串口一帧数据的传输。
    ------所谓的波特率-----
    进一步观察逻辑分析仪:
    在这里插入图片描述
    由标号①和②知1bit数据的传输时间为8.667us,那传输速率不就是 1 8.667 ∗ 10 − 6 {1 \over {8.667*{{10}^{ - 6}}}} 8.6671061其实就是115200bit/s。再看看我们串口助手设置的波特率就为115200,这样是不是明白波特率是什么了,其实不就是1s传输115200bit数据。
    在这里插入图片描述
    详情可以看看什么是波特率,波特率怎么计算

    ★★★如有错误,欢迎指导!

    展开全文
  • 一、开发环境 C#、Visual Studio、控制台程序; 二、问题描述 在进行串口编程时,打开串口的参数为"..., 115200, Parity.Even, 6, StopBits.One。... 1)、串口传输是按每字节进行传输,每个字节用10...

    一、开发环境

    C#、Visual Studio、控制台程序;

    二、问题描述

    在进行串口编程时,打开串口的参数为"COM1", 115200, Parity.Even, 6, StopBits.One。其中6是数据位;

    结果在7E这个十六进制字节时,另一端接收到的是3E

    三、分析

    1、串口通讯协议基本格式(总长度10bit):

         1)、串口传输是按每字节进行传输,每个字节用10个bit进行打包;

         2)、10个bit具体格式如下:

                   起始位(1bit)   有效数据位(7/8bit)   校验位(1bit,可变)    停止位(1bit)

                   注:有效数据位和校验位总共8bit,当有校验位时,有效数据位为7bit,否则有效位未8bit

    2、其中打开串口是数据位参数代表取有效数据位中几个bit(从低位到高位);

         7E  的二进制 是 0111 1110,当数据位参数为6时,取6个bit进行传,其值为11 1110,高位01 给忽略了,而二进制11 1110 其       十六进制值为3E,故此接收端收到的是3E。

     

    四、解决方法和总结

           将数据位参数改成8即可,这样串口传输时,会取8bit进行传输,完整的将7E的所有二进制位都传输过去;

           总结:在进行串口传输时,数据位设置务必保证能够将一个完整的字节传输过去。

     

    展开全文
  • 今天做实验的时候,要用到两块32的板子进行通讯,在这里将其命名为A板和B板,使用的是32引脚直接引出的TTL串口,由于忘记带导线了,所以在做实验的时候找了两根长短不一的线,长线大概一米用在A板和B板的地线的连接...

           今天做实验的时候,要用到两块32的板子进行通讯,在这里将其命名为A板和B板,使用的是32引脚直接引出的TTL串口,由于忘记带导线了,所以在做实验的时候找了两根长短不一的线,长线大概一米用在A板和B板的地线的连接,然后短线大概半米用在B板子的接收端(RXD),相对应用在A板子的发送端(TXD),由于通讯的时候值只涉及A板向B板发送数据,所以B板的发送端和A板的接收端就没有再连接起来了,本来就是缺少导线的【笑哭】【笑哭】【笑哭】,关于电源线3.3V为什么不接,因为两块板子间的串口没有使用光耦进行隔离,就不需要接上电源线,反而接上电源线后,由于两块板子的电源可能会有点差别,有可能导致数据传输错误,如果使用了光耦进行隔离,那么必须接上电源线,通讯才可正常进行,

           那么在做实验的时候,和调试的时候同样的通讯协议,代码也是一样的,在A板向B板发送数据后,B板接收的数据总是错的,有点糊涂了,明明在调试的时候是收发正常的,数据并没有出现错误,然后检查波特率是否设置一样,A板和B板的波特率都是设置为9600bps,没有错误,用A板发送了好几次,B板接收到的数据都是错误的,想着是不是就是线的长度不同导致的,然后就再去找了根大约一米的线,给前面A板和B板的数据收发端进行连接,然后再进行通讯,通讯正常,A板发送的数据和B板接收的数据是吻合的。

           第一次遇到这种问题,所以记一下,以后用串口传输的时候要注意下。数据线和电源线的长度要差不多才行

    展开全文
  • 尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发...

    一、串口通信简介

    串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

    串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯根据通信双方的分工和信号传输方向可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。它们的主要区别在于其各自的电平范围不相同。

    二、串行通信的传输方向

    数据通信中,数据在线路上的传送方式(方向)可以分为:单工通信、半双工通信和全双工通信三种。

    1 单工(Simplex Communication )

    单工模式通信使用一根传输线,其数据传输是单向的,仅能沿一个方向,不能实现反向传输,即通信双方发送端和接收端的身份是固定的。通信双方中,一方固定为发送端,一方则固定为接收端。

    • 例子:早期的电视,广播,打印机

    2 半双工(Half Duplex Communication)

    半双工模式通信一般使用一根(或一对)传输线,数据可以沿两个方向传输,既可以发送数据又可以接收数据,但不能同时进行发送和接收,同一时刻只允许单方向传送。因此又被称为双向交替通信。数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。

    半双工模式收发两端都有发送器和接收器,通过收/发开关转接到通信线上。半双工通信中每端需有一个收发切换电子开关,若要改变传输方向,需由开关进行切换,通过切换来决定数据向哪个方向传输。由于要频繁切换信道方向,会产生时间延迟,故传输效率低些,但可以节约传输线路。半双工方式适用于终端与终端之间的会话式通信。

    • 例子:对讲机,RS485

    3 全双工(Full Duplex Transmission)

    全双工模式通信指数据由两根不同的数据线(可能还需要控制线、状态线、地线)传送,可以同时进行双向传输。即数据的发送和接收分流,通信双方都能在同一时刻进行发送和接收操作。从功能角度方面讲,全双工通信相当于两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。因此,通信系统的每一端都设置了发送器和接收器,来控制数据同时在两个方向上传送。

    与半双工模式相比,全双工可同时进行数据收发,且无需进行方向的切换,没有切换操作所产生的时间延迟。 显然,在其它参数都一样的情况下,全双工比半双工传输速度要快,信息传输效率要高。这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。

    • 例子:手机通话,RS422,RS232

    三、串行通信的错误校验

    在通信过程中往往要对数据传送的正确与否进行校验。校验是保证准确无误传输数据的关键。常用的校验方法有奇偶校验、代码和校验及循环冗余码校验。

    (1)奇偶校验

    在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。

    (2)常用算法校验

    代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。

    (3)循环冗余校验

    这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对存储区的完整性、磁盘信息的传输校验等。

    1 奇偶校验

    奇偶校验指的是在发送数据时,利用数据中“1”的个数是奇数或偶数作为检测错误的标志。通常在数据位后面设置1位奇偶校验位(1或0),用它使这组代码中“1”的个数为奇数或偶数。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收学符时,接收端对数据位“1”的个数进行校验,若发现发送端结果与不一致,则说明传输数据过程中出现了错误。此时接收端可以向发送端发送请求,要求重新发送一遍数据。

    • 奇校验:此时奇偶校验位的作用就是保证所有数据位加奇偶校验位的所有比特位中值为1的比特位的个数为奇数。
      若数据位中共有奇数个值为1的比特位,则此时奇偶校验位的值为0。
      若数据位中共有偶数个值为1的比特位,则此时奇偶校验位的值为1。
    • 偶校验:此时奇偶校验位的作用就是保证所有数据位加奇偶校验位的所有比特位中值为1的比特位的个数为偶数。
      若数据位中一共有奇数个值为1的比特位,则此时奇偶校验位的值为1。
      若数据位中一共有偶数个值为1的比特位,则此时奇偶校验位的值为0。

    例子

    假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(确保总共有奇数个1);如果是偶校验,则偶校验位为1(要确保总共有偶数个1)。

    优缺点

    奇偶校验的缺点很明显,首先,它对错误的检测概率大约只有50%。因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则无能为力了。另外,每传输一个字节都要附加一位校验位,对传输效率有较大影响。因此,在高速数据通讯中很少采用奇偶校验。奇偶校验可以发现错误,但不能纠正错误,也就是说它只能告诉你出错了,但不能告诉你怎么出错了,一旦发现错误,只能重发。

    奇偶校验优点也很明显,它很简单,因此可以用硬件来实现,这样可以减少软件的负担。因此,奇偶校验也被广泛的应用着。

    2 常用算法校验

    常用算法校验是指发送端将所发数据块进行累加和校验异或校验,在数据块末尾附加一个字节的校验字符。接收端接收数据,同时对数据块(除校验字节外)进行不进位求和字节异或,将所得的结果与发送端的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。

    例子-累加和校验
    累加和校验:
    要传输的数据为:01H、55H、D3H
    则进行不进位累加的校验和字节为:29H,即01H+55H=56H,56H+D3H=129H,舍去进位1,得29H。
    这里 29H 就是前三个字节的累加校验和。接收端收到全部数据后对前三个数据进行同样的累加计算,如果累加和与最后一个字节相同的话就认为传输的数据没有错误。

    异或就是对数据逐一异或计算(异或结果与下一个数据异或)。即接收端将所有字节(一般是两个16进制的字符)按位异或后,得到校验码后与发送端异或码的字符进行比较。相等即认为通信无错误,不相等则认为通信出错。

    优缺点

    累加和校验由于实现起来非常简单,也被广泛的采用。虽然其检错率优于奇偶校验,但这种校验方式的检错能力也较为一般,例如累加的其中一个字节多1,另一个字节少1,累加和不变,将原本是错误的通讯数据误判为正确数据。异或校验同理。累加和校验、异或校验也不能纠正错误。

    3 循环冗余校验

    这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。

    循环冗余码校验(Cyclical Redundancy Check, CRC)是利用除法和余数的原理来做错误侦测的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收端RX,RX对收到的数据重新计算CRC并与收到的CRC值相比较,若两个CRC值不同,则说明数据通信出现了错误,该数据包应该舍弃不用。
    在远距离数据通讯中,为确保高效而无差错的传送数据,必须对数据进行校验控制,而CRC是对一个传送数据块进行校验,是一种非常高效的差错控制方法。目前,主流的CRC可以分为以下几个标准:CRC-12码;CRC-16码;CRC-CCITT码;CRC-32码。
    CRC-12码通常用来传送6-bit字符串。CRC-16及CRC-CCITT码则用来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码用途有限。
    在数据存储和数据通信领域,CRC无处不在:著名的通信协议X.25的FCS(帧检错序列)采用的是CRC/CCITT,ARJ/LHA等压缩工具软件采用的是CRC32,磁盘驱动器读写采用的日式CRC16,通常用到的图像存储格式GIF/TIFF等也是采用CRC作为检错手段的。

    四、传输速率与传输距离

    数据传输速率指通信线上传输信息的速度,有比特率和波特率两种表示方法。比特率也称为信号速率,是指单位时间内所传送的二进制位代码的有效位数,以每秒多少比特计算,即bit/s;波特率是指调制速率,是脉冲信号经过调制后的传输速率,以波特(Baud)为单位,通常用于表示调制器之间传输信号的速率。

    1 传输速率

    比特率:每秒传输的二进制位数,也称为信号速率,单位为比特每秒(bit/s,bps)。

    波特率:每秒传输的码元符号的个数(码元传输速率),也称为调制速率,单位是波特(B)。它是对符号传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示,1波特即指每秒传输1个符号。通过不同的调制方法可以在一个符号上负载多个比特信息。

    比特率与波特的关系
    即比特率在数值上和波特率有这样的关系:

    I = S ∗ l o g 2 N I=S*{log_2{N}} I=Slog2N

    其中I为比特率,S为波特率,N为每个符号承载的信息量(一个脉冲信号所表示的有效状态),而 l o g 2 N {log_2{N}} log2N以比特为单位。即波特率与比特率的关系:比特率=波特率*单个调制状态对应的二进制位数。
    一个以X波特传送信号的线路,其传送二进制数据的速率不一定是X比特/秒,因为每个码元符号需要通过几个比特来表示,所以运送一个符号等于运送了几个比特。在二进制中脉冲(二电平)只有两种状态0或1,即 n=“2”,也就是说,信号速率与调制速率是一致的。如果使用多电平脉冲信号传输信息,信号速率与调制速率就不一致了。例如,若使用0、1、2、3、4、5、6、7共8个电平级,则需要,即3个比特来表示一个信号值,因而这种条件下比特率将是波特率的3倍。(当用二进制位表示一个码元时与比特率相等)

    例如假设数据传送速率为120符号/秒(symbol/s)(也就是波特率为120Baud),又假设每一个符号为八相调制(单个调制状态对应3个二进制位),则其传送的比特率为(120symbol/s) * (3bit/symbol)=360bps。只有在每个符号只代表一个比特信息的情况、或一些简单的调制方式下,例如基带二进制信号调制方式等,波特率与比特率才在数值上相等。 具体而言, 两相调制(单个调制状态对应1个二进制位)的比特率等于波特率;四相调制(单个调制状态对应2个二进制位)的比特率为波特率的两倍;八相调制(单个调制状态对应3个二进制位)的比特率为波特率的三倍,依次类推。

    在串行通信中,单个调制状态对应的1个二进制位,因此比特率和波特率往往相同。可以用”波特率”来描述数据的传输速率,即每秒钟传送的二进制位数。它是衡量串行数据速度快慢的重要指标。典型的“波特率”是1200,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800,921600等。有时也用”位周期”来表示传输速率,位周期是波特率的倒数。

    举例:RS485/RS232
    假设目前“波特率”为9600,指每秒传送9600个码元符号,则此RS485/RS232的传信率计算为 :

    I = S ∗ l o g 2 N = 9600 ∗ l o g 2 2 I=S*{log_2{N}}=9600*log_2{2} I=Slog2N=9600log22=9600bit/s

    通信线上所传输的字符数据(代码)是逐位传送的,1个字符由若干位组成,每一位即是一个码元。因此每秒钟所传输的字符数(字符速率)和波特率是两种概念。常有人把RS232的N误以为是每个“符号”(symbol)所夹带的信息量,但实际上每个“位元”(bit)即为一个“符号”(symbol)。

    在串行通信中,所说的传输速率是指波特率,而不是指字符速率。
    如在异步串行通信中,传输速率是9600b,而每个字符格式包含10位(1个起始位、1个停止位、0个校验位、8个数据位),这时每秒钟传送的字符数:9600/(1+8+0+1)=960个。

    2 传输距离与传输速率的关系

    串行通信直接传送串行信息位流的最大距离与传输速率和传输线的电气特性有关。通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离。

    串行通信中,数据位信号流在信号线上传输时,要引起畸变,畸变的大小与以下因素有关:

    波特率——信号线的特征(频带范围)
    传输距离——信号的性质及大小(电平高低,电流大小)
    当畸变较大时,接收方出现误码。
    在规定的误码率下,当波特率、信号线、信号的性质及大小一定时,串行通信的传输距离就一定。为了加大传输距离,必须加调制解调器。

    当传输线使用每0.3m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000 bps时,最大传输距离迅速下降,如9600 bps时最大距离下降到只有76m(约250英尺)。

    串口通讯的距离

    经实测,液晶显示屏控制 系统的RS232串行口在通讯波特率为28800bit/s时能够稳定传输达300米以上(传输介质为1箱五类线);当通讯距离大于 300米时,选择RS485通讯接口的液晶显示屏控制系统,此时只须在计算机的RS232串口端加配一个RS232/485转换器即可。

    115200bps最好的距离在30-50米之间(和线、232芯片有关),再远就有误码啦。15米还是很容易超的。232谁也不敢用300米的。

    传输电缆长度

    由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺,其实这个 4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺。

    传输距离

    由设备可提供端口的不同,故数据传输距离也不同。普通的RS232是常见的设备端口,其连接距离只有15米左右,如果连线设备距离相当远,则无法在使用RS232。采用RS424的设备,它的连接距离可达1000米。但当多个设备都是远距离时,给每个设备拉一条线会相当不方便,于是RS485便成为首选。RS485接口支持多个设备同时挂在一根导线上,它的总连线距离也可达1000米,而且一路上所有的设备都可以连接其上,相当方便。但它有一个限制:必须是半双工通信方式,即在同一时刻只能有一个设备进行数据发送,而其他设备只能接收。要保证这个条件必须依靠软件。

    3、发送/接收时钟

    在串行传输过程中,二进制数据序列是以数字信号波形的形式出现的,如何对这些数字波形定时发送出去或接收进来,以及如何对发/收双方之间的数据传输进行同步控制的问题就引出了发送/接收时钟的应用。

    在发送数据时,发送器在发送时钟(下降沿)作用下将发送移位寄存器的数据按串行移位输出;在接收数据时,接收器在接收时钟(上升沿)作用下对来自通信线上串行数据,按位串行移入移位寄存器。可见,发送/接收时钟是对数字波形的每一位进行移位操作,因此,从这个意义上来讲,发送/接收时钟又可叫做移位始终脉冲。另外,从数据传输过程中,收方进行同步检测的角度来看,接收时钟成为收方保证正确接收数据的重要工具。为此,接收器采用比波特率更高频率的时钟来提高定位采样的分辨能力和抗干扰能力。
      
    发送/接收时钟频率与波特率的关系:发/收时钟频率 =n*(发/收波特率 )

    4、波特率因子

    在波特率指定后,输入移位寄存器 / 输出移位寄存器在接收时钟 / 发送时钟控制下,按指定的波特率速度进行移位。一般几个时钟脉冲移位一次。要求:接收时钟/ 发送时钟是波特率的 16 、 32 或 64 倍。波特率因子就是发送/接收 1 个数据( 1 个数据位)所需要的时钟脉冲个数,其单位是个/位。如波特率因子为 16 ,则16 个时钟脉冲移位 1 次。 例:波特率 =9600bps ,波特率因子 =32 ,则接收时钟和发送时钟频率 =9600 × 32=297200Hz 。

    参考:
    【1】https://baike.baidu.com/item/%E6%B3%A2%E7%89%B9%E7%8E%87/2153185?fr=aladdin#reference-[3]-119333-wrap
    【2】https://baike.baidu.com/item/%E7%A0%81%E5%85%83/10525003
    【3】http://mayer.spaces.eepw.com.cn/articles/article/item/59707

    展开全文
  • 串口收不到数据或者收到错误数据 串口乱码总结

    万次阅读 多人点赞 2019-04-28 22:15:03
    1、查看你使用的USB转串口是3.3V的串口还是5V串口,如果发送方使用的是3.3V然后你使用的USB转串口是5V是可以收到数据的但收到的数据都是错误的 2、查看波特率、奇偶校验、停止位等是否设置正确。 3、如果是STM32,...
  • 打开串口后,就开始了自动接收数据,接收完成后,按下“停 止接收数据”;如果要发送数据,请点击“发送键”,发送完成,会弹出“发送完成”。 软件测试情况:发送功能用“超级终端多次测试”,10M内,没发生错误。...
  • 利用串口传输结构体数据

    千次阅读 2020-03-19 11:48:38
    写在前面: 本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎...结构体是一种数据的归类方式,相比数组或变量更具有整体全面性,例如一个数组只可以放一些按照元素顺序存放的单元变量,即 buff...
  • STM32串口双缓冲乒乓数据传输方式

    千次阅读 2016-10-18 18:37:07
    传输数据到某个位置,如果不用DMA,那要CPU参与操作,一个字节一个字节地搬,效率高 点的,就一个字一个字地搬.但当你用了DMA 后,那就是只需要设置:A.从哪里开始搬; B, 搬到哪里去;C以字节方式搬还是半字还是字;D:一共...
  • 串口传输文件

    2021-11-14 16:39:25
    本文主要叙述通过串口来进行文件传输 文章目录一、实验简介二、通过串口传输文件1、简单的对话2、文件的传输3、思考三、实验总结四、参考资料 一、实验简介 本次实验将首先通过串口来进行发送和接收信息,然后将...
  • 一个串口同时传输多个数据

    万次阅读 2016-05-02 16:29:12
    程序目标:实验中在调试程序时,需要在只用到一个串口的条件下,用上位机同时向单片机传送多个不同数据。 实现原理:1,用LabView编写的上位机,使用VISA向单片机中写入数据;多个数据之间用一些分隔符进行区分。 ...
  • STM32CubeMX-串口开启DMA进行数据传输

    千次阅读 热门讨论 2021-05-19 22:37:19
    STM32CubeMX笔记-串口开启DMA进行数据传输
  • 在一般的项目开发过程中,往往需要两块或以上单片机进行通信完成数据传输,例如四旋翼无人机在飞行过程中无线传输数据回到地面站,治疗仪器需要实时将患者和机器运转情况传回上位机平台,粮仓温控装置需将各种传感器...
  • 另外当对方向我发送一串数据,如果其中有0x11,那么我总是漏收此数,这是问题二。由于问题莫名其妙,以为是笔记本的USB转232线缆的问题,换,问题依旧。以为是对方设备的问题,采用串口调试助手模拟通讯设备与ARM板...
  • java读取串口数据

    2021-03-06 04:44:07
    //获取端口传输数据流 while (is.available() > 0) { Integer ii=new Integer(is.read()); byte bt=ii.byteValue(); ComArg.SerialBuff.put(bt); //if(!MemoryClass.getIni("RunUnderDebug","").equals("")...
  • 众所周知,串口都是十六进制进行通信,而我要做的是通过串口实时传输采集的数据。我采集的都是十进制的数字,怎么进行传输呢? 这里关于串口的几个知识要了解下: 串口是通过RX和TX两条线进行一位一位传输的通信...
  • 串口DMA传输模式

    2021-10-28 16:09:53
    DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬移数据,但是不需要占用 CPU,即在传输数据的时候, CPU 可以干其他的事情,好像是多线程一样。 一、DMA简介 (一)DMA系统...
  • 问题现象:使用串口转USB数据线连接电脑和串口设备,当串口设备长时间快速发送数据时,电脑会卡死(蓝屏或是不能再识别到COM口) 问题分析:应该是windows下的USB转串口线的驱动有问题 问题解决:在VMware虚拟机中...
  • 这个项目分为了两个部分,其中下位机的数据采集是使用STM32L0系列的开发板作为了主控器,温度采集模块是DB18B20,还有一个GSM模块,用于发送短信,比较简单的项目。上位机部分也就是使用pyserial模块来进行数据的接收...
  • 之前在做项目的时候,串口接收的数据要及时进行处理,虽然采用了自定义的串口协议,但是协议的包尾只有一个字节,经常判断不准数据是否接受完毕,所以就采用计时器+串口的方式来判定串口是否接受完成。 核心思想 ...
  • 另外当对方向我发送一串数据,如果其中有0x11,那么我总是漏收此数,这是问题二。 由于问题莫名其妙,以为是笔记本的USB转232线缆的问题,换,问题依旧。 以为是对方设备的问题,采用串口调试助手模拟通讯设备与...
  • 最近一个项目使用了嵌入式linxu串口通信,由于通信使用的是2进制数据,经常出现通信校验失败,数据帧大小没问题,就是校验出错c_iflag参数表键 值说 明IGNBRK忽略BREAK键输入BRKINT如果设置了IGNBRK,BREAK键输入将...
  • 深入剖析串口通信数据格式

    千次阅读 多人点赞 2019-05-10 21:43:05
    串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。 在串行通信中,数据在1位宽...
  • RS232串口通信的传输格式和接收过程

    千次阅读 2021-07-26 01:29:45
    描述串口是计算机上一种非常通用设备通信的协议(不要与通用...同时,串口通信协议也可以用于获取远程采集设备的数据串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是...
  • 首先说说之前存在的问题, 蓝牙在传输文件的时候,无论大小文件,当点击触摸屏,或者有USB detect中断,Wi-Fi寻找AP使能其内部中断,都会出现蓝牙传输被中断(终止传输)的现象。两个同样的设备进行传输时只有接受...
  • " Exit Sub End If End If err: If err.Number <> 0 Then MsgBox "错误代码:" & err.Number & vbCrLf & "错误信息:" & err.Description End Sub '端口事件启动Private Sub MSComm1_OnComm() Dim i% Case ...
  • 最近,在做基于stm32f401串口的ModBus协议通信,遇到了stm32串口发送数据的问题。花了一整天去查找问题,从ModBus协议格式、调度算法到串口配置,最终终于把问题解决,记录下来。  问题描述:  ModBus协议中配置...
  • 串口通信数据格式与解析

    万次阅读 2017-08-31 10:43:13
    串口通信的传输格式: 串行通信中,线路空闲时,线路的 TTL 电平总是高,经反向 RS232 的电平总是低。一个数据 的开始 RS232 线路为高电平,结束时 Rs232 为低电平。数据总是从低位向高位一位一位的传 输。示波器...
  • STM32 串口 发送 必须 先检测 状态,否则 第一个 字节 无法 发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,165
精华内容 9,266
关键字:

串口数据传输错误