医用串口采集开关手柄简易制作

2020-03-02 11:46:47
技术与市场 2020年1期
关键词:接收数据发送数据振铃

(深圳市保健委员会办公室综合门诊部信息科,广东 深圳 518010)

0 引言

医院医技科室人员常常需要简易手柄来实现人与医疗设备或者工作站的交互。比如超声科室,医生采集图像的时候,需要采集手柄,在按下按键时候,实现静态或者动态图像的采集;胃肠镜室医务人员需要脚踏开关来实现胃肠镜的图像静态或动态采集;TCD也需要手柄来实现人员与设备的交互。手柄虽然只是较小的一个零配件,但确实能给相关人员的工作带来很大便利。介绍一种基于9针串口的简易制作和相关的捕获和调用按键信号的软件开发。

1 串口介绍

串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。串行通信的距离可以从几米到几千米;根据信息的传送方向,串行通信可以进一步分为单工、半双工和全双工三种。

串口有9针和25针,现在的电脑配备25针的较少,本文介绍的手柄基于常用的9针RS-232串口制作。在没有串口的电脑上,可以增加com口转换器,从USB扩展出串口。

2 串口手柄制作

串口分公口和母口,但针脚含义一样。

1)数据载波检测DCD 8数据载波检测DCD。

2)接收数据RXD 3接收数据RXD。

3)发送数据TXD 2发送数据TXD。

4)数据终端准备DTR 20数据终端准备DTR。

5)信号地GND 7信号地GND。

6)数据设备准备好DSR 6数据设备准备好DSR。

7)请求发送RTS 4请求发送RTS。

8)清除发送CTS 5清除发送CTS。

9)振铃指示RI 22振铃指示RI。

在做通信的时候,一般三根线连接即可。即2~3交叉,5对5。但串口手柄不是通过传递数据来捕获按键信息,而是触发TTL上升沿或下降沿。所以在连线的时候,只需要连接串口4端和6端,分别和按键两端连接。

3 软件

电脑端主要是捕获简易手柄开关的上升沿或下降沿TTL信号。串口开发技术比较古老,有多种实现方法。在WINDOWS操作系统下,可以用API、MSCOM、第三方串口控件调用等多种方法。本文采用DELPHI介绍软件方面的开发,使用第三方控件APRO实现。打开DEPHI,安装TurboPower Async Professional组件(http://sourceforge.net/projects/tpapro)。APRO用触发器(trigger)来触发通信会话,有4类触发器。

1)Data available trigger(数据可用触发器)——接收的数据是可用的。

2)Data match trigger(数据匹配触发器)——特殊的字符或者字符串被接收。

3)Status trigger(状态触发器)——状态将被处理。

4)Timer trigger(时间触发器)——监控时间是否超时。

触发器可以添加、激活、修改或者重新激活,我们使用的是状态触发器。打开DELPHI,点击“New”,“Application”新建工程。在Form上拖放TApdComPort和TMemo控件。增加变量 FootSwichTimeStart,FootSwichTimeThresh:integer; //脚踏开关控制myhandle:THandle; //句柄

bdown : boolean ;//控制按键是否按下

fcnt : integer ; //按键按下次数,按一次增加一次

在TApdComPort的OnTrigge事件中,双击增加捕获事件。为了防止误操作或者多次点击多次响应的情况发生,增加了两次捕获时间间隔。只有超过间隔时间,点击才算有效。在每次有效点击后,重新激活状态触发器,等待下次触发。

procedure TForm1.ApdComPort1Trigger(CP: TObject;Msg,TriggerHandle

Data: Word)

var

s:string

begin

case msg of

apw_TriggerStatus

begin

//防止误按,间隔500 * cpu 后才允许再按

if gettickcount()-FootSwichTimeStart>FootSwichTimeThresh then

begin

FootSwichTimeStart:=gettickcount

bdown:=not bdown

if bdown then

begin

ApdComPort1.setStatusTrigger(myhandle,msDSRDelta or msCTSDelta,true)

exit

end

fcnt:=fcnt+1

memo1.lines.add(inttostr(fcnt))

end

ApdComPort1.setStatusTrigger(myhandle,msDSRDelta or msCTSDelta,true)

end

end

end

双击窗体页面,在OnCreate事件中,指定使用的串口号,添加状态触发器。

procedure TForm1.FormCreate(Sender: TObject)

begin

fcnt:=0; //初始化按键次数为0

//打开脚踏开关端口

try

if ApdComPort1.Open then ApdComPort1.Open:=false

ApdComPort1.ComNumber:=1 //串口编号

ApdComPort1.Open:=true //打开指定串口

FootSwichTimeStart:=0 //开始时间

FootSwichTimeThresh:=500 //设置限定时间是500次 X cpu frequency

myhandle:=ApdComPort1.AddStatusTrigger(stModem)

ApdComPort1.setStatusTrigger(myhandle,msDSRDelta or msCTSDelta,true)

bdown:=false

finally

end

end

为了防止误按,增加了2次按下时间间隔变量。每按一次,文本框显示的数据就累加1次。

4 结语

笔者介绍了一种用COM串口实现的简易图像采集按键手柄开关和相关捕获软件开发,可用于相关仪器使用。但这种按键开关只是基于简单的TTL上升沿或者下降沿捕获,电气接口过于简单,在使用中偶尔会出现捕获不到的情况,需要重新进入软件系统。但因为便宜简单,在实际中还是有一定的价值,相关的代码也可以在软件开发中直接使用。

猜你喜欢
接收数据发送数据振铃
移动自组网中MAC层协议研究
冲激噪声背景下基于幅度预处理的测向新方法*
电讯技术(2021年10期)2021-11-02 01:25:36
振铃现象对心电图分析和诊断的影响
低复杂度多输入多输出雷达目标角度估计方法
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
通信技术(2018年10期)2018-10-15 07:30:00
家庭网关振铃业务配置策略研究
使用IPSec安全传输数据
单片机模拟串口数据接收程序的实现及优化
图像缩放中一种去振铃算法的研究与硬件实现