5949|9

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口通信需要设置数据位吗, 如果需要, 为什么需要 [复制链接]

因为一个包由起始, 结束位环绕, 校验位也是固定的, 很容易算出数据位长度嘛, 是不是因为开始位是0, 结束位是1, 那么任意一位都可以解释成开始结束位, 因此需要在开始通信前指定数据位, 也就是说, 根本不是根据开始结束位判断一个包的, 而是靠长度: 每个包具有固定长度, 由此可推断, 当设置这些属性时, 必然通知了对端属性的改变, 而不是数据包中夹带了本身的格式信息?

最新回复

是的。LZ说的是对的。串口通信前双方都已经定好了一帧数据长度,而且根据开始位、数据长度、结束位来确认一帧。因为开始的时刻是随机的,所以有必要用开始位来定一帧的开始。而且一帧的数据里面并不含有这一帧长度的信息,是事先确定好的,这不像USB里面,在每一帧的开始含有这帧长度的数据。 这样,按道理说是可以定义一帧为任意长度,只要双方统一就行,比如一帧含有12000位。但实际中是不能这样做的,原因是串口通信是异步通信,双方去确定一帧中的每一位是根据自身的时钟来定的,传输的数据长了就会引起时钟误差的积累,造成后面数据的错位。 不知这样的答复符不符合你的要求。  详情 回复 发表于 2007-9-21 19:23
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
问题是 那为什么一般设置数据位 5 --- 8位呢, 按照我的上面的理解, 可以设置成任意大小啊
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在定标准的时候,只是针对一定的应用,而且标准是没有道理的

而且用的是民主集中制原则

只要保证多数人的利益,其它的嘿嘿,有本事能活下来你就自立门部去
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
因为一个包由起始, 结束位环绕, 校验位也是固定的, 很容易算出数据位长度嘛, 是不是因为开始位是0, 结束位是1, 那么任意一位都可以解释成开始结束位, 因此需要在开始通信前指定数据位, 也就是说, 根本不是根据开始结束位判断一个包的, 而是靠长度: 每个包具有固定长度, 由此可推断, 当设置这些属性时, 必然通知了对端属性的改变, 而不是数据包中夹带了本身的格式信息?
------------------------------------------------------------------
看了你说的这些,似乎很模糊呢?
串口通讯本身有自己的传输方式,波特率,检验,数据位数。如比较常用的:1位起始位,8位数据位,1位校验位,1位停止位。这只是规定了数据是如何传输的。
而帧作为数据最小的传输字节流,其本身一般会规定格式,如起始,命令,长度,数据,校验,结束。对于这些一般的包中都会包含,为什么要加这些,本身这是一个传输协议的标准,就象我们说的英语,只有2个人都知道这个单词,那才有交流的基础。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
一般来说,串口通信的的一个frame有多长,和什么时候改变,双方都知道的
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
看了你说的这些,似乎很模糊呢?
串口通讯本身有自己的传输方式,波特率,检验,数据位数。如比较常用的:1位起始位,8位数据位,1位校验位,1位停止位。这只是规定了数据是如何传输的。

---------------------------------------------------------------------------------

是很模糊, 刚刚接触, 我的问题就是数据位能不能任意, 譬如12000阿, 12000000000什么的
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
机器间的通信和人与人之间的交流是一样的
譬如人在交流时,需要有使用同一种语言来作为基础
同样的,机器在通信时,也需要同一种标准来作为通信的基础
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
机器间的通信和人与人之间的交流是一样的
譬如人在交流时,需要有使用同一种语言来作为基础
同样的,机器在通信时,也需要同一种标准来作为通信的基础
---------------------------------------------------------------
这些话对我毫无用处, 谢谢
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
to zylthinking()
数据位数任意?12000阿, 12000000000?
-------------------------------------
以我的理解你是不是想说传12000(整型数)和12000000000?
这个不是数据位数的问题
不管你串口以几位传输(一般是8位)
你传数的时候,如12000,那你可以制定规则,比如传的都是ascii
那么12000 = 0x31 0x32 0x00 0x00 0x00
如果你传的是个2字节的HEX码的话,那1200 = 0x2e 0xe0(先高后低)
这就是规则,关键是这个规则是怎么定的,只有通讯双方都知道这个规则,那发送方
发送到接受方才能把数据给识别出来,不然没办法通讯!等于就是没有交流的平台!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

10
 
是的。LZ说的是对的。串口通信前双方都已经定好了一帧数据长度,而且根据开始位、数据长度、结束位来确认一帧。因为开始的时刻是随机的,所以有必要用开始位来定一帧的开始。而且一帧的数据里面并不含有这一帧长度的信息,是事先确定好的,这不像USB里面,在每一帧的开始含有这帧长度的数据。
这样,按道理说是可以定义一帧为任意长度,只要双方统一就行,比如一帧含有12000位。但实际中是不能这样做的,原因是串口通信是异步通信,双方去确定一帧中的每一位是根据自身的时钟来定的,传输的数据长了就会引起时钟误差的积累,造成后面数据的错位。
不知这样的答复符不符合你的要求。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表