9.PMAC上位机-上位机发送指令
通常我们说PC控制其他硬件工作,指的是PC给相应的硬件发送指令来控制对应硬件。同时在发送完指令后可能会接受到相对应的反馈消息,告诉PC当前硬件的状态和参数等数据,这就是常见的PC和硬件通信。PMAC已经帮我们封装好了这通信过程,直接调用相关函数即可,这里讲通过上位机给PMAC发送指令控制电机运动或设置参数或返回当前指定参数值等。
PMAC提供PmacGetResponse和PmacGetResponseEX给PMAC发送指令。这一过程非常类似在Terminal中我们手动给PMAC发送指令,这里两个函数支持发送的命令也是在Terminal中输入的在线指令(Online Command)。
先看几个最简单示例额,在对话框上分别添加几个按钮和其响应函数,在响应函数中添加代码实现如下功能:
1.设置参数
//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件
OpenRuntimeLink();//打开PMAC卡连接
OpenPmacDevice(0);TCHAR szRes[MAX_PATH];
TCHAR szCmd[MAX_PATH];/*****************************************************/
lstrcpy(szCmd, "p1=1");//发送指令和接受往回发的指令填充到szRes
PmacGetResponse(0,szRes,MAX_PATH,szCmd);
/*****************************************************///关闭PMAC卡连接
ClosePmacDevice(0);//FreeLibrary
CloseRuntimeLink();
2.获取参数值
//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件
OpenRuntimeLink();//打开PMAC卡连接
OpenPmacDevice(0);TCHAR szRes[MAX_PATH];
TCHAR szCmd[MAX_PATH];/*****************************************************/
lstrcpy(szCmd, "p1");//发送指令和接受往回发的指令填充到szRes
PmacGetResponse(0,szRes,MAX_PATH,szCmd);
/*****************************************************///显示当前参数值
AfxMessageBox(szRes);//关闭PMAC卡连接
ClosePmacDevice(0);//FreeLibrary
CloseRuntimeLink();
3.控制电机点动
//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件
OpenRuntimeLink();//打开PMAC卡连接
OpenPmacDevice(0);TCHAR szRes[MAX_PATH];
TCHAR szCmd[MAX_PATH];/*****************************************************/
lstrcpy(szCmd, "#6j+");//发送指令和接受往回发的指令填充到szRes
PmacGetResponse(0,szRes,MAX_PATH,szCmd);
/*****************************************************///关闭PMAC卡连接
ClosePmacDevice(0);//FreeLibrary
CloseRuntimeLink();
4.控制程序运行
//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件
OpenRuntimeLink();//打开PMAC卡连接
OpenPmacDevice(0);TCHAR szRes[MAX_PATH];
TCHAR szCmd[MAX_PATH];/*****************************************************/
lstrcpy(szCmd, "&1b20r");//发送指令和接受往回发的指令填充到szRes
PmacGetResponse(0,szRes,MAX_PATH,szCmd);
/*****************************************************///关闭PMAC卡连接
ClosePmacDevice(0);//FreeLibrary
CloseRuntimeLink();
注意这里的轴号和程序号和自己编写并下载的程序一致。
看到了吗,在/**/注释间的是不是很熟悉,其实就是我们在PEWin32中Terminal窗口发送的指令,在/**/之前和之后其实就是建立和释放操作环境的过程。很多时候,对于上位机程序来说,我们甚至只需要调用PmacGetResponse和PmacGetResponseEX就足以满足我们的需求了。
5.演示程序
总体演示,下面我们把上面的常用功能集成到如下界面中:
对应的操作代码和上述演示代码一样,这里为了演示方便每次发送指令前都要建立环境和连接PMAC、发送指令、断开连接和释放环境,在实际项目中,只需要再程序实例化或窗口实例化时建立环境和连接PMAC,在窗口关闭或程序退出时断开连接和释放环境即可。代码如下:
//发送指令
void CTest1Dlg::OnSend()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];//获得输入的待发送指令字符串GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}//正方向移动
void CTest1Dlg::OnMovePos()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];lstrcpy(szCmd, "#6j+");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}//负方向移动
void CTest1Dlg::OnMoveNeg()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];lstrcpy(szCmd, "#6j-");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}//停止
void CTest1Dlg::OnStopMove()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];lstrcpy(szCmd, "#6k");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}//回零
void CTest1Dlg::OnHome()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];/************************************************************************//*激活电机 *//************************************************************************/lstrcpy(szCmd, "#6j/#8j/");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);Sleep(1000);/************************************************************************//* 调用回零程序,注意这里自己的回零程序号 *//************************************************************************/lstrcpy(szCmd, "&1b20r");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}//运行程序
void CTest1Dlg::OnRunProg()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];lstrcpy(szCmd, "&1b40r");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}//停止程序
void CTest1Dlg::OnStopProg()
{//链接Pcomm32.dll函数库,注意引入myRuntimeLink头文件OpenRuntimeLink();//打开PMAC卡连接OpenPmacDevice(0);TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];lstrcpy(szCmd, "&1b40a");//显示输入的待发送指令字符串SetDlgItemText(IDE_COMMAND, szCmd);//发送指令和接受往回发的指令填充到szResPmacGetResponse(0,szRes,MAX_PATH,szCmd);//显示接受指令SetDlgItemText(IDE_RECEIVE, szRes);//关闭PMAC卡连接ClosePmacDevice(0);//FreeLibraryCloseRuntimeLink();
}
程序演示代码下载链接
原创,转载请注明来自http://blog.csdn.net/wenzhou1219
9.PMAC上位机-上位机发送指令相关推荐
- C#上位机(数据校验发送指令来控制下位机)
对于"数据校验发送指令来控制下位机"的上位机,该模块主要有三个: (1)串口扫描,获取串口号,通过打开按钮来控制按钮是否打开. (2)发送数据校验的函数,将数据发送个给相应的下位机 ...
- 物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序
物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序 一.源码的使用基本说明: 1.1 编译语言: 下位机使用C语言:上位机使用C#语言 标准Modbus Slave通信下位机源码 ...
- 激光切割机雕刻机桌面打标机打码机点胶机写字机上位机C#源码STM32F407控制板源码
激光切割机雕刻机桌面打标机打码机点胶机写字机上位机C#源码STM32F407控制板源码 可用在各类切割机.雕刻机.打标机.点胶机.写字机.打孔机 控制板STM32F407支持3轴手动操作,鼠标单击运行 ...
- 上位机下位机概念详解
摘要 今天被老板问了什么是上位机,之前接触过,对于概念也不是很清晰,我又查找了一些资料,整理如下. 上位机 上位机是指能够发出操控命令的计算机,一般是PC. 下位机 下位机是指能够控制设备状态的计算机 ...
- V831——人脸识别通过串口向下位机发送指令
V831 文章目录 V831 前言 一.V831人脸识别 二.代码实现 总结 人脸识别串口发送指令 前言 V831人脸识别通过XY坐标以及Z的距离判断向下位机发送的数据,下位机处理完成后发送数据回来. ...
- 安卓全机型 玩机 搞机 ADB FAST 各种指令解析说明与操作
其实adb命令可以比喻为电脑的dos操作.通过一些指令可以完成很多操作.也有一些作者把这些指令汇总到一起开发成可视化的图形工具,其中的精品有类似 晨大大 的搞机助手这些.类似 今天这个帖子把一些常用 ...
- 蓝牙模块的TX连接51的RX,发送指令
蓝牙模块的TX连接51的RX,蓝牙RX连接51的TX,hc-05我记得内嵌了蓝牙串口通讯协议的,只要握手成功,上位机可以通过串口直接发送指令
- Python编写的客户端给服务器发送指令执行相应的命令并返回结果
闲来无事,用Python写个客户端与服务器端应答的程序,主要原理就是客户端通过tcp协议与服务器端通信,客户端给服务器端发送指令,服务器执行指令后把相应的结果返回给客户端,客户端打印结果,代码比较简单 ...
- CO2激光切割机雕刻机打标机写字机喷涂机巡边机控制软件
CO2激光切割机雕刻机打标机写字机喷涂机巡边机控制软件,包含上位机和控制板,也可源码 视频展示只体现工作流程和加工效果,如果激光功率足够大最快速度能跑到每秒两米 支持文件格式说明: 控制版和上位机通信 ...
最新文章
- rust矿洞绳子怎么爬下_车底下绑一根绳子妙用在哪?看看老司机怎么说!
- 清华“法律数据科研平台”向校内师生开放试运行
- 大脑神经细胞也有老熟人
- 一个JSON字符串和文件处理的命令行神器jq,windows和linux都可用
- Elasticsearch的倒排索引是什么?
- 【clickhouse】clickhouse表引擎之CollapsingMergeTree
- ZedGraph属性(转)
- linux设备驱动之PCIE驱动开发
- SQL中JOIN和UNION区别及用法
- PowerBuilder9.0 安装包及注意事项
- html右键菜单背景图片,win10系统设置鼠标右键菜单背景图片的步骤
- 世界各国时区表以及与北京时差
- WS小世界网络的建立及基本特征的求法
- Assignment写作选题及诀窍怎么分析?
- EmEditor,如何开启显示制表符
- ssd硬盘 速度慢 linux,Linux 对SSD硬盘优化的方法
- C语言输出矩阵的主对角线和以及次对角线和
- rog主板php,强劲的扩展能力 - 华硕ROG Zenith Extreme主板评测:地表最强X399 - 超能网...
- 机器学习中的概念---输入空间、标记空间、样本空间、假设空间、版本空间
- 2019王道pdf(计算机网络、数据结构、操作系统、计算机组成原理)不要C币
热门文章
- 前端实现给文字添加动态背景
- CentOS命令行改色。
- VIO学习笔记(二)—— IMU 传感器
- Cathy Zhang 箭头函数与普通函数的区别
- 利用windows事件管理器定位程序闪退错误
- 【学习笔记+习题集】字符相关(输入输出流,字典树,AC自动机,后缀自动机)(4598字)(更新至2022.12.28)
- 非功能性需求之性能需求分析
- 计算机无法进入桌面怎么备份,系统崩溃无法启动如何从pe进入系统备份C盘和桌面重要文件...
- android 开发英语单词统计
- zblog asp php,ZBlog你选择PHP还是ASP?