信息化 频道

UG/OPEN API及MFC在虚拟仪表仿真中的应用

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 对话框界面

0
相关文章