设为首页 加入收藏

TOP

1.5 主窗体设计(9)
2013-10-07 13:27:06 来源: 作者: 【 】 浏览:77
Tags:1.5 窗体 设计

1.5  主窗体设计(9)

(31)为云台控制的按钮关联CStageButton类变量,并在对话框初始化时从INI文件中读取云台参数信息,并设置Com端口。代码如下:

  1. m_ButtonUp.m_Type    = ctUp;                //向上  
  2. m_ButtonDown.m_Type  = ctDown;          //向下  
  3. m_ButtonLeft.m_Type  = ctLeft;              //向左  
  4. m_ButtonRight.m_Type = ctRight;             //向右  
  5. m_InFoci.m_Type      = ctInFoci;            //聚焦减  
  6. m_ReFoci.m_Type      = ctReFoci;            //聚焦增  
  7. m_InLen.m_Type       = ctInLen;             //对焦减  
  8. m_ReLen.m_Type       = ctReLen;             //对焦增  
  9. m_InAperture.m_Type  = ctInAperture;        //光圈减  
  10. m_ReAperture.m_Type  = ctReAperture;        //光圈增  
  11. m_InBrush.m_Type     = ctInBrush;           //画笔减  
  12. m_ReBrush.m_Type     = ctReBrush;           //画笔增  
  13. m_Len = GetPrivateProfileInt("使用字节数","字节数",
    8,"./stage.ini");        //获得云台协议使用的字节数  
  14. m_ActoinCount = GetPrivateProfileInt("控制项","
    控制数",13,"./stage.ini"); //获得云台的控制动作数  
  15. m_pData = new  unsigned char[m_ActoinCount][MAXNUM];  
  16. m_Port = GetPrivateProfileInt("端口设置","端
    口号",1,"./stage.ini");        //获得端口号  
  17. GetPrivateProfileString("端口设置","环境设置","9600,n,8,1",   
  18.     m_Setting.GetBuffer(0),MAX_PATH,".
    /stage.ini");             //获得环境设置  
  19. int data;  
  20. char buff[20] = {0};  
  21. char var[20]  = {0};  
  22. for (int i = 0 ; i<m_ActoinCount ; i++)  
  23. {  
  24.     for (int j = 0 ; j <m_Len; j++)  
  25.     {  
  26.         char section[20] = "字节";  
  27.         itoa(i+1,var,10);  
  28.         itoa(j+1,buff,10);  
  29.         strcat(section,buff);  
  30.         data = GetPrivateProfileInt(var,section,
    0,"./stage.ini");       //获得各个按钮的字节数  
  31.         m_pData[i][j] = data;  
  32.     }  
  33. }  
  34. m_Com.SetSettings(m_Setting);              
    //设置端口信息,并打开端口  
  35. m_Com.SetOutBufferSize(512);             
    //设置输出缓冲区大小  
  36. m_Com.SetCommPort(m_Port);             
    //设置端口号  
  37. m_Com.SetSThreshold(0);                 
    //设置传输缓冲区允许的最小字符  
  38. m_Com.SetPortOpen(TRUE);               
    //打开串口  

(32)自定义MoveCapture函数,用于向串口发送信息控制云台。代码如下:

  1. void CCaptureDlg::MoveCapture(UINT num)  
  2. {  
  3.     VARIANT vt;                            
    //定义VARIANT结构变量  
  4.     SAFEARRAY* pSafe;                      
    //定义SAFEARRAY结构指针  
  5.     SAFEARRAYBOUND band;                    
    //定义SAFEARRAYBOUND结构变量  
  6.     band.cElements = m_Len;  
  7.     band.lLbound   = 0;  
  8.     pSafe = SafeArrayCreate(VT_UI1,1,&band);  
  9.     for(long i=0;i<m_Len;i++)  
  10.     {  
  11.         SafeArrayPutElement(pSafe,&i,(void*)&m_pData[num][i]);  
  12.     }  
  13.     vt.vt     = VT_ARRAY |VT_UI1;  
  14.     vt.parray = pSafe;  
  15.     m_Com.SetOutput((COleVariant)vt);       
    //向串口发送数据  
  16. }  

(33)为各个按钮添加进行云台控制的方法。代码如下:

  1. void CCaptureDlg::OnUp()                                    //向上移动  
  2. {  
  3.     MoveCapture(0);  
  4. }  
  5. void CCaptureDlg::OnReset()                             //停止移动  
  6. {  
  7.     MoveCapture(12);  
  8. }  
  9. void CCaptureDlg::OnDown()                              //向下移动  
  10. {  
  11.     MoveCapture(1);  
  12. }  
  13. void CCaptureDlg::OnLeft()                                  //向左移动  
  14. {  
  15.     MoveCapture(2);  
  16. }  
  17. void CCaptureDlg::OnRight()                             //向右移动  
  18. {  
  19.     MoveCapture(3);  
  20. }  
  21. void CCaptureDlg::OnInFoci()                                //增加聚焦  
  22. {     
  23.     MoveCapture(5);  
  24. }  
  25. void CCaptureDlg::OnReFoci()                                //减小聚焦  
  26. {  
  27.     MoveCapture(4);  
  28. }  
  29. void CCaptureDlg::OnInLen()                             //对焦增  
  30. {  
  31.     MoveCapture(7);  
  32. }  
  33. void CCaptureDlg::OnReLen()                             //对焦减  
  34. {  
  35.     MoveCapture(6);  
  36. }  
  37. void CCaptureDlg::OnReAperture()                            //光圈减  
  38. {  
  39.     MoveCapture(8);  
  40. }  
  41. void CCaptureDlg::OnInAperture()                            //光圈增  
  42. {  
  43.     MoveCapture(9);  
  44. }  
  45. void CCaptureDlg::OnReBrush()                               //画笔减  
  46. {  
  47.     MoveCapture(10);  
  48. }  
  49. void CCaptureDlg::OnInBrush()                               //画笔增  
  50. {  
  51.     MoveCapture(11);  
  52. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.10 开发技巧与难点分析(4) 下一篇1.5 主窗体设计(7)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: