AdlinkMotionCardLibrary函数C++

#include "stdafx.h"
#include "AdlinkMotionCardLibrary.h"extern "C" _declspec(dllexport) bool _stdcall MotionCardIni(I32& BoardId_InBits, I32 Mode)
{  try{//mode=0:: 系统指定卡号    mode=1::由拨码开关指定卡号I32 BoardId_InBits, I32 Moderet=APS_initial(&BoardId_InBits, Mode);		Card1ret =APS_load_param_from_file("MotionCardId1.xml");Card0ret = APS_load_param_from_file("MotionCardId0.xml");ret = APS_set_axis_param(1, (I32)PRA_HOME_MODE, 1);ret = APS_set_axis_param(5, (I32)PRA_HOME_MODE, 1);return true;}catch (...){ return false; }
}extern "C" _declspec(dllexport) bool _stdcall AxisHome(I32 AxisID){try{ret = APS_home_move(AxisID);  //check okreturn true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardWriteDoutput(I32 BoardID, I32 DoGroup, I32 ChannelNO, I32 OnOff){try{ret = APS_write_d_channel_output(BoardID, DoGroup, ChannelNO, OnOff);  //write one bit  check okreturn true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardSetTrigerPara(I32 BoardID){try{ret = APS_set_trigger_param(BoardID, (I32)TGR_TRG_EN, 15);// ch0 set upret = APS_set_trigger_param(BoardID, (I32)TGR_TRG0_SRC, 0x05); //set ch0 to manual mode& table0ret = APS_set_trigger_param(BoardID, (I32)TGR_TRG0_LOGIC, 0x0);//not inverseret = APS_set_trigger_param(BoardID, (I32)TGR_TRG0_TGL, 0x0);//pulse out moderet = APS_set_trigger_param(BoardID, (I32)TGR_TRG0_PWD, 500000);// (n-1)*20ns    1ms=1000us=1000000ns n-1=1000000ns/20  =50000=5W             //Table compare direction: Bi-direction(No direction)ret = APS_set_trigger_param(BoardID, (I32)TGR_TCMP0_DIR, 2);//Table compare source: encoder counter0  ret = APS_set_trigger_param(BoardID, (I32)TGR_TCMP0_SRC, 0x0);  //encoder counter0  //check okreturn true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardSetTriger2CHPara(I32 BoardID){try{ret = APS_set_trigger_param(BoardID, (I32)TGR_TRG_EN, 15);  // ch0 set upret = APS_set_trigger_param(BoardID, (I32)TGR_TRG1_SRC, 0x09); //set ch1 to manual mode& table1ret = APS_set_trigger_param(BoardID, (I32)TGR_TRG1_LOGIC, 0x0);//not inverseret = APS_set_trigger_param(BoardID, (I32)TGR_TRG1_TGL, 0x0);//pulse out moderet = APS_set_trigger_param(BoardID, (I32)TGR_TRG1_PWD, 500000);// (n-1)*20ns    1ms=1000us=1000000ns n-1=1000000ns/20  =50000             //Table compare direction: Bi-direction(No direction)ret = APS_set_trigger_param(BoardID, (I32)TGR_TCMP1_DIR, 2);//Table compare source: encoder0 ret = APS_set_trigger_param(BoardID, (I32)TGR_TCMP1_SRC, 0x04);  //encoder counter0 //check okreturn true;}catch (...){ return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardSetTriger3CHPara(I32 BoardID){try{ret = APS_set_trigger_param(BoardID, (I32)TGR_TRG_EN, 15);// ch0 set upret = APS_set_trigger_param(BoardID, (I32)TGR_TRG2_SRC, 0x01); //set ch1 to manual mode& table1ret = APS_set_trigger_param(BoardID, (I32)TGR_TRG2_LOGIC, 0x0);//not inverseret = APS_set_trigger_param(BoardID, (I32)TGR_TRG2_TGL, 0x0);//pulse out moderet = APS_set_trigger_param(BoardID, (I32)TGR_TRG2_PWD, 500000);// (n-1)*20ns    1ms=1000us=1000000ns n-1=1000000ns/20  =50000             //check okreturn true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardSetTrigerTable(I32 BoardID, I32& PosArray){try{		ret = APS_set_trigger_table(BoardID, 0, &PosArray, 2);//check okreturn true;}catch (...){ return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardSetTriger2CHTable(I32 BoardID, I32& PosArray){try{		ret = APS_set_trigger_table(BoardID, 1, &PosArray, 2);//check okreturn true;}catch (...){ return false; }}extern "C" _declspec(dllexport) bool _stdcall MotionCardManualTrigerStart(I32 BoardID, I32 TrgCh){try{ret = APS_set_trigger_manual(BoardID, TrgCh);//check okreturn true;}catch (...){ return false; }}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetPosition(I32 AxisID, I32 &Position){try{ret = APS_get_position(AxisID, &Position);//check okreturn true;}catch (...){ return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetMotionStatus(I32 AxisID, I32& MotionStatus){try{MotionStatus =APS_motion_status(AxisID);//check okreturn true;}catch (...){MotionStatus = -1;return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardSetMovePara(I32 AxisID, double RunSpeed, double AcceleratedSpeed, double AxisScale){try{ret = APS_set_axis_param_f(AxisID, (I32)PRA_SF, 1.0);ret = APS_set_axis_param_f(AxisID, (I32)PRA_ACC, (I32)(RunSpeed / AcceleratedSpeed * AxisScale));ret = APS_set_axis_param_f(AxisID, (I32)PRA_DEC, (I32)(RunSpeed / AcceleratedSpeed * AxisScale));ret = APS_set_axis_param_f(AxisID, (I32)PRA_VM, RunSpeed * AxisScale);ret = APS_set_axis_param_f(AxisID, (I32)PRA_VS, 0);ret = APS_set_axis_param_f(AxisID, (I32)PRA_VE, 0);//check okreturn true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardABSmove(I32 AxisID, I32 Position, I32 MaxSpeedPls){try{ret = APS_absolute_move(AxisID, Position, MaxSpeedPls);//check okreturn true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardClose(){try{ret = APS_close();return true;}catch (...){ return false; }}extern "C" _declspec(dllexport) bool _stdcall MotionCardAxisServoOnOff(I32 AxisID, I32 OnOff){try{ret = APS_set_servo_on(AxisID, OnOff);return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetMotionIOstatus(I32 AxisID, I32& IOstatus){try{IOstatus= APS_motion_io_status(AxisID);return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetDinput(I32 BoardId, I32& DiData){try{I32*data = &DiData;ret = APS_read_d_input(BoardId, 0, data);return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetDout(I32 BoardId, I32& DiData){try{I32*data = &DiData;ret = APS_read_d_output(BoardId, 0, data);return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardStopAxis(I32 AxisId){try{ret = APS_stop_move(AxisId);return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetTrigerCnt(I32 boardID, I32 ch, I32& trgCnt){try{I32* Cnt = &trgCnt;ret = APS_get_trigger_count(boardID, ch, Cnt);return true;}catch (...){return false;} }extern "C" _declspec(dllexport) bool _stdcall MotionCardResteTrigerCnt(I32 boardID, I32 ch){try{ret = APS_reset_trigger_count(boardID, ch);return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall ZcanMoveToAttach(I32 XAxisId, I32 YAxisId, I32 RAxisId, double XTarmm, double YTarmm, double RTarmm, double ZTarmm, double Xnowmm,double Ynowmm, double Rnowmm, double Znowmm, double XScale, double YScale, double RScale, double ZScale, double Xacc, double Yacc, double Racc, double Zacc, double Zspeedmm,bool ZcanAttch){I32 XspeedPulse = 0, YspeedPulse = 0, RspeedPulse = 0;double XTime = 999, YTime = 999, RTime = 999, ZTime = 0;try{ret = APS_get_feedback_velocity(XAxisId, &XspeedPulse);ret = APS_get_feedback_velocity(YAxisId, &YspeedPulse);ret = APS_get_feedback_velocity(RAxisId, &RspeedPulse);ZTime = Zacc + abs(Znowmm - ZTarmm) / Zspeedmm;if (XspeedPulse > 0 && abs(Xnowmm - XTarmm) < 10){XTime = Xacc + abs(Xnowmm - XTarmm) / (XspeedPulse / XScale);}else if (XspeedPulse == 0 && abs(Xnowmm - XTarmm)<0.1){XTime = -1;}if (YspeedPulse > 0 && abs(Ynowmm - YTarmm)<10){YTime = Yacc + abs(Ynowmm - YTarmm) / (YspeedPulse / YScale);}else if (YspeedPulse == 0 && abs(Ynowmm - YTarmm)<0.1){YTime = -1;}if (RspeedPulse > 0 && abs(Rnowmm - RTarmm)<10){RTime = Racc + abs(Rnowmm - RTarmm) / (RspeedPulse / RScale);}else if (RspeedPulse == 0 && abs(Rnowmm - RTarmm)<0.1){RTime = -1;}if ((ZTime>XTime)&&(ZTime>YTime)&&(ZTime>RTime)){ZcanAttch = true;}else{ZcanAttch = false;}return true;}catch (...){ZcanAttch = false;return false;}}extern "C" _declspec(dllexport) bool _stdcall ZcanMoveToPickMat(I32 XAxisId, I32 RAxisId, double XTarmm, double RTarmm, double ZTarmm, double Xnowmm,double Rnowmm, double Znowmm, double XScale, double RScale, double ZScale, double Xacc, double Racc, double Zacc, double Zspeedmm, bool ZcanPick){I32 XspeedPulse = 0, RspeedPulse = 0;double XTime = 999, RTime = 999, ZTime = 0;try{ret = APS_get_feedback_velocity(XAxisId, &XspeedPulse);ret = APS_get_feedback_velocity(RAxisId, &RspeedPulse);ZTime = Zacc + abs(Znowmm - ZTarmm) / Zspeedmm;if (XspeedPulse > 0 && abs(Xnowmm - XTarmm) < 10){XTime = Xacc + abs(Xnowmm - XTarmm) / (XspeedPulse / XScale);}else if (XspeedPulse == 0 && abs(Xnowmm - XTarmm) < 0.1){XTime = -1;}if (RspeedPulse > 0 && abs(Rnowmm - RTarmm) < 10){RTime = Racc + abs(Rnowmm - RTarmm) / (RspeedPulse / RScale);}else if (RspeedPulse == 0 && abs(Rnowmm - RTarmm) < 0.1){RTime = -1;}if ((ZTime > XTime) && (ZTime > RTime)){ZcanPick = true;}else{ZcanPick = false;}return true;}catch (...){ZcanPick = false;return false;}}
extern "C" _declspec(dllexport) bool _stdcall  AxisMoveTogether(I32 Dimention, I32& AxisArr, I32& PosArr, double MaxSpe, double AxisScale){try{ret = APS_absolute_linear_move(Dimention, &AxisArr, &PosArr, I32(MaxSpe*AxisScale));return true;}catch (...){return false;}}extern "C" _declspec(dllexport) bool _stdcall MotionCardGetSpeed(I32 AxisID, I32 &Speed)
{try{ret = APS_get_feedback_velocity(AxisID, &Speed);return true;}catch (...){return false;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看表的结构

describe 表名转载于:https://www.cnblogs.com/dengyg200891/p/5966565.html

定制一个网络文件系统

定制一个网络文件系统【把pc上的文件系统挂接到开发板上面】 1、修改exports文件【PC上】一定要修改&#xff0c;否则不会成功 vi /etc/exports 修改为 /空格* 并保存 2、设置开发板上的IP地址 ifconfig eth0 192.168.0.11 up 3、设置PC上的IP地址 ifconfig et…

创建Hbase Hive外部表报错: Unable to determine ZooKeeper ensemble

创建HBase的Hive外部表1: create external table ttt(rowkey string,info map<string,string>)STORED BY org.apache.hadoop.hive.hbase.HBaseStorageHandler WITH SERDEPROPERTIES ("hbase.columns.mapping" ":key,info:") TBLPROPERTIES ("h…

死磕算法之快速排序

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80851021 学习更多算法系列请参考文章&#xff1a;死磕算法之汇总篇 快速排序是一个运用了分治法和递归算法的排序方…

九点标定进行仿射变换halcon仿真代码

筛选出来的点得坐标已经显示在PxRow、PxColunm里边 * Image Acquisition 01: Code generated by Image Acquisition 01 read_image (Image, C:/Users/Administrator/Desktop/标定板图片.png) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHand…

用SQL语句添加删除修改字段_常用SQL

1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型 ALTER TABLE table_name ALTER COLUMNcolumn_name new_data_type4.sp_rename 改名 EXEC sp_rename [dbo].[Table_1].[fi…

DAVINCI开发原理之三----达芬奇编解码引擎Codec Engine(CE)

DaVinci是DSP和ARM 双核架构的SOC芯片。对芯片与外界的交互通过ARM端的Montavista Linux和相关驱动与应用程序来管理&#xff0c; DSP端只处理编解码相关的算法。DSP和ARM之间的通讯和交互是通过引擎(Engine)和服务器(Server)来完成的。1. 编解码引擎(Codec Engine) a. 核心引…

Windows操作系统安全加固

本文档旨在指导系统管理人员或安全检查人员进行Windows操作系统的安全合规性检查和配置。 1. 账户管理和认证授权 1.1 账户 默认账户安全 禁用Guest账户。禁用或删除其他无用账户&#xff08;建议先禁用账户三个月&#xff0c;待确认没有问题后删除。&#xff09;操作步骤 打开…

ios修改了coredata数据结构后,更新安装会闪退

如果iOS App 使用到CoreData&#xff0c;并且在上一个版本上有数据库更新&#xff08;新增表、字段等操作&#xff09;&#xff0c;那在覆盖安装程序时就要进行CoreData数据库的迁移&#xff0c;具体操作如下&#xff1a; 1.选中你的mydata.xcdatamodeld文件&#xff0c;选择菜…

TI DAVINCI开发原理(总共5部分)

2011-06-03 11:14:17| 分类&#xff1a; TI 达芬奇视频处 | 标签&#xff1a; |字号大中小订阅 DAVINCI开发原理之一----ARM端开发环境的建立(DVEVM) 1. 对DAVINCI平台&#xff0c;TI在硬件上给予双核架构强有力的支撑&#xff0c;在DSP端用DSP/BIOS来支持音视频算法的运行…

数据库代码写法

1.创建数据库create database test2; 2.删除数据库drop database test2; 3.创建表 create table ceshi (ids int auto_increment primary key,uid varchar(20),name varchar(20),class varchar(20),foreign key (class) references class(code) ); create table class (code …

random库的使用

有关Python中random标准库的使用 Python中关于随机值的部分&#xff0c;借助的是根据当前的随机种子&#xff0c;通过梅森旋转算法&#xff0c;生成一段随机序列。 基本随机函数 random.seed(aNone)初始化给定的随机种子&#xff0c;默认值为当前的系统时间。 random.random()生…

ThinkPHP--栏目增删改查ADSF

<?php /*** 栏目发布*/ //V层&#xff0c;action/name值 action " :U( Admin/Cat/Cateadd )";/*** 添加栏目数据* C层&#xff0c;写相应的方法进行数据添加*/ public function add(){if(!IS_POST){$this->display();}else{//var_dump($_POST);$catModelD…

模拟查找晶元的位置

通过模板匹配找到所有模板位置&#xff0c;并且当单击某个模板时&#xff0c;选中某个模板 read_image (Image, C:/Users/22967/Desktop/晶圆找位置/0.bmp) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image)* draw_cir…

JavaScript常用函数之Eval()使用

eval() 功能&#xff1a;首先解释Javascript代码 然后执行它 用法&#xff1a;Eval&#xff08;codeString&#xff09; codeString是包含有javascript语句的字符串&#xff0c;在eval之后使用Javascript引擎编译。即&#xff1a;eval函数可以把一个字符串当作一个javascript表…

初探数位dp

前言&#xff1a;这是蒟蒻第一次写算法系列&#xff0c;请诸位大佬原谅文笔与排版。 一、导入 在刷题的时候&#xff0c;我们有时会见到这样一类问题&#xff1a;在区间$[l,r]$内&#xff0c;共有多少个整数满足某种条件。如果$l$和$r$间的差很小&#xff0c;我们可以考虑暴力枚…

Java演示手机发送短信验证码功能实现

我们这里采用阿里大于的短信API 第一步&#xff1a;登陆阿里大于&#xff0c;下载阿里大于的SDK a、在阿里大于上创建自己的应用 b、点击配置管理中的验证码&#xff0c;先添加签名&#xff0c;再配置短信模板 第二步&#xff1a;解压相关SDK&#xff0c;第一个为jar包&#xf…

使用标定板对相机位姿进行估计

使用标定板几个特定的点&#xff0c;来对相机相对标定板平面进行位姿估计。 首先进行相机的畸变校正&#xff0c;之后同个各个标定板间的圆点距离进行位姿估计。 gen_caltab (7, 7, 0.002, 0.5, C:/Users/22967/Desktop/新建文件夹/111.descr, C:/Users/22967/Desktop/新建文件…

音、视频文件格式

* 说明&#xff1a;首先要分清楚 媒体文件和编码的区别&#xff1a;文件是既包括视频又包括音频、甚至还带有脚本的一个集合&#xff0c;也可以叫容器&#xff1b;文件当中的视频和音频的压缩算法才是具体的编码。 *AVI音视频交互存储&#xff0c;最常见的音频视频容器。支持的…

ELK日志分析系统(转)

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://467754239.blog.51cto.com/4878013/1700828大纲&#xff1a; 一、简介 二、Logstash 三、Redis 四、Elasticsearch 五、Kinaba 一、简介 …