3506|3

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

凌阳61单片机与外设串口通信,我有一个模块定义的协议如下文,请哪位高手帮我用C代码实现一下,谢谢! [复制链接]

NIBP 模块接口协议
数值计算:计算得到 收缩压,平均压,舒张压,脉率 。
1、物理特性
串行通讯方式:4800波特率
              8个数据位
                  1个停止位
                  无校验
                  无附加握手信号线(3线串口)
2、主机到模块通讯
    一个命令帧为8个字符结构:
      ab;;cd
其中:是文本起始字符的ASCⅡ码(02)
      ′ab′是定义为01-27的命令字符的2位ASCⅡ码
      ′cd′是定义为0-9,A-F的16进制校验和的2位ASCⅡ码
      是文本结束字符的ASCⅡ码(03)
      例如:02;;D8  发送命令2

主机到模块命令表

注意:        除了ABORT命令,其它命令在测量过程中均可接受,在压力计模式和电磁阀测试时被忽略。命令字串的发送间隔最少应保持50ms以上。测量及电磁阀检测会在完成后自动结束。

命令        校验和        功能
01        D7        启动测量——该命令开始一个测量周期,不同于STAT模式,该命令将初始化一个测量。
18        DF        请求数据(对状态报告帧的响应)


ABORT:
    在任何时候收到单字符‘X’将会引起模式ABORT所有动作,袖带放气、系统静止。
   

3、模块到主机通讯
注:压力单位为mmHg,脉率单位为BPM
    有三种数据帧格式发送给主机:
    (1)实时袖带压报告(rcpt)
     当模块在测量模式、压力计模式、电磁阀测试模式中时,以每秒5次的发生频率发生。
    (2)结束提示
    (3)状态报告
    只会在启动及收到数据请求命令(18)后才发送。

3.1格式1:rtcp报告
           帧结构为:abcCdse
其中:同上所述,为回车的ASCⅡ码(13)

   ‘abc’对应于当前袖带压的3位ASCⅡ码数字
   ‘d’是一位ASCⅡ码数字,用于表示袖带压错误,模块监视充气的速率,并向主机报告
    早期警告标志。该位只在测量期有效,并以下值:
              ‘0’——正常测量及作测量时
       ‘1’——在成人模式中检测到婴儿袖带
    ‘e’是一位ASCⅡ码数字,表示模式/状态报告,它可以是以下几个值:
       ‘3’——测量期间
       ‘4’——血压计模式期间
       ‘5’——看门测试期间
       ‘7’——电磁阀检测期间
例如:035C0S3
3.2格式2:结束提示
    帧结构为:999
表示rtcp已经结束,模块进入静止状态(手动模式或者下次测量倒计时结束之前的自动模式)

3.3格式3:状态报告
    帧结构为:
Sa;Ab;Ccd;Mef;Pghijklmno;Rpqr;Tstuv;;wx
其中:
   ‘a’是一位ASCⅡ码数字,给出状态:
       0 自检(只是启动信息)
       1 无错误,自启动定时器没有运作
       2 有错误发生
        6 无错误,自启动定时器运作

   ‘b’是一位ASCⅡ码数字,给出病人模式
       0 成人
        1 婴儿

   ‘cd’是两位ASCⅡ码数字,给出周期测量模式
       00 非自动周期(手动)
       01-90 选择的自动周期测量间隔
       99 STAT模式

   ‘ef’是两位ASCⅡ码数字,给出错误信息:

注:在模块复位后,‘ef’给出软件版本号
   ‘ghi’是3位ASCⅡ码数字,表示收缩压
   ‘jkl’是3位ASCⅡ码数字,表示舒张压
   ‘mno’是3位ASCⅡ码数字,表示平均动脉压(MAP)
   ‘pqr’ 是3位ASCⅡ码数字,表示脉率
     如果最后一次测量不成功,3位数字中的一个或多个将表示为--破折号,例如:“123---98;R104”
    表示血压为123/---mmHg,MAP为98mmHg,脉率为104BPM。
   ‘stuv’是4位ASCⅡ码数字,表示在自动周期测量中到下一次开始测量的剩余时间,单位为秒。如不是在自动周期测量模式,则这4位为空格。
   ‘wx’为2位ASCⅡ码16进制字符(0-9,A-F),表示在帧结构中前面可有字符的校验和(除了
例如:S1;A0;C03;M00;P---015025;R---;T    ;;D2

6、注意事项:(当检测到时可以忽略)
在复位后,模块在8秒内发出一个状态报告帧,格式为:
Sa;Ab;Ccd;Mef;P---------;R---;T   ;;wx
    其中:‘a’、‘b’、‘cd’为零
          ‘ef’固定值
          ‘wx’是本帧的校验和
模块可能会被查询(命令18)一个状态信息以确定复位是否成功。在返回的字符串中,‘a’
表示状态(0-ok,2-失败),‘ef’表示失败的原因。

    当一个错误发生时,STAT模式可以在5分钟的时间窗没有结束时,在被中断的周期点恢复,只需简单地发送一个启动命令(01)给模块。








例如:(以下为串口通讯时的监视数据,为十六进制)
发送命令:(通常两个命令连续发送,注意命令至少间隔50ms):
02        30        31        3B        3B        44        37        03        //ab;;cd
Stx  0         1  ;    ;   D  7  Etx      //发送开始命令01 及校验和 D7
02        31        38        3B        3B        44        46        03
Stx  1  8  ;    ;   D  6  Etx      //发送数据请求命令18 及校验和  D6


接收到的数据:
02 30 34 37 43 30 53 33 03 0d            //abcCdse  格式1 Stx 0  4 7  C  0 S  3 Etx CR   


02 39 39 39 03 0d                      //999  格式2
Stx 9  9  9 Etx  CR

S1;A0;C03;M00;P---015025;R---;T    ;;D2       //格式3


停止命令:
02        58        03
Stx  x  Etx     //发送停止命令(abort)  x   



即控制内容:开始测量,停止测量,
显示内容:平均压,收缩压,舒张压,心率,测量过程中的实时压力。

最新回复

mark  详情 回复 发表于 2009-8-10 10:24
点赞 关注

回复
举报

92

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
C不行,VB还可以
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个很简单
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
mark
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
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
快速回复 返回顶部 返回列表