9位通讯格式,该如何设置?大哥大姐来帮帮忙好么?

yyxa82326 2007-01-25 09:00:38
通讯协议是:采用8051异步主从9位通讯协议,起始 D0,D1,D2,D3,D4,D5,D6,D7,D8 停止(说明:起始位1位,D0-D8数据或地址位,D8为数据/地址位的区别位,D8=0表示数据,D8=1表示地址。),请问各位大哥要满足这种通讯协议该如何设置
mscom485.Settings = "4800,m,8,1"
buffer = arr
mscom485.Output = buffer

Select Case m_CmdTmp.CmdType
Case "00", "02", "03", "04", "05"

ReDim arr(2)
arr(0) = Val("&H" & m_CmdTmp.CmdType) '命令号
arr(1) = 0 '传送字节数
arr(2) = Val("&H" & m_CmdTmp.PlantAddr) + arr(0) + arr(1) '校验和

mscom485.Settings = "4800,s,8,1"
buffer = arr
mscom485.Output = buffer

timer485.Enabled = True
m_b485Busy = True '端口忙 ,正在通讯

以上是别人写的程序,但是我不是很懂,为什么mscom485.Settings = "4800,m,8,1"后,还要设置mscom485.Settings = "4800,S,8,1",M(标志位)怎么处理呢?
...全文
252 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
akunkeji 2007-02-02
  • 打赏
  • 举报
回复
这是典型的Mark/Space校验方式,使用这种校验方式用户可自定义校验位的状态(Mark/Space)即是(1/0),在通讯过程中该校验位可能会根据和下位机的约定进行变换.

如:
MSComm1.Settings="9600,M,8,1" 。其中M为Mark,是把字符校验位置1.
MSComm1.Settings="9600,S,8,1" 。其中S为Space,是把字符校验位置0.
yyxa82326 2007-02-02
  • 打赏
  • 举报
回复
555
yyxa82326 2007-01-25
  • 打赏
  • 举报
回复
不要这样嘛,555,肯定有人知道的!完整的代码是这样的:
ReDim arr(0)
arr(0) = Val("&H" &m_CmdTmp.PlantAddr)

mscom485.Settings = "4800,m,8,1"
buffer = arr
mscom485.Output = buffer

Select Case m_CmdTmp.CmdType
Case "00", "02", "03", "04", "05"

ReDim arr(2)
arr(0) = Val("&H" & m_CmdTmp.CmdType) '命令号
arr(1) = 0 '传送字节数
arr(2) = Val("&H" & m_CmdTmp.PlantAddr) + arr(0) + arr(1) '校验和

mscom485.Settings = "4800,s,8,1"
buffer = arr
mscom485.Output = buffer

timer485.Enabled = True
m_b485Busy = True
guyehanxinlei 2007-01-25
  • 打赏
  • 举报
回复
无能为力啊!
yyxa82326 2007-01-25
  • 打赏
  • 举报
回复
谁来顶一下啊
yyxa82326 2007-01-25
  • 打赏
  • 举报
回复
没人进来看看吗?
yyxa82326 2007-01-25
  • 打赏
  • 举报
回复
自己顶一下
yyxa82326 2007-01-25
  • 打赏
  • 举报
回复
自己顶起来,我就不相信没人知道回答这个问题!

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧