lis通讯串口通讯协议.docx
- 文档编号:3825410
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:7
- 大小:20.30KB
lis通讯串口通讯协议.docx
《lis通讯串口通讯协议.docx》由会员分享,可在线阅读,更多相关《lis通讯串口通讯协议.docx(7页珍藏版)》请在冰豆网上搜索。
lis通讯串口通讯协议
竭诚为您提供优质文档/双击可除
lis通讯,串口通讯协议
篇一:
lis系统通讯程序原理与实现
篇二:
利用powerbuilder实现lis系统中的串口通讯
利用powerbuilder实现lis系统中的串口通讯
南晓北,书恒
(赤峰学院,内蒙古赤峰024000)
摘要:
介绍了如何使用powerbuilder中的mscomm控件来实现检验仪器与计算机之间的串口通讯。
关键词:
lis、mscomm控件、串口通讯
随着医院信息系统技术日趋成熟,如今医院信息系统在医院得到广泛应用。
检验信息系统(lis:
laboratoryinformationsystem)是医院信息系统中一个较大组成部分。
利用计算机对检验仪器进行数据的自动采集是医院检验科室信息化建设中的重要内容。
串口因其速度快所以是目前检验仪器大量采用的一种数据传输端口。
pb(powerbuilder)工具软件是sybase公司开发的分布式数据库应用程序的前端开发工具,它以功能强大、使用灵活的数据窗口,面向对象的、具有可视图形界面的开发能力等优势,因此深受广大数据库开发人员的青睐。
目前使用pb作为大型医院信息系统前端开发工具占据了很大比例,使用pb进行lis系统串口通讯程序的开发也是被广泛应用的一种方式。
一、mscomm控件常用的属性及通讯方法
在使用pb开发lis系统串口通讯程序应首先来了解一下微软的microsoftcommunicationscontrol(简称mscomm)控件,mscomm属于windows下串行通讯编程的activex控件,它为应用程序提供了通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
1、mscomm控件的常用属性
commport:
设置用户所选用的通讯端口号。
settings:
以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
portopen:
设置通讯端口的状态,可以打开(值为true)或关闭端口(值为False)。
input:
从接收缓冲区返回和删除字符。
output:
向传输缓冲区写一个字符串。
inbuffersize:
设置或返回接收缓冲区的大小,缺省为1024字节。
inbuffercount:
返回接收缓冲区内的等代读取的字节个数,设属性为0清除接收缓冲区。
outbuffersize:
设置或返回发送缓冲区,缺省为512字节。
outbuffercounter:
返回发送缓冲区内等待发送的字符数,可用0来清空缓冲区。
Rthreshold:
该属性确定当接收缓冲区内字节个数达或超过该值后就产生代码为comeventReceive的oncomm事件,设置位0,则不产生oncomm事件。
commevent:
有通讯错误或事件发生时产生oncomm事件,commevent事件的值可以用来确定引发oncomm事件的具体的错误或事件常用的有以下几种
comeventbreak:
接受到中断信号。
comeventRxover:
接收缓冲区溢出。
comeventtxFull:
发送缓冲区溢出。
comeventReceive:
接受到规定的字符数。
inputlen:
设置或返回接收缓冲区内用input读入的个数。
若取0,则读取整个缓冲区的内容。
2、mscomm控件的通讯方法
mscomm控件在处理串口通讯上有两种方法:
一是事件驱动法;二是查询法。
这两种方
法各自的特点如下:
(1)事件驱动法是利用mscomm控件的oncomm事件捕获并处理通讯错误或事件,是处理串行端口交互作用的一种非常有效的方法。
当串口接收到或发送完指定数量的数据时,或当状态发生改变时,mscomm控件都将触发oncomm事件,该事件也可以捕获通讯中的错误。
当应用程序捕获到这些事件后,可通过检查mscomm控件的commevent属性的值来获知所发生的事件或错误,从而执行相应的处理。
这种方法具有相应及时,可靠性高等优点。
(2)查询法是在每个重要的程序之后查询mscomm控件的某些属性(比如commevent属性和inbuffercount属性)的值来检测事件和通讯错误。
二、程序实例描述
在前面我们对mscomm控件有所了解之后,我们就可以将mscomm控件引入到程序中。
整个lis系统的数据流程包括his开出检验申请信息,lis主程序读取数据,仪器检验结果数据通过通讯程序写入lis结果数据表等。
本文所要研究的就是仪器检验结果通过通讯程序写入lis结果数据表这一程序实例。
第一步:
选择适合的数据库设计相关数据表(这个主要是根据使用需要和编程人员的使用习惯)就我看来使用中型数据库如:
sqlserver就可以。
第二步:
设计应用程序界面。
在这里主要说一下如何插入mscomm控件,在设计窗口插入mscomm控件的步骤:
选中createolecontrol在insertobject会话框中选中insertcontrol页卡中的microsoftcommunicationscontrol项,这便完成了添加mscomm控件。
如下图
第三步:
这一步是编写程序的重点与难点,在完成上面的界面设计之后我们就要为界面里的控件编写代码。
在界面设计时除mscomm控件外还有两项是必需要设计的。
一个是通讯端口选择,因为一台计算机有多个串口(com1,com2,……)如果一台计算机连接两台或更多的仪器时就要凭借通讯端口来区分数据和接收数据。
另一个是通讯参数配置,检验仪器进行数据传输时会根据仪器自身的参数来进行通讯,这些参数包括:
波特率,数据位,停止位,
校验位。
接下来我们来重点看一下对mscomm控件相关事件及相关函数的编写。
1、为mscomm控件编写oncomm事件
注:
代码中ole_comm_one为mscomm控件的名称
stringls_receipt_data
charlc_char_data
integerli_len,i
ls_receipt_data=ole_comm_one.object.input
ifgs_status=pthenreturn
li_len=len(ls_receipt_data)
fori=1toli_len
lc_char_data=mid(ls_receipt_data,i,1)
f_comm_char_monitor(lc_char_data)
next
2、f_comm_char_monitor函数:
它的功能是当有字符触发则进行接受,代码如下:
integerli_asc_value
li_asc_value=asc(lc_data)
choosecaseli_asc_value
casestx
gs_current_result=lc_data
caseetx
gs_current_result+=string(lc_data)
f_analyse_data(gs_current_result)//对接收的数据进行分析
gs_current_result=""
caseelse
gs_current_result+=string(lc_data)
endchoose
return0
3、f_analyse_data函数
它的功能是分析结果数据,分离出工作单号及结果(在下面代码中有被注释的定义参数,把它写进来是来讲述如何使用mscomm控件相关参数)。
integerblockseqoffset=2
integerblockseqlength=1
integerFuoffset=3
integerFulength=2
integersamplenooffset=5
//integersamplenolength=5
//integerdisknooffset=10
//integerdisknolength=1
//integerpositionnooffset=11
//integerpositionnolength=3
//integeridnooffset=14
//integeridnolength=13
//integerageoffset=27
//integeragelength=4
//integersexoffset=31
//integersexlength=1
//integerbldcoltimeoffset=32
//integerbldcoltimelength=10
integerchannelcountoffset=42
integerchannelcountlength=3
integerResultdataoffset=45
integerli_channel_count,i
stringls_block_seq,ls_fu,ls_channel_block
stringls_result_data
stringls_property_char
stringls_working_id
stringls_instru_item_code,ls_instru_item_hard_code
stringls_item_result
stringls_indicator
stringls_unit
ls_result_data=ls_data
ls_fu=mid(ls_result_data,Fuoffset,Fulength)
ifnot(ls_fu=n1orls_fu=n2orls_fu=n1orls_fu=n2)thenw_main.tab_show.tabpage_current_result.mle_current_result.text=ls_datareturn1
endif
ls_block_seq=mid(ls_result_data,blockseqoffset,blockseqlength)
li_channel_count=integer(trim(mid(ls_result_data,channelcountoffset,channelcountlength)))
ifls_block_seq=1then//消息开始记录
g_struc_result.count=0
endif
fori=0toli_channel_count-1
ls_instru_item_hard_code=trim(mid(ls_result_data,Resultdataoffset+i*10+1,3))
ls_instru_item_code=profilestring(gs_ini_file,itemcodealia,
ls_instru_item_hard_code,ls_instru_item_hard_code)
ls_unit=profilestring(gs_ini_file,itemunits,ls_instru_item_hard_code,)
ls_item_result=trim(mid(ls_result_data,Resultdataoffset+i*10+4,
6))
ls_indicator=trim(mid(ls_result_data,Resultdataoffset+i*10+10,1))g_struc_result.count++
g_struc_result.item_no[g_struc_result.count]=g_struc_result.countg_struc_result.result[g_struc_result.count]=ls_item_result
g_struc_result.instrument_item_code[g_struc_result.count]=ls_instru_item_code
g_struc_result.normal_indicator[g_struc_result.count]=ls_indicatorg_struc_result.units[g_struc_result.count]=ls_unit
next
ifls_block_seq=:
then//消息结束记录
g_struc_result.result_datetime=datetime(today(),now())
ls_working_id=string(integer(mid(ls_result_data,samplenooffset+(5-gi_samplenolen),gi_samplenolen)),Fill(0,gi_samplenolen))
g_struc_result.working_id=ls_working_id
ifw_main.ib_display_resultthen
w_main.wf_display_result(g_struc_result)
endif
w_main.wf_save_result()
g_struc_result.count=0
endif
Return0
上面描述的是在程序中最为重要的事件及两个函数,还有其它的细节(如:
建立数据窗口向数据库插入检验结果数据等等)因其不是实现检验仪器与计算机通讯的重点所以在这里不作过多累述。
三、结论
在编写lis通讯程序时除对编程方法熟练外还要对检验仪器有基本的认识,最好是能够掌握其使用方法及检验项目的相关知识。
通过上述对mscomm控件使用方法及实例完全可以实现医院检验科检验数据的自动采集,也能够对医院检验方面的信息系统建设起到一定的帮助作用。
参考文献:
[1]刘恩博.组态软件数据采集与串口通信测控应用实战.人民邮电出版社.20xx
[2]李朝青.pc机及单片机数据通信技术[m].北京:
国防工业出版社,20xx
[3]范逸之.Visualbasic与Rs232串行通信控制.北京:
中国青年出版社,2000
篇三:
串口通信的接线方法
目前较为常用的串口有9针串口(db9)和25针串口(db25),通信距离较近时( 1、db9和db25的常用信号脚说明
2、Rs232c串口通信接线方法(三线制)
首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:
同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连;
两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)
图2
上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收gps数据或电子罗盘数据,只要记住一个原则:
接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。
3、串口调试中要注意的几点:
不同编码机制不能混接,如Rs232c不能直接与Rs422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接;
线路焊接要牢固,不然程序没问题,却因为接线问题误事;
串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果;
强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。
Rs232c标准串口接线方法
(第二版)
检验仪器与微机的通讯主要是以Rs232c标准接口为主,而串口的接线方法也有一定的标准,在此谈谈几种常用的串口接法,仅作参考:
一、标准接法
1、9对9(包括9针对9孔,9孔对9孔,9针对9针):
说明:
以下的孔、针指串口线两端的串口,不过2、3有可能不交换2-------------3
3-------------2
4-------------6
5-------------5
6-------------4
7-------------8
8-------------7
2、9对25(包括9孔对25孔,9孔对25针)
2-------------3(备注:
2、3有可能不交换)
3-------------2
4-------------6
5-------------7
6-------------20
7-------------5
8-------------4
二、特殊接法
关于串口的非标准接口一般需要参考仪器说明书或者咨询仪器厂家才能获知,下面列举几种常见的特殊接法(每台仪器的具体串口具体接法可参考lis事业部“仪器设置”文档库):
1、9孔对9针(h100尿液分析仪)
2--------------2
5--------------5
2、9孔对9孔(4-channel半自动血凝仪)
9孔对9孔,一一对应,全接。
3、9对25(c100尿液分析仪)
2--------------2
3--------------3
5--------------7
25串口中,4和5短接,6和20短接,
25串和9串间另接一根线,均焊在两头的铁皮外壳上用做地线。
4、9孔对电话线接口(medicaeasybloodgas血气分析仪端为电话线口)电话线一端:
线头向下,金属片面对自己从左向右分别是1,2,3,4,5电话线口---9孔串口
1--------------5
2--------------8
3--------------2
4--------------7
5--------------3
三、苹果机与pc机的串口接法
1、apple(供苹果机端用的8针串口)pc机25femle(孔)串口
5------------------2
3------------------3
4------------------7
1------------------5
2------------------4
2、apple(供苹果机端用的8针串口)pc机9femle(孔)串口
5-------------------3
3------------------2
4------------------5
1---------
---------8
2------------------7(有可能7、8要对换)
3、apple(苹果机自身的8孔串口,类似于ps/2口)苹果机的25male(针)串口
5-----------------3
3-----------------2
4------------------7
1------------------4
2------------------5
4、苹果机的25femle(孔)串口pc机25femle(孔)串口
2-----------------3
3------------------2
4------------------5
5------------------4
7------------------7
目前较为常用的串口有9针串口(db9)和25针串口(db25),通信距离较近时( 1.db9和db25的常用信号脚说明
9针串口(db9)25针串口(db25)
针号功能说明缩写针号功能说明缩写
1数据载波检测dcd8数据载波检测dcd
2接收数据Rxd3接收数据Rxd
3发送数据txd2发送数据txd
4数据终端准备dtR20数据终端准备dtR
5信号地gnd7信号地gnd
6数据设备准备好dsR6数据准备好dsR
7请求发送Rts4请求发送Rts
8清除发送cts5清除发送cts
9振铃指示dell22振铃指示dell
2.Rs232c串口通信接线方法(三线制)
首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:
同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连
·同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连;·两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)
上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收gps数据或电子罗盘数据,只要记住一个原则:
接收数据针脚(或线)与发送数据针脚(或线)相连,彼此交叉,信号地对应相接,就能百战百胜。
3.串口调试中要注意的几点:
串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果;强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。
单工、半双工和全双工的定义
如果在通信过程的任意时刻,信息只能由一方a传到另一方b,则称为单工。
如果在任意时刻,信息既可由a传到b,又能由b传a,但只能由一个方向上的传输存在,称为半双工传输。
如果在任意时刻,线路上存在a到b和b到a的双向信号传输,则称为全双工。
电话线就是二线全双工信道。
由于采用了回波抵消技术,双向的传输信号不致混淆不清。
双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。
奇偶校验
串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符‘e’,其各位为:
0100,0101=45h
d7d0
由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。
我们把如何发现传输中的错误,叫“检错”。
发现错误后,如何消除错误,叫“纠错”。
目前较为常用的串口有9针串口(db9)和25针串口(db25),通信距离较近时(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lis 通讯 串口 协议