医院输液监测系统计算机监测界面设计指导Word下载.docx
- 文档编号:20312331
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:24
- 大小:76.60KB
医院输液监测系统计算机监测界面设计指导Word下载.docx
《医院输液监测系统计算机监测界面设计指导Word下载.docx》由会员分享,可在线阅读,更多相关《医院输液监测系统计算机监测界面设计指导Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
2.程序运行正常,能通过串口与单片机进行通信。
3.程序调试后存在盘上。
4.写出设计报告,要求有如下内容:
任务。
设计思路与框图。
工具软件介绍。
界面设计裁图及说明。
关键程序说明。
程序调试记录及说明。
运行结果及说明。
收获.体会等。
参考文献。
七、参考资料:
1.朱定华.微型计算机原理及应用.电子工业出版社,2000.1
2.吴金戌.8051单片机实践与应用.清华大学出版社,2002.9
3.张志明.C++语言与面向对象的设计.重庆:
重庆大学出版社.2001.9
4.龚建伟、熊光明.VisualC++/TurboC串口通信编程实践.北京:
电子工业出版社,2004.10
5.杨鸿雁.PowerBuilder8.0实例入门.海洋出版社,2002.6
6.李朝青.PC机及单片机数据通信技术.北京航空航天大学出版社,2001
7.李朝青.单片机原理及接口技术.北京航空航天大学出版社,1998.11
8.杨小川.PROTELDXP设计指导教程.清华大学出版社,2003.11
9.张龙祥.数据库原理与设计.人民邮电出版社,2002.7
10.余学飞.医学电子仪器原理与设计.华南理工大学出版社,2003
11.新电脑课堂.VisualC++编程篇.北京:
电子工业出版社,2004.1
12.求是科技.单片机通信技术与工程实践.北京:
人民邮电出版社,2005.1
13.甘玲、邱劲.面向对象技术与VisualC++.北京:
清华大学出版社,2004.8
14.http:
//www.healthAtoZ.com/
15.http:
//
16.http:
17.http:
附参考实例:
主界面程序设计
医院输液监测系统运行时的主界面如图3-2所示。
我们用VisualC++6.0编制一个基于对话框的应用监测程序,主界面对话框类名是“CHospitalDlg”。
图3-2医院输液监测系统监测界面
下面是主界面初始化时执行的代码,主要起到初始化串口、设置定时器时间等作用,代码如下:
BOOLCHospitalDlg:
:
OnInitDialog()
{
CDialog:
OnInitDialog();
//Add"
About..."
menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&
0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<
0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->
AppendMenu(MF_SEPARATOR);
AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'
smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
//TODO:
Addextrainitializationhere
m_Number.SetCurSel(0);
//初始选择串口1
m_Speed.SetCurSel(4);
//初始选择4800
m_Parity.SetCurSel(0);
//初始选择NONE
m_DataBits.SetCurSel(0);
//初始选择8
m_StopBits.SetCurSel(0);
//初始选择1
m_hIconRed=AfxGetApp()->
LoadIcon(IDI_ICON_RED);
m_hIconOff=AfxGetApp()->
LoadIcon(IDI_ICON_OFF);
//m_hIconGreen=AfxGetApp()->
LoadIcon(IDI_ICON_GREEN);
m_nSpeed=4800;
m_nNumber=1;
m_cParity='
N'
;
m_nDataBits=8;
m_nStopBits=1;
m_dwCommEvents=EV_RXFLAG|EV_RXCHAR;
CStringstrStatus;
if(m_Port.InitPort(this,m_nNumber,m_nSpeed,m_cParity,m_nDataBits,m_nStopBits,m_dwCommEvents,512))
m_Port.StartMonitoring();
strStatus.Format("
STATU:
COM%dOPENED,%d,%c,%d,%d"
m_nNumber,m_nSpeed,m_cParity,m_nDataBits,m_nStopBits);
//初始时,串口指示灯亮,实时监测灯灭
m_ctrlIconOpenOff2.SetIcon(m_hIconRed);
m_ctrlIconOpenOff1.SetIcon(m_hIconOff);
//"
当前状态:
串口打开,无奇偶校验,8数据位,1停止位"
);
else
AfxMessageBox("
没有发现此串口或串口被占用!
"
//提示信息
m_ctrlIconOpenOff2.SetIcon(m_hIconOff);
m_ctrlPortStatus.SetWindowText(strStatus);
//ShowWindow(SW_SHOW);
//激活窗口,并以当前的大小和位置显示
m_ctrlAutoClear.SetCheck(0);
//初始化未选中“自动清空”
m_ctrlStopDisp.SetCheck(0);
//初始化未选中“刷新显示”
m_animIcon.SetImageList(IDB_ANIM_IMGLIST,4,RGB(0,0,0));
SetTimer(1,1000,NULL);
//设置定时器,定时时间控制动作的快慢
SetTimer(2,10000,NULL);
UpdateData(FALSE);
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
}
在主界面设计中,使用了与下位机进行串口通信的CserialPort类,CserialPort类是由RemonSpekreijse提供的免费串口类,它是一个非常好用的多线程串口编程工具,用它可以很轻松地完成一般串口编程任务,并且与MSComm控件(MicosoftCommunicationControl控件)相比,这个类打包时,不需要加入其他的文件,而且函数都是开放透明的,允许我们进行改造。
其工作流程如下:
首先设置好串口参数,再开启串口监测工作线程,串口监测工作线程监测到串口接收到的数据、流控制事件或者其他串口事件后,就以消息方式通知主程序,激发消息处理函数来进行数据处理,这是对接收数据而言的;
发送数据可直接向串口发送。
CserialPort类定义的消息如表3-1所示。
消息名称
消息号
功能说明
WM_COMM_BREAK_DETECTED
WM_USER+1
检测到输入中断
WM_COMM_CTS_DETECTED
WM_USER+2
检测到CTS(清除发送)信号状态改变
WM_COMM_DSR_DETECTED
WM_USER+3
检测到DSR(数据设备准备就绪)信号状态改变
WM_COMM_ERR_DETECTED
WM_USER+4
发生线状态错误(包括CE_FRAME,CE_OVERRUN和CE_RXPARITY)
WM_COMM_RING_DETECTED
WM_USER+5
检测到响铃指示信号
WM_COMM_RLSD_DETECTED
WM_USER+6
检测到RLSD(接收线信号)状态改变
WM_COMM_RXCHAR
WM_USER+7
接收到一个字符并已放入接收缓冲区
WM_COMM_RXFLAG_DETECTED
WM_USER+8
检测到接收到字符(该字符已放入接收缓冲区)事件
WM_COMM_TXEMPTY_DETECTED
WM_USER+9
检测到发送缓冲区最后一个字符已经被发送
表3-1CserialPort类消息说明
输液信息实时监测程序设计
在输液信息实时监测的设计中,我们设置了滴速、滴数、提示框以及指示灯,其中提示框是当监测的输液信息超限时用于文字提示,指示灯则与滴数同步闪烁,更形象地反映当前输液状态。
其图形如下3-3图所示:
图3-3输液信息实时监测
输液信息实时监测部分它的控件及属性如下表3-2:
控件
控件ID
Caption(标题)
需要添加的变量及变量类型
组框
IDC_STATIC
监测
静态文本
滴数
编辑框
IDC_EDIT_RXCOUNT
m_RXCOUNTCString
滴速
IDC_EDIT_SPEED1
m_SPEED1CString
IDC_EDIT_INTIME
m_EditCString
按钮
IDC_BUTTON_INTIME
实时监测
图像
IDC_STATIC_OPENOFF1
m_ctrlIconOpenOff1SCtatic
表3-2输液信息实时监测控件属性
在监测界面运行时,输液信息的监测与串口通信的联系较紧密,因为输液监测的信息是由下位机传给计算机的,而上、下位机之间必须靠串口通信完成。
下面是各个控件运行的代码:
/////////////串口消息处理函数OnCommunication////////////////
staticlongrxdatacount=1;
//该变量用于记录输液滴数
staticintontimebb=0;
//用于实时监测开关
staticintoldrxdatacount=0;
//用于测速
staticintoldrxdatacount1=0;
//用于报警
//WPARAM和LPARAM是多态数据类型,可以分别理解为char和integer类型数据
LONGCHospitalDlg:
OnCommunication(WPARAMch,LPARAMport)
//////////////////////////////显示滴数//////////////////////////////
rxdatacount++;
//记录输液的滴数
CStringstrTemp;
//定义一个字符串变量
strTemp.Format("
%01d"
ch);
m_RXCOUNT=strTemp;
//显示输液的滴数
UpdateData(FALSE);
if(rxdatacount%2==0&
&
ontimebb==1)//实时监测指示灯
m_ctrlIconOpenOff1.SetIcon(m_hIconRed);
else
return0;
////////////////////////实时监测/////////////////////////
voidCHospitalDlg:
OnButtonIntime()
if(ontimebb==0)
{ontimebb=1;
m_ctrlIconOpenOff1.SetIcon(m_hIconRed);
{ontimebb=0;
m_ctrlIconOpenOff1.SetIcon(m_hIconOff);
此外,由于输液滴速的监测和文字提示报警有严格的时间控制,因此,这两个控件的代码写在这定时器部分,具体代码如下:
/////////////////////定时器(动画效果)////////////////////////
OnTimer(UINTnIDEvent)
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
if(nIDEvent==1)
{m_animIcon.ShowNextImage();
//显示下一幅图像
CStringstrTemp;
(rxdatacount-oldrxdatacount));
m_SPEED1=strTemp+"
滴/秒"
//显示输液的滴速
CStringTimenow;
//定义一个字符串
CTimetm;
//定义一个CTime对象tm
tm=CTime:
GetCurrentTime();
//将当前时间给tm
Timenow=tm.Format("
%Y年%m月%d日%X"
//使Timenow的输出格式为%Y年%m月%d日
m_ctrlTIMENOW.SetWindowText(Timenow);
//在静态文本框中显示当前时间
if(m_ctrlAutoClear.GetCheck())//自动清空功能
m_Edit.Empty();
//清空接收区
UpdateData(FALSE);
oldrxdatacount=rxdatacount;
else
if(nIDEvent==2)
m_Edit="
if(((rxdatacount-oldrxdatacount1)/10)<
1)m_Edit="
滴速过慢或停止!
if(((rxdatacount-oldrxdatacount1)/10)>
3)m_Edit="
滴速过快!
UpdateData(FALSE);
oldrxdatacount1=rxdatacount;
OnTimer(nIDEvent);
串口通信中串口程序设计
其实,这部分并不应该出现在主界面中,但是串口通信方面的内容又是我们这次设计的一个重要内容,没有这部分主界面也显得“空空荡荡”,而且在调试过程中,不同的计算机的串口设置也不同,加上这部分就省去了很多麻烦,所以我们将这部分也加到主界面中。
这部分主要完成串口的设置,为上、下位机通信作准备,其图形如下图3-4所示:
图3-4串口通信设置
串口通信部分其控件及属性如下表3-3所示:
输入列表框项目
串口设置
IDC_STATIC_NUMBER
串口号
组合框
IDC_COMBO_NUMBER
COM1,COM2,COM3,
COM4,COM5
m_Number
CComboBox
IDC_STATIC_SPEED
波特率
IDC_COMBO_SPEED
300,600,1200,2400,
4800,9600,19200,
38400,43000,56000,
57600,115200
m_Speed
IDC_STATIC_PARITY
校验位
IDC_COMBO_PARITY
NONE、ODD、EVEN
m_Parity
IDC_STATIC_DATABITS
数据位
IDC_COMBO_DATABITS
8、7、6
m_DataBits
IDC_STATIC_STOPBITS
停止位
IDC_COMBO_STOPBITS
1、2
m_StopBits
IDC_STATIC_STATUS
STATUS:
m_ctrlPortStatus
Cstatic
IDC_BUTTON_STOP
关闭串口
m_ctrlStop
CButton
IDC_STATIC_OPENOFF2
m_ctrlIconOpenOff2SCtatic
表3-3串口设置控件属性
下面是串口通信中串口设置控件的代码:
///////////////////////////串口号/////////////////////////////
OnSelendokComboNumber()
Addyourcontrolnotificationhandlercodehere
if(m_Port.m_hComm!
=NULL)
m_Port.ClosePort();
//将组合框列表框中当前选中的项的下标加1,然后给m_nNumber
m_nNumber=m_Number.GetCurSel()+1;
{//检查串口是否完成初始化
if(!
m_bStop)//若“关闭串口”按钮没有按下,则进行如下操作
m_Port.StartMonitoring();
m_ctrlIconOpenOff2.SetIcon(m_hIconRed);
//串口灯亮strStatus.Format("
STATU:
COM%dOPENED,%d,%c,%d,%d"
}//显示串口状态
else//若“关闭串口”按钮已按下,则进行如下操作
//若串口处于打开状态,将消息“打开串口”送到控件上
m_ctrlStop.SetWindowText("
打开串口"
m_ctrlIconOpenOff2.SetIcon(m_hIconOff);
//串口灯灭
m_Port.ClosePort();
//关闭串口strStatus.Format("
m_nNumber,m_nSpeed,m_cParity,m_nDataBits,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医院 输液 监测 系统 计算机 界面设计 指导