当前位置: 首页 > 期刊 > 《中国医疗管理科学》 > 20145
编号:13660339
罗氏E601电化学发光免疫分析仪双向通讯软件的的开发
http://www.100md.com 2014年10月1日 《中国医疗管理科学》 20145
     摘要:探讨了PowerBuilder 9.0环境下实现医学检验仪器与计算机双向通信的方法,详细介绍了如何利用PowerBuilder 9.0来开发罗氏E601电化学发光免疫分析仪双向通迅软件。

    关键词:PowerBuilder 9.0;双向通迅;电化学发光免疫分析

    实验室信息系统(LIS)对医学检验仪器数据的获取主要通过串行口通讯、USB端口通讯、TCP/IP通讯、打开数据库或文本文件直接读取等几种方法,其中通过串行口通信是最主要的方式,医学检验仪器大多都支持RS232标准。RS232通讯根据仪器的不同,主要有两种方式:单向通信、双向通信。单向通信:检验数据由仪器向LIS工作站单向传送,仪器只能传送分析数据,不能接受由LIS发出的任何指令。双向通信:与单向通信不同,信息不仅从仪器向LIS工作站传送,仪器也能接受从LIS传送的各种指令。双向通讯是效率最高的检验设备与实验室信息系统(LIS)的通讯模式,它的应用进一步优化了检验流程,提高了检验技师的工作效率,有效避免了检验样本与病人信息匹配错误的现象,减少了医疗差错。下面详细介绍了利用PowerBuilder 9.0来设计罗氏E601电化学发光免疫分析仪双向通迅程序。
, http://www.100md.com
    1 Microsoft comm控件简介

    Microsoft comm控件有许多重要的属性和事件,下面给出部分常用的属性:

    CommPort:设置并返回通信端口号;

    Settings:设置并返回波特率、校验位、数据位、停止位;

    PortOpen:设置并返回端口状态,也可以用于打开和关闭串口;

    OutBufferSize:设置并返回发送缓冲区的大小,以字符为单位;

    InBufferSize:设置并返回接收缓冲区的大小,以字符为单位;

    SThreshold:设置并返回发送时产生ONComm事件的字符数;
, 百拇医药
    RThreshold:设置并返回接收时产生ONComm事件的字符数;

    InputMode:设置并返回接收类型;

    InputLen:设置并返回从接收缓冲区读取的字符;

    Input:返回和删除接收缓冲区的字符;

    Output:写字符串到发送缓冲区;

    CommEvent:返回最近的通信事件或错误;

    OnComm事件:无论何时当CommEvent属性的值变化时,就产生OnComm事件,标志发生了一个通信事件或一个错误。

    2 罗氏E601电化学发光免疫分析仪与计算机串口联线
, http://www.100md.com
    罗氏E601电化学发光免疫分析仪与计算机串口联线如下图

    仪器端与计算机都为9孔母头,仪器端3和计算机端2对接,仪器端2和计算机端3对接,仪器端5和计算机端5对接,仪器端7和8短接,计算机端7和8短接,计算机端4和6短接。

    3 罗氏E601电化学发光免疫分析仪设置

    选择页面“综合功能”,然后选择子页面“系统”,把“条形码设置”中的“常规/急诊”设为“是”。 在“系统”画面上点击“通讯传输”按钮即可弹出窗口,选择子页面“通讯设置”中将“波特率”设为“9600”,将“奇偶校验位”设为“8Bit,NONE,1StopBit”,选择子页面“内容设置”,在“只传结果”前不要打勾,其它选项都打上勾。

    4 双向通讯主要代码

    本双向通信程序由PowerBuilder 9.0软件编写, 在通信窗口中插入mscomm32.ocx通信控件,控件名为ole_mscomm。初始化程序放在窗口的open()事件中。窗口的open()事件程序主要如下:
, 百拇医药
    ole_mscomm.object.commport = 1//设置通信端口号为com1

    ole_mscomm.object.settings = “9600,n,8,1” //波特率为9600bps,无奇偶校验,8 位数据位,1位停止位。

    if ole_mscomm.object.portopen = false then ole_mscomm.object.portopen = true //打开串口

    timer(5)

    数据处理放在窗口的timer()事件中。窗口的timer()事件程序主要如下:

    stringls_inputdata//读取的数据

    Boolean ib_iseot = false
, http://www.100md.com
    string is_enq = char(5), is_ack = char(6)

    stringis_buffer, is_send, ls_sendxm

    integer is_number, i,li_inputdatalens, li_pos

    ls_inputdata = ole_mscomm.object.input

    li_inputdatalens = len(ls_inputdata)

    for i = 1 to li_inputdatalens

    choose case mid(ls_inputdata,i,1)
, 百拇医药
    case char(0) ,char(2) ,char(10)//过滤

    case char(1)

    ib_iseot = false //初始化

    ole_mscomm.object.output = is_ack //应答ack

    casechar(3),char(5)

    ole_mscomm.object.output = is_ack //应答ack

    case char(4)

    is_buffer = is_buffer + char(4)

, http://www.100md.com     ole_mscomm.object.output = is_enq //应答enq

    case char(6)

    if ib_iseot = false then

    is_buffer = is_buffer + char(6)

    li_pos = pos(is_send,';')

    if li_pos > 0 then

    if is_number = 2 then

    ls_sendxm = mid(is_send,li_pos + 1,Len(is_send) - li_pos)
, http://www.100md.com
    ole_mscomm.object.output = ls_sendxm//向仪器发送测试指令

    ib_iseot = true

    end if

    if is_number = 1 then

    ls_sendxm = mid(is_send,1,li_pos - 1)

    ole_mscomm.object.output = ls_sendxm //向仪器发送测试指令

    is_number = is_number + 1

    end if

    else
, 百拇医药
    ls_senddata = is_send

    ole_mscomm.object.output = ls_sendxm //向仪器发送测试指令

    ib_iseot = true

    end if

    else

    ole_mscomm.object.output = is_eot

    ib_iseot = false

    end if

    case char(13)

    if len(is_buffer) > 2 then
, http://www.100md.com
    if mid(is_buffer,len(is_buffer) - 2,1) <> char(23) then

    this.wf_data(is_buffer) //结果数据处理

    is_buffer = ''

    end if

    else

    is_buffer = ''

    end if

    case char(23)//eot

    is_buffer = is_buffer + char(23)
, 百拇医药
    ole_mscomm.object.output = is_ack //应答

    case else

    is_buffer = is_buffer + mid(ls_inputdata,i,1)

    end choose

    next

    5 讨论

    本文通过一具体的例子分步骤介绍了如何在PowerBuilder环境下利用通讯控件MSComm控件来开发罗氏E601电化学发光免疫分析仪双向通信软件。掌握了以上基本技术,就可以稍加改变来开发罗氏C501全自动生化分析仪等罗氏仪器双向通信软件。

    [参考文献]

    [1] 朱有存,白青伟,杨晓荣,等.利用Mscomm32控件实现检验仪器联机[J].医疗卫生装备,2008,29(6):55-56.

    [2] 何军,曲炜.PowerSeript语言、事件与函数大全[M].北京:电子工业出版社,2000., http://www.100md.com(黄阶胜 顾向明 李莹莹)