zoukankan      html  css  js  c++  java
  • PMAC上位机编程基础2---上位机发送指令

    编程环境配置完成后,就可以开始写界面。
    1.首先打开解决方案资源管理器界面(视图->解决方案资源管理器)和资源视图界面(视图->资源视图).分别在头文件和源文件中添加myRuntime.h文件和myRuntime.cpp文件。



    2.点击资源视图,在窗口中添加控件,如下图
    添加控件
    ![](http://a2.qpic.cn/psb?/V135QPDB2w0C70/W7AJvpIo0OtCS.yz2tMBD7MR2KTtgnxUFuIYJyQjork!/b/dF0BAAAAAAAA&ek=1&kp=1&pt=0&bo=QAKiAQAAAAAFB8U!&sce=0-12-12&rf=viewer_4)

    分别双击各个按钮,添加事件处理程序,代码如下:

      1 #include "stdafx.h"
      2 #include "pmac1.h"
      3 #include "pmac1Dlg.h"
      4 #include "afxdialogex.h"
      5 #include "myRuntime.h"
      6 
      7 void Cpmac1Dlg::OnBnClickedButton3()
      8 {
      9     // TODO: 在此添加控件通知处理程序代码
     10     if (NULL != OpenRuntimeLink())  
     11       {  
     12         AfxMessageBox(TEXT("加载动态链接库成功!"));  
     13     }  
     14     else  
     15     {  
     16         AfxMessageBox(TEXT("加载动态链接库失败!"));  
     17         return;  
     18     }  
     19   
     20     //打开指定卡号PMAC,这里打开0号卡  
     21     if (TRUE == OpenPmacDevice(0))  
     22     {  
     23         AfxMessageBox(TEXT("PMAC连接成功!"));  
     24     }  
     25     else  
     26     {  
     27         AfxMessageBox(TEXT("PMAC连接失败!"));  
     28     }  
     29     ClosePmacDevice(0);  
     30       
     31     //FreeLibrary  
     32     CloseRuntimeLink(); 
     33 }
     34 void Cpmac1Dlg::OnBnClickedButton2()
     35 {
     36     // TODO: 在此添加控件通知处理程序代码
     37     OpenRuntimeLink();
     38     OpenPmacDevice(0);
     39 
     40     TCHAR res[MAX_PATH];  
     41     TCHAR cmd[MAX_PATH];  
     42 
     43 
     44     //将要发送的指令存入cmd数组  
     45     lstrcpy(cmd, "i100=1");  
     46     //i100=1即为激活电机#1指令
     47     //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH);  
     48   
     49     //发送指令和接受往回发的指令填充到szRes  
     50     PmacGetResponse(0,res,MAX_PATH,cmd);  
     51   
     52     //显示接受指令  
     53     //SetDlgItemText(IDE_RECEIVE, szRes);  
     54     ClosePmacDevice(0);  
     55       
     56     //FreeLibrary  
     57     CloseRuntimeLink(); 
     58 }
     59 void Cpmac1Dlg::OnBnClickedButton6()
     60 {
     61     
     62     OpenRuntimeLink();
     63     OpenPmacDevice(0);
     64     // TODO: 在此添加控件通知处理程序代码
     65     TCHAR res[MAX_PATH];  
     66     TCHAR cmd[MAX_PATH];  
     67 
     68     //将要发送的指令存入cmd数组  
     69     lstrcpy(cmd, "#1j/");  
     70     //i100=1即为激活电机#1指令
     71     //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH);  
     72   
     73     //发送指令和接受往回发的指令填充到szRes  
     74     PmacGetResponse(0,res,MAX_PATH,cmd);  
     75   
     76     //显示接受指令  
     77     //SetDlgItemText(IDE_RECEIVE, szRes);  
     78     ClosePmacDevice(0);  
     79       
     80     //FreeLibrary  
     81     CloseRuntimeLink(); 
     82 }
     83 void Cpmac1Dlg::OnBnClickedButton4()
     84 {
     85     OpenRuntimeLink();
     86     OpenPmacDevice(0);
     87     // TODO: 在此添加控件通知处理程序代码
     88     // TODO: 在此添加控件通知处理程序代码
     89     TCHAR res[MAX_PATH];  
     90     TCHAR cmd[MAX_PATH];  
     91 
     92     //将要发送的指令存入cmd数组  
     93     lstrcpy(cmd, "#1J+");  
     94     //i100=1即为激活电机#1指令
     95     //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH);  
     96   
     97     //发送指令和接受往回发的指令填充到szRes  
     98     PmacGetResponse(0,res,MAX_PATH,cmd);  
     99   
    100     //显示接受指令  
    101     //SetDlgItemText(IDE_RECEIVE, szRes);  
    102     ClosePmacDevice(0);  
    103       
    104     //FreeLibrary  
    105     CloseRuntimeLink(); 
    106 }
    107 void Cpmac1Dlg::OnBnClickedButton5()
    108 {
    109     OpenRuntimeLink();
    110     OpenPmacDevice(0);
    111     // TODO: 在此添加控件通知处理程序代码
    112     // TODO: 在此添加控件通知处理程序代码
    113     TCHAR res[MAX_PATH];  
    114     TCHAR cmd[MAX_PATH];  
    115 
    116     //将要发送的指令存入cmd数组  
    117     lstrcpy(cmd, "#1J-");  
    118     //i100=1即为激活电机#1指令
    119     //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH);  
    120   
    121     //发送指令和接受往回发的指令填充到szRes  
    122     PmacGetResponse(0,res,MAX_PATH,cmd);  
    123   
    124     //显示接受指令  
    125     //SetDlgItemText(IDE_RECEIVE, szRes);  
    126     ClosePmacDevice(0);  
    127       
    128     //FreeLibrary  
    129     CloseRuntimeLink(); 
    130 }
    131 void Cpmac1Dlg::OnBnClickedButton7()
    132 {
    133     OpenRuntimeLink();
    134     OpenPmacDevice(0);
    135     // TODO: 在此添加控件通知处理程序代码
    136     // TODO: 在此添加控件通知处理程序代码
    137     TCHAR res[MAX_PATH];  
    138     TCHAR cmd[MAX_PATH];  
    139 
    140     //将要发送的指令存入cmd数组  
    141     lstrcpy(cmd, "k");  
    142     //i100=1即为激活电机#1指令
    143     //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH);  
    144   
    145     //发送指令和接受往回发的指令填充到szRes  
    146     PmacGetResponse(0,res,MAX_PATH,cmd);  
    147   
    148     //显示接受指令  
    149     //SetDlgItemText(IDE_RECEIVE, szRes);  
    150     ClosePmacDevice(0);  
    151       
    152     //FreeLibrary  
    153     CloseRuntimeLink(); 
    154 }
    
    

    代码亲测可用。

    3.可能出现的问题

    a.error C2664

    pmac1Dlg.cpp(224): error C2664: “lstrcpyW”: 不能将参数 2 从“const char [7]”转换为“LPCWSTR”与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换。



    错误处理:
    点击项目->属性->配置属性->常规->字符集
    将字符集由“使用 Unicode 字符集”改为“使用多字节字符集”

    b.修改界面显示风格
    在stdafx.h文件最后添加代码     

    //#ifdef _UNICODE
        #if defined _M_IX86
        #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"")
        #elif defined _M_X64
        #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'"")
        #else
        #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"")
        #endif
        //#endif

    可以将界面从经典风格改为xp风格,显示效果如下:


    xp风格

    xp风格

    经典风格

    经典风格





  • 相关阅读:
    用户管理 之 Linux 系统中的超级权限的控制
    硬件管理 之 存储设备分区操作及文件系统管理概述
    用户管理 之 Linux 用户(User)查询篇
    软件工程——需求工程
    自动装载模块
    管理内核模块
    模块功能的注册和取消
    编程实现将任意的十进制整数转换成R进制数
    数据流图分析与设计
    软件工程——系统工程
  • 原文地址:https://www.cnblogs.com/zhengkang/p/4992332.html
Copyright © 2011-2022 走看看