SQL Server数据库在试验阶段能够比较完整地实现系统功能,实际使用时需要依据每个医院的实际情况进行调整。导医系统应用于实际医院时可能需要另外构建一个数据库服务器,并与医院现有的HIS系统进行连接,以共享一套病人挂号科室等其他信息。

3 应用程序

导医终端上的应用程序采用QT4编程实现[6]。QT是一个基于C++的图形用户界面库。它的跨平台特性比较好,编辑好的程序代码几乎不需做修改就可以编译出运行于其他平台的可执行程序。应用程序的核心是检测串口接收缓冲区,当串口接收缓冲区存在有效的病人ID号,即依据该ID号发起一次数据库连接与检索。不同于普通PC环境,在ARMLinux平台下,需要解决三个核心问题:ARM-Linux下串口通信、汉字字符集兼容和SQL Server数据库连接等。

3.1 ARM-Linux下串口通信

QT下没有提供串口通信的控件,但是提供了第三方的串口通信类qextserialport。本系统即是采用该类完成了ARM-Linux下的串口通信。该类继承自QIODevice类,可分为Win_QextSerialPort和Posix_QextSerialPort,分别支持Windows和Linux两种环境下的编译。在Linux下需要添加 #define _TTY_POSIX_宏定义,以确保选择正确的条件编译。通过以下代码即可打开串口ttySAC3,并设置波特率为9 600 Kb/s,无流控制和奇偶校验, 8位数据位,1位停止位。

port=new Posix_QextSerialPort(“/dev/ttySAC3”,

QextSerialBase::EventDriven);

port-》setBaudRate(BAUD9600);

port-》setFlowControl(FLOW_OFF);

port-》setParity(PAR_NONE);

port-》setDataBits(DATA_8);

port-》setStopBits(STOP_1);

3.2 字符集的转换

Linux系统下汉字一般采用Unicode编码,而Windows系统下汉字一般采用GBK编码。如果将检索的结果做了不正确的转化,则显示的汉字将出现乱码。这个问题可从以下两个方面来解决: