针对串口通信,关于设置数据位长度对通信的影响,如图:

在串口数据通信中,会看到串口参数设置。其中“数据位”设置,共有四档选项,分别是8、7、6、5。那么改变这个参数会对数据的传输有什么影响呢?

我来做个试验,通过示波器观察通信过程,能够分析结果如下:

例如数据位设置为5。那么就相当于规定了每个传输字节只能由5个二进制位来表示,例如:11111,10110,01110等。也就是说,这个RS232口只能发送00000~11111这个范围内的数,如果发送一个比11111还大的数,例如11111+1,也就是100000,那么经过这个RS232口的处理以后,只会发送出去一个00000,而接收端只能接收到00000。这样看起来貌似发送的数据和接收的不一样,其实这是串口数据位长度决定了他会发送多少位数据,超出的位是不会被发送的。

通过示波器观察,我们就能清楚的看到,如果设备是正常的情况下,且串口发送端和接收端都设置数据位为5位,发送下面这些十六进制数,会显示出如下波形:

分别在串口调试软件的发送窗口输入上面的这四个十六进制数,就能通过示波器看到这些数字所对应的二进制码波形。数据位设置是5位,要从右往左查看波形,因为串口通信是先传输低位,后传输高位,所以要反过来读取二进制位。

通过上面的观察,我们可以确定,如果数据位设置是5位,那么我们可以发送的最大数字是0x1F,也就是二进制数11111B。超过0x1F的数就保留低五位,所构成的二进制数,就是能够被接收到的数;如果我们设置数据位是6位,那么我们可以发送的最大数字就是0x3F。超过0x3F的数就就保留低六位,所构成的二进制数,就是能够被接收到的数据。

另外,我们知道,一个ASCII码必须要用8位二进制数来表示,其中低7位表示字符,同时还要注意,在标准ASCII中,最高位(b7)用作奇偶校验位。这也就意味着如果串口传输的数据位设置是5或者6位,那么这种情况下,串口是无法发送出ASCII码表中数值大于11111B(十进制31)或者111111B(十进制63)的数所表示ASCII字符的。

比如我们设置串口数据位是5位,我们发送一个字母a,我们知道在字母a在ASCII码中的十进制数是97,二进制是1100001B,大于11111B。则此时只能传输出去后五位,也就是00001B,而接收端只会显示出十六进制数01,而不能显示出一个完整的字母a。只有数据为设置是7位和7位以上时,才能传输一个完整的ASCII字符。

Delphi 串口通信数据位长度对传输数据的影响 转的更多相关文章

  1. STM32 ------ 串口 数据位长度 和 奇偶校验位

    USART_InitStructure.USART_WordLength 的值是数据位长度+一个奇偶校验位(如果无奇偶校验则不加一)

  2. Delphi 串口通信(1)

    利用 Delphi实现串口通信的常用的方法有 3种: 一是利用控件,如 MSCOMM控件和 SPCOMM控件: 二是使用 API函数: 三是调用其他串口通信程序.其中利用 API编写串口通信程序较为复 ...

  3. QT 串口通信 数据16进制发送

    在QT中进行串口通信时,很多情况要用到发送16进制的数据.从网上找来了一段代码测试能用: static QByteArray QString2Hex(QString str) { QByteArray ...

  4. 【Delphi】基于状态机的串口通信

    通信协议 串行通信接口(如RS232.RS485等)作为计算机与单片机交互数据的主要接口,广泛用于各类仪器仪表.工业监测及自动控制领域中. 通信协议是需要通信的双方所达成的一种约定,它对包括数据格式. ...

  5. C#中的串口通信

    关于串行接口 串行接口(Serial port)又称“串口”,主要用于串行式逐位数据传输.常见的有一般电脑应用的RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工 ...

  6. VS编程,C#串口通讯,通过串口读取数据的一种方法

    一.可能需要的软件:1.虚拟串口vspd(Virtual Serial Port Driver,用来在电脑上虚拟出一对串口,模拟通讯. 2.友善串口调试助手,用来发送.读取数据. 二.思路1.查询本机 ...

  7. STM32学习笔记:【004】USART串口通信

    版本:STM32F429 Hal库v1.10 串口通信能够实现两块电路之间不同的通信,在开发中作为打印调试也是一门利器(printf重定向). 补充一点小知识: 1. weak修饰符修饰的函数,说明这 ...

  8. STM32 串口通信使用奇偶校验

    STM32串口通信如果使用奇偶校验,需要设置数据位长度为9bit USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USAR ...

  9. C# 编程实现串口通信

    http://blog.sina.com.cn/s/blog_6c67dab30101p3vn.html ----------------------------------------------- ...

随机推荐

  1. ps 快捷键

    1.前景色填充ALT+DEL 2.背景色填充CTRL+DEL 3.按D键可以以恢复默认的前景色(黑).背景色(白). 4.按X键可以切换前景色.背景色.

  2. 跨平台 c 开发库 tbox v1.6.0,支持跨平台协程

    http://www.oschina.net/news/78582/tbox-v-1-6-0

  3. idea新建maven项目时,mvn archetype:generate 速度缓慢

    原文 idea新建maven项目时,mvn archetype:generate 速度缓慢 1 现象: 用IDEA新建maven项目,填写完各种参数,创建时,控制台卡在“[INFO] Generati ...

  4. 275. H-Index II

    题目: Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optim ...

  5. Android 怎么使用Bitmap+Canvas 自适应屏幕

    我们可以使用Matrix 来放缩我们得到的Bitmap 从而使我们的BItmap适应我们的手机屏幕 首先我们得先获取我们的手机屏幕的大小 WindowManager wm = (WindowManag ...

  6. Android AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作

    AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似.都有两种相似的用法:(1)在指定时长后执行某项操 ...

  7. nodejs 文件上传

    var multipart = require('connect-multiparty'); var fs = require('fs'); var multipartMiddleware = mul ...

  8. Android之开发杂记(二)

    1.android 4.0 以后 高版本没有虚拟菜单键

  9. 新环境配置与使用Vim指南

    1.下载源码 git clone git@github.com:vim/vim.git 2.编译 1.安装依赖软件 sudo apt-get install libncurses5-dev libgn ...

  10. SHOI2008 题目总结

    感觉还是上海人出题水平高?这套题写得心旷神怡的...总之很难就是啦 由于我实在不适应博客园这种排版和字体..所以我的文章可能会特别难看大家见谅..说不定回头开发一个支持全局LaTeX的博客也不错?23 ...