你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求助在STM32中实现面向字符的BSC协议,有没有哪位大佬有参...

[复制链接]
shengxiaozhu 提问时间:2020-11-12 10:02 /
终端通信协议

一、通信配置
通信方式:RS485

[td]
波特率
数据位
校验
停止位
1152008E1


1.关于协议1.1 面向字符的BSC协议
面向字符的同步方法也称“字符填充的首尾定界符法”。在该同步方法中,数据帧中的数据都被看作字符序列(所以称之为面向字符的同步传输),所有的控制信息也都是字符形式(当然数据的表示形式还是二进制的比特流),每个数据块的头部用一个或多个同步字符SYN来标记数据块的开始;尾部用字符ETX来标记数据决的结束。
面向字符的同步传输协议的典型代表就是IBM公司的BSC协议。BSC协议规定,链路上传送的数据必须是由规定字符集(可以是ASCII,或者EBCDIC(Extended Binary Coded Decimal Interchange Code,扩展二进制-十进制交换码))中的字符组成,控制信息也必须由同一个字符集中的若干指定的控制字符构成。
1.2 BSC控制字符和数据块结构
BSC协议与所有同步传输协议一样,也是一次可以传送由若干个字符组成的数据块(通常是一帧),而不是一次只传送一个字符。同时规定了十种特殊字符(称为通信控制字符)作为这个数据块的开始与结束标志,以及整个传输过程的各种控制信息标志(并不是每个数据块中都有这十种全部的控制字符)。这十种通信控制字符说明如下:
❏ACK(Acknowledge):确认标志,由接收端发出的,作为对正确接收到报文的响应。
❏DLE(Data Link Escape):转义标志,用于指示后面的字符是数据字符,而不是特殊控制字符。这是用来进行透明传输的,当在报文中也存在这十个控制字符时,在这些字符前加上DLE字符后,通知接收端把它们当作普通的报文处理,而不是作为控制字符来识别。具体将在本节后面介绍。
❏ENQ(Enquire):询问标志,用于请求远程站点给出响应。响应可能包括远程站点的身份或状态。
❏EOT(End of Transmission):发送完毕标志,用于表示一个或多个文本的发送结束,并拆除链路。
❏ETB(End of transmission Block):块终止或组终止标志,用于标志每个数据块的结束位置。仅在一个报文要分成多个数据块传输时才有此标志。
❏ETX(End of Text):文本终止标志,标志报文文本的结束。仅在一个报文不分成多个数据块传输时才有此标志。
❏NAK(Negative Acknowledge):否认标志,由接收端发出的,作为对未正确接收的报文响应。
❏SOH(Start of Head):报头开始标志,用于表示报文的标题信息或报头的开始。仅在报文的第一个数据块中才有此标志。
❏STX(Start of Test):文本开始标志,标志标题信息的结束和报文文本的开始。每个数据块均有此标志。
❏SYN(Synchronous):字符同步标志,用以实现通信双方的字符同步,或用于在无数据传输时保持同步。在每个数据块中均有此标志,而且通常是两个。
以上这十种通信控制字符所对应的ASCII码(ASCII中是用低7位表示一个字符的,最高位为校验码)或EBCDIC码值如表5-3所示。这些控制字符代码所对应的ASCII也可参见图4-7。这种通信控制字符中,在数据同步传输中起关键作用的就是SYN、SOH、STX、ETB、ETX、EOT这六种通信控制字符。
2.约定
本协议基于BSC协议,遵循BSC协议的通信规则,为防止与控制码冲突,报文均以json字符串的形式包装,约定报文规则如下:
  • 本协议使用ASCII字符集
  • 响应:

[td]
Byte1
Byte2
Byte3
Byte4
Byte5
Byte6
Byte7
Byte8
Byte9
SYNSYNSOHsrc addr@dest addrACK/NAKBCC(MSB)BCC(LSB)
ACK: 表示收到消息成功。NAK:表示收到消息错误或者BCC校验不一致,需要发送方重新发送消息,最多发送3次。响应超时时间: 1000ms
  • 二进制数据:需要转换成字符串形式,并添加前缀0b,例如:01100 :”0b01100”
  • 十六进制数据:需要转换成字符串形式,并添加前缀0x,后面的字符串大小必须是2的倍数(一个char类型由两个十六进制数组成),例如:fbae98:”0xfbae98”
  • SOH(标题):包含源地址(发送方地址)、目的地址(接收方地址)、路由指示
    约定:

0: 表示安卓机0xFF: 表示广播,广播消息不需要回复响应。
  • @: 表示地址分隔符,A@B表示消息从A发往B
例如:安卓主机发送指令给1号板,则指令内容如下:[td]
Byte1
Byte2
Byte3
Byte4
Byte5
Byte6
Byte7
n*byte
Byte(7+n+1)
Byte(7+n+2)
Byte(7+n+3)
SYNSYNSOH0@1STXETXBCC(MSB)BCC(LSB)


第一次接触这种协议不知道怎么下手请各位大佬清点。


收藏 评论0 发布时间:2020-11-12 10:02

举报

0个回答

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版