罗氏E601论文_黄阶胜 顾向明 李莹莹

(广东省中山市中医院检验科 广东 中山 528400)

摘要:探讨了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电化学发光免疫分析仪双向通迅程序。

1 Microsoft comm控件简介

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

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

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

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

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

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

SThreshold:设置并返回发送时产生ONComm 事件的字符数;

RThreshold:设置并返回接收时产生ONComm 事件的字符数;

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

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

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

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

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

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

2 罗氏E601电化学发光免疫分析仪与计算机串口联线

罗氏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 //设置通信端口号为com1ole_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()事件程序主要如下:

string ls_inputdata //读取的数据

Boolean ib_iseot = false

string is_enq = char(5), is_ack = char(6)

string is_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 //应答ackcase char(3),char(5)

ole_mscomm.object.output = is_ack //应答ackcase char(4)

is_buffer = is_buffer + char(4)

ole_mscomm.object.output = is_enq //应答enqcase 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)

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

ib_iseot = trueend 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 + 1end ifelse

ls_senddata = is_send

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

ib_iseot = trueend ifelse

ole_mscomm.object.output = is_eot

ib_iseot = falseend ifcase char(13)

if len(is_buffer) > 2 then

if mid(is_buffer,len(is_buffer) - 2,1) <> char(23) then

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

is_buffer = ''end ifelse

is_buffer = ''end ifcase 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 choosenext

5 讨论

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

参考文献:

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

[2] 何军,曲炜.PowerSeript 语言、事件与函数大全[M].北京:电子工业出版社,2000.

论文作者:黄阶胜 顾向明 李莹莹

论文发表刊物:《卫生部公告》2015年9期

论文发表时间:2016/1/26

标签:;  ;  ;  ;  ;  ;  ;  ;  

罗氏E601论文_黄阶胜 顾向明 李莹莹
下载Doc文档

猜你喜欢