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.pswp.cn/news/254206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254206.shtml
英文地址,請注明出處:http://en.pswp.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 一、簡介 …