5 光柱表动态仿真控制系统实例
5.1 人机界面设计及程序代码分析
应用程序二次开发的一个重要的方面就是人机界面的设计,实现用户和软件系统的数据交换。在这里我们在应用程序中使用模式对话框,添加标准控件。
在Visual C++创建MFC AppWizard(dll)工程,工程名为VirInstrument,在应用程序中添加UG入口函数,用MFC设计对话框类CGZInstrument,在话框类中设计控制函数On_PutOn(),On_PutOff()。添加Windows消息WM_TIMER,生成消息处理函数OnTimer()。用在On_PutOff()函数调用KillTimer()函数撤销计时器。编译连接生成VirInstrument.dll文件。部分代码如下:
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{ //UG函数入口
int errorCode = UF_initialize();//初始化API环境
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
CGZInstrument GZdlg;
GZdlg.DoModal(); //调用虚拟仪表控制面板
if ( 0 == errorCode )
{
errorCode = UF_terminate(); //释放API的执行许可
}
}
extern "C" int ufusr_ask_unload( void )
{
return( UF_UNLOAD_UG_TERMINATE );
}
void CMyDlg::On_PutOn() //开始执行仿真程序
{
m_nTimer=this->SetTimer(1,temp_tmslics*1000,NULL);//设置监控时间间隔
}
void CMyDlg::OnTimer(UINT nIDEvent)
{ …
uc1601(char *cp1, int ip2 );//超出安全范围调用报警函数
…
UF_MODL_edit_exp(char * expr_str );//更新光柱表的数值
UF_MODL_update( void );//更新视图
…
CDialog::OnTimer(nIDEvent);
}

图1 对话框界面