You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

768 lines
41 KiB
C

//
// Copyright (c) Advantech Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Advantech end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
#ifdef __cplusplus
extern "C"
{
#endif
#include "AdvMotDev.h"
#include "AdvMotDrv.h"
#include "AdvMotPropID.h"
#include "AdvMotErr.h"
//Add for other Corp. // [6/8/2011 dan.yang]
#ifndef tagPT_DEVLIST
#define tagPT_DEVLIST
typedef struct tagPT_DEVLIST
{
DWORD dwDeviceNum;
char szDeviceName[50];
SHORT nNumOfSubdevices;
} DEVLIST, *LPDEVLIST;
#endif
// [11/26/2014 dan]
#ifndef _DEV_IO_MAP_INFO
#define _DEV_IO_MAP_INFO
typedef struct _DEV_IO_MAP_INFO
{
char Name[50];
ULONG Index;
ULONG Offset;
ULONG ByteLength;
ULONG SlotID;
ULONG PortChanID;
ULONG ModuleID;
char ModuleName[16];
char Description[100];
} DEV_IO_MAP_INFO, *PDEV_IO_MAP_INFO;
#endif
#ifndef _ADVAPI_SLAVE_INFO
#define _ADVAPI_SLAVE_INFO
typedef struct {
ULONG desc; /**< Port descriptors. */
ULONG link_up; /**< Link detected. */
ULONG loop_closed; /**< Loop closed. */
ULONG next_slave; /**< Connected Position of slaves. */
ULONG delay_to_next_dc;
} port_info;
typedef struct _ADVAPI_SLAVE_INFO_
{
ULONG SlaveID;
ULONG Position;
ULONG VendorID;
ULONG ProductID;
ULONG RevisionNo;
ULONG SerialNo;
ULONG driverCnts;
port_info ports[4];
ULONG transmission_delay;
char DeviceName[64];
}ADVAPI_SLAVE_INFO, *PADVAPI_SLAVE_INFO;
#endif
#ifndef _DEV_ARES_INFO
#define _DEV_ARES_INFO
typedef struct _DEV_ARES_INFO
{
char Name[10][32];
} DEV_ARES_INFO, *PDEV_ARES_INFO;
#endif
#ifndef _DEV_PRE_SCAN_DATA
#define _DEV_PRE_SCAN_DATA
typedef struct _DEV_PRE_SCAN_DATA
{
F64 XScanData;
F64 YScanData;
F64 ZScanData;
} DEV_PRE_SCAN_DATA, *PDEV_PRE_SCAN_DATA;
#endif
#ifndef ADVCMNAPI
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define ADVCMNAPI __stdcall
#endif
#endif
/*
+-----------------------------------------------------------------------------+
| ************ Advantech Motion Master Device Type ID************************ |
+-----------------------------------------------------------------------------+
*/
//U32 ADVCMNAPI Acm_GetAvailableDevNum(U32 *DeviceNum); //Add for other corp. [dan.yang 2011.06.08]
U32 ADVCMNAPI Acm_GetAvailableDevs(DEVLIST *DeviceList, U32 MaxEntries, PU32 OutEntries); //Add for other corp. [dan.yang 2011.06.08]
void ADVCMNAPI GetAvailalbe_AMONet(DWORD dwMasDevNum, //Add for other corp. [dan.yang 2011.07.13]
DEVLIST *DeviceList,
ULONG *devIndex,
ULONG *OutEntries);
BOOL ADVCMNAPI Acm_GetErrorMessage(U32 ErrorCode, PI8 lpszError, U32 nMaxError);// [9/5/2011 dan.yang]
U32 ADVCMNAPI Acm_GpMoveCircularRel_Angle(HAND GroupHandle, // [8/15/2012 dan.yang]
PF64 CenterArray,
U16 Degree,
PU32 ArrayElements,
I16 Direction);
U32 ADVCMNAPI Acm_GpMoveCircularAbs_Angle(HAND GroupHandle, // [8/15/2012 dan.yang]
PF64 CenterArray,
U16 Degree,
PU32 ArrayElements,
I16 Direction);
//Device operation
U32 ADVCMNAPI Acm_DevOpen(U32 DeviceNumber, PHAND DeviceHandle);
U32 ADVCMNAPI Acm_DevReOpen(HAND DeviceHandle); // [11/25/2014 dan]
U32 ADVCMNAPI Acm_DevClose(PHAND DeviceHandle);
U32 ADVCMNAPI Acm_DevReadEEPROM(HAND DeviceHandle, U16 EEPROMAddr, PU16 readValue);
U32 ADVCMNAPI Acm_DevWriteEEPROM(HAND DeviceHandle, U16 EEPROMAddr, U16 writeValue);
U32 ADVCMNAPI Acm_DevReadEEPROM_Ex(HAND DeviceHandle, U16 PrivateID, PU32 PassWordArray, U32 PassArrayCnt, PU32 ReadArray, U32 BufferLength);// [6/15/2012 dan.yang]
U32 ADVCMNAPI Acm_DevWriteEEPROM_Ex(HAND DeviceHandle, U16 PrivateID, PU32 PassWordArray, U32 PassArrayCnt, PU32 WriteArray, U32 BufferLength); // [6/15/2012 dan.yang]
U32 ADVCMNAPI Acm_GetProperty(HAND Handle, U32 ProperyID, PVOID Buffer, PU32 BufferLength);
U32 ADVCMNAPI Acm_SetProperty(HAND Handle, U32 ProperyID, PVOID Buffer, U32 BufferLength);
U32 ADVCMNAPI Acm_EnableMotionEvent(HAND DeviceHandle,
PU32 AxEnableEvtArray,
PU32 GpEnableEvtArray,
U32 AxArrayElements,
U32 GpArrayElements);
U32 ADVCMNAPI Acm_CheckMotionEvent(HAND DeviceHandle,
PU32 AxEvtStatusArray,
PU32 GpEvtStatusArray,
U32 AxArrayElements,
U32 GpArrayElements,
U32 Millisecond);
U32 ADVCMNAPI Acm_CancelCheckEvent (HAND ObjectHandle);
U32 ADVCMNAPI Acm_DevLoadConfig(HAND DeviceHandle, PI8 ConfigPath);
U32 ADVCMNAPI Acm_DevFwDownload(HAND DeviceHandle, U32 Data, U32 DataID); //internal function don't release.
U32 ADVCMNAPI Acm_DevSlaveFwDownload(HAND DeviceHandle, U16 RingNo, U16 Position, PI8 FileName, PI8 FilePath, U32 Password); // [6/4/2015 andy.wang]
U32 ADVCMNAPI Acm_DevDownloadCAMTable (HAND DeviceHandle,
U32 CamTableID,
PF64 pMasterArray,
PF64 pSlaveArray,
PF64 pPointRangeArray,
PF64 pPointSlopeArray,
U32 ArrayElements);
U32 ADVCMNAPI Acm_DevLoadCAMTableFile(HAND DeviceHandle, PI8 FilePath, U32 CamTableID, PU32 Range, PU32 PointsCount); // [dan.yang 2011.08.22]
U32 ADVCMNAPI Acm_DevConfigCAMTable(HAND DeviceHandle, //Add for pci1265 and pci1245 [dan.yang 2011.06.23]
U32 CamTableID,
U32 Periodic,
U32 MasterAbsolute,
U32 SlaveAbsolute);
U32 ADVCMNAPI Acm_DevReadMailBox(HAND Handle, U16 par_id, U32 data_index, U32 data_count, PU32 DataBuffer); //[dan.yang 2012.12.28]
U32 ADVCMNAPI Acm_DevWriteMailBox(HAND Handle, U16 par_id, U32 data_index, U32 data_count, PU32 DataBuffer); //[dan.yang 2012.12.28]
U32 ADVCMNAPI Acm_LoadENI(HAND DeviceHandle, PI8 FilePath); // [11/12/2014 dan]
U32 ADVCMNAPI Acm_DevGetComStatus(HAND DeviceHandle, U16 RingNo, PU16 pStatus); // [11/20/2014 dan]
U32 ADVCMNAPI Acm_DevGetSlaveStates(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PU16 pStatus);
U32 ADVCMNAPI Acm_DevGetErrorTable(HAND DeviceHandle, U16 RingNo, PU32 ErrorTableArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_DevEnableEvent(HAND DeviceHandle, U32 MasEnableEvt); // [11/20/2014 dan]
U32 ADVCMNAPI Acm_DevCheckEvent(HAND DeviceHandle, PU32 MasCheckEvt, U32 Millisecond); // [11/20/2014 dan]
U32 ADVCMNAPI Acm_DevGetSlaveInfo(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PVOID pInfo);
U32 ADVCMNAPI Acm_DevGetMasInfo(HAND DeviceHandle, PVOID pMasInfo, PU16 SlaveIPArray, PU32 SlvCnt);
U32 ADVCMNAPI Acm_DevGetSlaveDataCnt(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, U8 DataType, PU32 DataCnt);
U32 ADVCMNAPI Acm_DevGetSlaveFwVersion(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, OUT char *VersionInfo); // [6/4/2015 andy.wang]
U32 ADVCMNAPI Acm_DevSetSlaveID(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, U16 SlaveNewIP); // [6/23/2015 andy.wang]
U32 ADVCMNAPI Acm_WriteRingBuffer(HAND Handle, U32 cmd_id, U32 data_index, U32 data_cnt, PU32 dataBuffer);
U32 ADVCMNAPI Acm_ReadRingBuffer(HAND Handle, PU32 cmd_id, PU32 data_index, U32 data_cnt, PU32 dataBuffer);
U32 ADVCMNAPI Acm_DevGetModuleInfo(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PU32 ModIDArray, PU32 ModCnt);
U32 ADVCMNAPI Acm_DevSetSlaveID(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, U16 SlaveNewIP);
// [2/28/2014 dan.yang]
U32 ADVCMNAPI Acm_GetU32Property(HAND Handle, U32 ProperyID, PU32 Value);
U32 ADVCMNAPI Acm_GetI32Property(HAND Handle, U32 ProperyID, PI32 Value);
U32 ADVCMNAPI Acm_GetF64Property(HAND Handle, U32 ProperyID, PF64 Value);
U32 ADVCMNAPI Acm_GetStringProperty (HAND Handle, U32 ProperyID, PU8 Value);
U32 ADVCMNAPI Acm_SetU32Property (HAND Handle, U32 ProperyID, U32 Value);
U32 ADVCMNAPI Acm_SetI32Property (HAND Handle, U32 ProperyID, I32 Value);
U32 ADVCMNAPI Acm_SetF64Property (HAND Handle, U32 ProperyID, F64 Value);
U32 ADVCMNAPI Acm_SetStringProperty (HAND Handle, U32 ProperyID, PU8 Value);
U32 ADVCMNAPI Acm_CheckVersion(HAND DeviceHandle, U32 VersionID, PU32 Result); // [11/3/2015 dandan.yang]:just for utility
// [11/20/2014 dan]
U32 ADVCMNAPI Acm_GetChannelProperty(HAND Handle, U32 ChannelID, U32 ProperyID, PF64 Value);
U32 ADVCMNAPI Acm_SetChannelProperty(HAND Handle, U32 ChannelID, U32 ProperyID, F64 Value);
U32 ADVCMNAPI Acm_GetMultiChannelProperty(HAND Handle, U32 ProperyID, U32 StartChID, U32 ChCount, PF64 ValueArray);
U32 ADVCMNAPI Acm_SetMultiChannelProperty(HAND Handle, U32 ProperyID, U32 StartChID, U32 ChCount, PF64 ValueArray);
U32 ADVCMNAPI Acm_DevMutiTrigSetCmpDO(HAND DeviceHandle,U32 OFForON);
U32 ADVCMNAPI Acm_DevMutiTrigForceCmpOut(HAND DeviceHandle, U32 OFForON);
//Master device operation
U32 ADVCMNAPI Acm_MasStartRing(HAND DeviceHandle, U16 RingNo);
U32 ADVCMNAPI Acm_MasStopRing(HAND DeviceHandle, U16 RingNo);
U32 ADVCMNAPI Acm_MasGetComStatus(HAND DeviceHandle, U16 RingNo, PU16 pStatus);
U32 ADVCMNAPI Acm_MasGetComCyclicTime(HAND DeviceHandle, U16 RingNo, PF64 pTime);
U32 ADVCMNAPI Acm_MasGetDataCyclicTime(HAND DeviceHandle, U16 RingNo, PF64 DataCyclicTime);
U32 ADVCMNAPI Acm_MasGetActiveTable(HAND DeviceHandle, U16 RingNo, PU32 ActiveTableArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_MasGetErrorTable(HAND DeviceHandle, U16 RingNo, PU32 ErrorTableArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_MasGetSlaveInfo(HAND DeviceHandle, U16 RingNo, U16 SlaveIP, PU32 pInfo);
U32 ADVCMNAPI Acm_MasLogComStatus(HAND DeviceHandle, U16 RingNo);
U32 ADVCMNAPI Acm_MasTrigOut(HAND DeviceHandle, U16 RingNo);//Engineer function, don't release
U32 ADVCMNAPI Acm_MasGetRingStatus(HAND DeviceHandle, U16 RingNo, PU16 pStatus);//internal function don't release.
//Axis operation
U32 ADVCMNAPI Acm_AxOpen(HAND DeviceHandle, U16 PhyAxis, PHAND AxisHandle);
U32 ADVCMNAPI Acm_AxOpenbyID(HAND DeviceHandle, U16 SlaveIP, PHAND AxisHandle);//Add for pci1203
U32 ADVCMNAPI Acm_AxClose(PHAND AxisHandle);
U32 ADVCMNAPI Acm_AxSetSvOn(HAND AxisHandle, U32 OnOff);
U32 ADVCMNAPI Acm_AxSetErcOn(HAND AxisHandle, U32 OnOff);
U32 ADVCMNAPI Acm_AxResetAlm(HAND AxisHandle, U32 OnOff);
U32 ADVCMNAPI Acm_AxMoveRel(HAND AxisHandle, F64 Distance);
U32 ADVCMNAPI Acm_AxMoveAbs(HAND AxisHandle, F64 Position);
U32 ADVCMNAPI Acm_AxMoveRel_EC(HAND AxisHandle, F64 Position);//zhaocui add 20131203 for hongjin
U32 ADVCMNAPI Acm_AxMoveVel(HAND AxisHandle, U16 Direction);
U32 ADVCMNAPI Acm_AxStopDec(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxStopEmg(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxMoveImpose(HAND AxisHandle, F64 Position, F64 NewVel); //Add for pci1265 and pci1245 [dan.yang 2011.04.20]
U32 ADVCMNAPI Acm_AxHomeEx(HAND AxisHandle, U32 DirMode);
U32 ADVCMNAPI Acm_AxHome(HAND AxisHandle, U32 HomeMode, U32 DirMode);
U32 ADVCMNAPI Acm_AxMoveHome(HAND AxisHandle, U32 HomeMode, U32 Dir);
// U32 Acm_AxPauseMotion(U32 AxisHandle);
// U32 Acm_AxResumeMotion(U32 AxisHandle);
U32 ADVCMNAPI Acm_AxChangeVel(HAND AxisHandle, F64 NewVel);
U32 ADVCMNAPI Acm_AxChangePos(HAND AxisHandle, F64 NewPos);
U32 ADVCMNAPI Acm_AxChangeVelByRate(HAND AxisHandle, U32 Rate); // [11/21/2012 dan.yang]
U32 ADVCMNAPI Acm_AxResetError(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxGetState(HAND AxisHandle, PU16 State);
U32 ADVCMNAPI Acm_AxGetMotionIO(HAND AxisHandle, PU32 Status);
U32 ADVCMNAPI Acm_AxGetMotionStatus(HAND AxisHandle, PU32 Status);
U32 ADVCMNAPI Acm_GetLastError(HAND Handle);
U32 ADVCMNAPI Acm_AxGetCmdPosition(HAND AxisHandle, PF64 Position);
U32 ADVCMNAPI Acm_AxGetMachPosition(HAND AxisHandle, PF64 Position);
U32 ADVCMNAPI Acm_AxSetCmdPosition(HAND AxisHandle, F64 Position);
U32 ADVCMNAPI Acm_AxGetActualPosition(HAND AxisHandle, PF64 Position);
U32 ADVCMNAPI Acm_AxSetActualPosition(HAND AxisHandle, F64 Position);
U32 ADVCMNAPI Acm_AxGetCmdVelocity(HAND AxisHandle, PF64 Velocity);
U32 ADVCMNAPI Acm_AxGetLagCounter(HAND AxisHandle, PF64 Position);
U32 ADVCMNAPI Acm_AxGetLatchData(HAND AxisHandle, U32 PositionNo, PF64 Position); // [5/30/2011 dan.yang]
U32 ADVCMNAPI Acm_AxStartSoftLatch(U32 AxisHandle);
U32 ADVCMNAPI Acm_AxSetExtDrive(HAND AxisHandle, U16 ExtDrvMode);
U32 ADVCMNAPI Acm_AxDoSetBit(HAND AxisHandle, U16 DoChannel, U8 BitData);
U32 ADVCMNAPI Acm_AxDoGetBit(HAND AxisHandle, U16 DoChannel, PU8 BitData);
U32 ADVCMNAPI Acm_AxDiGetBit(HAND AxisHandle, U16 DiChannel, PU8 BitData);
U32 ADVCMNAPI Acm_AxSimStartSuspendVel(HAND AxisHandle, U16 DriDir);
U32 ADVCMNAPI Acm_AxSimStartSuspendRel(HAND AxisHandle,F64 Distance);
U32 ADVCMNAPI Acm_AxSimStartSuspendAbs(HAND AxisHandle,F64 EndPoint);
U32 ADVCMNAPI Acm_AxSimStart(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxSimStop(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxResetLatch(HAND AxisHandle);//Add for pci1245 and pci1265 [dan.yang 2011.05.05]
U32 ADVCMNAPI Acm_AxGetLatchFlag(HAND AxisHandle, PU8 LatchFlag);//Add for pci1245 and pci1265 [dan.yang 2011.05.05]
U32 ADVCMNAPI Acm_AxTriggerLatch(HAND AxisHandle); //Add for pci1245 and pci1265 [dan.yang 2011.05.10]
U32 ADVCMNAPI Acm_AxCamInAx (HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.05.10]
HAND MasAxisHandle,
F64 MasterOffset,
F64 SlaveOffset,
F64 MasterScaling,
F64 SlaveScaling,
U32 CamTableID,
U32 RefSrc);
U32 ADVCMNAPI Acm_AxGearInAx(HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.06.23]
HAND MasAxisHandle,
I32 Numerator,
I32 Denominator,
U32 RefSrc,
U32 Absolute);
U32 ADVCMNAPI Acm_AxTangentInGp (HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.06.24]
HAND MasGroupHandle,
PI16 StartVectorArray, //must three dimension
U8 Working_plane, // 0: XY plane (default), 1: YZ plane, 2: XZ plane
I16 Direction); //0: same with master group. 1:opposite
U32 ADVCMNAPI Acm_AxGantryInAx (HAND AxisHandle, //Add for pci1245 and pci1265 [dan.yang 2011.06.24]
HAND MasAxisHandle,
I16 RefMasterSrc,
I16 direction); //0: same with master axis. 1:opposite
U32 ADVCMNAPI Acm_AxPhaseAx(HAND AxisHandle, F64 Acc, F64 Dec, F64 PhaseSpeed, F64 PhaseDist);
// [12/14/2012 dan.yang]
U32 ADVCMNAPI Acm_AxChangeVelEx(HAND AxisHandle,
F64 NewVel,
F64 NewAcc,
F64 NewDec);
U32 ADVCMNAPI Acm_AxChangeVelExByRate(HAND AxisHandle,
U32 Rate, //The percentage of velocity to be changed.
F64 NewAcc, // New acceleration.
F64 NewDec); // New deceleration.
// [12/14/2012 dan.yang]
U32 ADVCMNAPI Acm_AxStopDecEx(HAND AxisHandle,
F64 NewDec);
// [10/30/2013 dan.yang]: Add compare channel
U32 ADVCMNAPI Acm_AxSetChannelCmpSetting(HAND AxisHandle, U16 ChannelID, U32 CmpSrc, U32 CmpMethod, U32 CmpPulseMode, U32 CmpPulseWidth);
U32 ADVCMNAPI Acm_AxGetChannelCmpSetting(HAND AxisHandle, U16 ChannelID, PU32 CmpSrc, PU32 CmpMethod, PU32 CmpPulseMode, PU32 CmpPulseWidth);
U32 ADVCMNAPI Acm_AxResetChannelCmp (HAND AxisHandle, U16 ChannelID);
U32 ADVCMNAPI Acm_AxAddChannelCmpDatas(HAND AxisHandle, U16 ChannelID, PF64 TableArray, U32 ArrayCount);
U32 ADVCMNAPI Acm_AxGetChannelCmpData(HAND AxisHandle, U16 ChannelID, PF64 CmpData);
U32 ADVCMNAPI Acm_AxLoadChannelNextData(HAND AxisHandle, U16 ChannelID);
U32 ADVCMNAPI Acm_AxGetCmpbufferRemainCount(HAND AxisHandle, U16 ChannelID,PU32 DataCount);
U32 ADVCMNAPI Acm_AxDoSetByte(HAND AxisHandle, U16 DoPort, U8 ByteData);
U32 ADVCMNAPI Acm_AxDoGetByte(HAND AxisHandle, U16 DoPort, PU8 ByteData);
U32 ADVCMNAPI Acm_AxDiGetByte(HAND AxisHandle, U16 DiPort, PU8 ByteData);
//Group operation
U32 ADVCMNAPI Acm_GpAddAxis(PHAND GpHandle,HAND AxHandle);
U32 ADVCMNAPI Acm_GpRemAxis(HAND GroupHandle, HAND AxisHandle);
U32 ADVCMNAPI Acm_GpClose(PHAND GroupHandle);
U32 ADVCMNAPI Acm_GpGetState(HAND GroupHandle, PU16 State);
U32 ADVCMNAPI Acm_GpResetError(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpMoveLinearRel(HAND GroupHandle, PF64 DistanceArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_GpMoveLinearAbs(HAND GroupHandle, PF64 PositionArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_GpMoveDirectRel(HAND GroupHandle, PF64 DistanceArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_GpMoveDirectAbs(HAND GroupHandle, PF64 PositionArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_GpMoveCircularRel(HAND GroupHandle, PF64 CenterArray, PF64 EndArray,
PU32 ArrayElements, I16 Direction);
U32 ADVCMNAPI Acm_GpMoveCircularAbs(HAND GroupHandle, PF64 CenterArray, PF64 EndArray,
PU32 ArrayElements, I16 Direction);
U32 ADVCMNAPI Acm_GpMoveCircularRel_3P(HAND GroupHandle,
PF64 RefArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction );
U32 ADVCMNAPI Acm_GpMoveCircularAbs_3P(HAND GroupHandle,
PF64 RefArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction );
U32 ADVCMNAPI Acm_GpMoveHelixAbs(HAND GroupHandle,
PF64 CenterArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction); // [6/21/2011 dan.yang]
U32 ADVCMNAPI Acm_GpMoveHelixRel(HAND GroupHandle,
PF64 CenterArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction); // [6/21/2011 dan.yang]
U32 ADVCMNAPI Acm_GpMoveHelixAbs_3P(HAND GroupHandle,
PF64 RefArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction ); // [6/21/2011 dan.yang]
U32 ADVCMNAPI Acm_GpMoveHelixRel_3P(HAND GroupHandle,
PF64 RefArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction ); // [6/21/2011 dan.yang]
U32 ADVCMNAPI Acm_GpLoadPath(HAND GroupHandle, PI8 FilePath, PHAND PathHandle, PU32 pTotalCount);
U32 ADVCMNAPI Acm_GpUnloadPath(HAND GroupHandle, PHAND PathHandle);
U32 ADVCMNAPI Acm_GpMovePath(HAND GroupHandle, HAND PathHandle);
U32 ADVCMNAPI Acm_GpMoveAllPath(PHAND GroupHandle, U32 ArrayElements);
U32 ADVCMNAPI Acm_GpAddPath (HAND GroupHandle,U16 MoveCmd,U16 MoveMode,F64 FH,F64 FL,
PF64 EndPoint_DataArray,PF64 CenPoint_DataArray,PU32 ArrayElements);
U32 ADVCMNAPI Acm_GpResetPath (PHAND GroupHandle);
U32 ADVCMNAPI Acm_GpGetPathStatus (HAND GroupHandle, // IN, Group Handle
PU32 pCurIndex, // IN, OUT, Current index of path data in path buffer
PU32 pCurCmdFunc, // IN, OUT, Return current command function in executing
PU32 pRemainCount, // IN, OUT, Number of unexecuted path data in path
PU32 pFreeSpaceCount );
U32 ADVCMNAPI Acm_GpStopDec(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpStopEmg(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpChangeVel(HAND GroupHandle, F64 NewVelocity);
U32 ADVCMNAPI Acm_GpChangeVelByRate(HAND GroupHandle, U32 Rate);// [11/21/2012 dan.yang]
U32 ADVCMNAPI Acm_GpGetCmdVel(HAND GroupHandle, PF64 CmdVel); //Add for PCI1245 and PCI1265.[Dan.Yang 20110607]
U32 ADVCMNAPI Acm_GpMoveSelPath(HAND GroupHandle, // [6/22/2011 dan.yang]
HAND PathHandle,
U32 StartIndex, // range: 0~9999
U32 EndIndex, // range: 0~9999
U8 Repeat);
U32 ADVCMNAPI Acm_GpGetPathIndexStatus(HAND GroupHandle, // [6/22/2011 dan.yang]
U32 Index, // index of path
PU16 CmdFunc,
PU16 MoveMode,
PF64 FH,
PF64 FL,
PF64 EndPoint_DataArray,
PF64 CenPoint_DataArray,
PU32 ArrayElements);
U32 ADVCMNAPI Acm_GpResumeMotion(HAND GroupHandle); // [10/12/2012 dan.yang]
U32 ADVCMNAPI Acm_GpPauseMotion(HAND GroupHandle); // [10/12/2012 dan.yang]
U32 ADVCMNAPI Acm_GpMove3DArcAbs( HAND GroupHandle,
PF64 CenterArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction);//zhaocui add 201308
U32 ADVCMNAPI Acm_GpMove3DArcRel( HAND GroupHandle,
PF64 CenterArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction);//zhaocui add 201308
U32 ADVCMNAPI Acm_GpMove3DArcAbs_V( HAND GroupHandle,
PF64 CenterArray,
PF64 NVectorArray,
F64 Degree,
PU32 pArrayElements,
I16 Direction);//zhaocui add 201308
U32 ADVCMNAPI Acm_GpMove3DArcRel_V( HAND GroupHandle,
PF64 CenterArray,
PF64 NVectorArray,
F64 Degree,
PU32 pArrayElements,
I16 Direction);//zhaocui add 201308
U32 ADVCMNAPI Acm_GpMove3DArcAbs_3P( HAND GroupHandle,
PF64 RefArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction,
U16 cycCount);
U32 ADVCMNAPI Acm_GpMove3DArcRel_3P( HAND GroupHandle,
PF64 RefArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction,
U16 cycCount);
U32 ADVCMNAPI Acm_GpAddBSplinePath(
HAND GroupHandle, // Handle
F64 FH, // Feed rate
F64 FL, // Initial feed rate
F64 *CtrlP0List, // The control points of axis 0 (X-Axis)
F64 *CtrlP1List, // The control points of axis 1 (Y-Axis)
U32 CtrlPCount, // The number of control points
F64 *NodeList, // *B-Spine knot list
U32 NodeCount, // *The number of knot
U32 Degree, // B-Spline degree
U32 CutPointCount // The number of line segments used in interpolation
);
U32 Acm_GpAddCSplinePath(
HAND GroupHandle, // Group Handle
F64 FH, // Feed rate
F64 FL, // Initial feed rate
F64 *CtrlP0List, // The control points of axis 0 (X-Axis)
F64 *CtrlP1List, // The control points of axis 1 (Y-Axis)
F64 *Tightness, //
U32 CtrlPCount, // The number of control points
U32 CutPointCount // The number of line segments used in interpolation
);
// DIO
U32 ADVCMNAPI Acm_DaqDiGetByte(HAND DeviceHandle, U16 DiPort,PU8 ByteData);
U32 ADVCMNAPI Acm_DaqDiGetBit(HAND DeviceHandle, U16 DiChannel, PU8 BitData);
U32 ADVCMNAPI Acm_DaqDoSetByte(HAND DeviceHandle, U16 DoPort, U8 ByteData);
U32 ADVCMNAPI Acm_DaqDoSetBit(HAND DeviceHandle, U16 DoChannel, U8 BitData);
U32 ADVCMNAPI Acm_DaqDoGetByte(HAND DeviceHandle, U16 DoPort, PU8 ByteData);
U32 ADVCMNAPI Acm_DaqDoGetBit(HAND DeviceHandle, U16 DoChannel, PU8 BitData);
U32 ADVCMNAPI Acm_DaqDiGetBytes(HAND DeviceHandle, U16 StartPort, U16 NumPort, PU8 ByteDataArray);
U32 ADVCMNAPI Acm_DaqDoSetBytes(HAND DeviceHandle, U16 StartPort, U16 NumPort, PU8 ByteDataArray);
U32 ADVCMNAPI Acm_DaqDoGetBytes(HAND DeviceHandle, U16 StartPort, U16 NumPort, PU8 ByteDataArray);
//AIO [Dan.Yang 2011.07.19]
U32 ADVCMNAPI Acm_DaqAiGetRawData(HAND DeviceHandle, U16 AiChannel, PU16 AiData);
U32 ADVCMNAPI Acm_DaqAiGetVoltData(HAND DeviceHandle, U16 AiChannel, PF32 AiData);
U32 ADVCMNAPI Acm_DaqAiGetCurrData(HAND DeviceHandle, U16 AiChannel, PF32 AiData);
U32 ADVCMNAPI Acm_DaqAiZeroCalibration(HAND DeviceHandle, U16 AiChannel);
U32 ADVCMNAPI Acm_DaqAiSpanCalibration(HAND DeviceHandle, U16 AiChannel);
U32 ADVCMNAPI Acm_DaqAiGetChannelStatus(HAND DeviceHandle, U16 AiChannel, PU32 ChanStatus);
U32 ADVCMNAPI Acm_DaqAoSetRawData(HAND DeviceHandle, U16 AoChannel, U16 AoData);
U32 ADVCMNAPI Acm_DaqAoSetVoltData(HAND DeviceHandle, U16 AoChannel, F32 AoData);
U32 ADVCMNAPI Acm_DaqAoSetCurrData(HAND DeviceHandle, U16 AoChannel, F32 AoData);
U32 ADVCMNAPI Acm_DaqAoGetRawData(HAND DeviceHandle, U16 AoChannel, PU16 AoData);
U32 ADVCMNAPI Acm_DaqAoGetVoltData(HAND DeviceHandle, U16 AoChannel, PF32 AoData);
U32 ADVCMNAPI Acm_DaqAoGetCurrData(HAND DeviceHandle, U16 AoChannel, PF32 AoData);
U32 ADVCMNAPI Acm_DaqAoSetCaliType(HAND DeviceHandle, U16 AoChannel, U16 TrimType);
U32 ADVCMNAPI Acm_DaqAoSetCaliValue(HAND DeviceHandle, U16 AoChannel, U16 CaliData);
U32 ADVCMNAPI Acm_DaqAoCaliDone(HAND DeviceHandle, U16 AoChannel, bool done);
U32 ADVCMNAPI Acm_DaqAoCaliDefault(HAND DeviceHandle, U16 AoChannel);
U32 ADVCMNAPI Acm_DaqGetIOLinkStatus(HAND DeviceHandle, PU32 pStatus); //ydd 16.2.4
//Counter [Andy.Wang 2015.04.21]
U32 ADVCMNAPI Acm_DaqCntTriggerCmp(HAND DeviceHandle, U16 CntChannel);
U32 ADVCMNAPI Acm_DaqCntResetLatch(HAND DeviceHandle, U16 CntChannel);
U32 ADVCMNAPI Acm_DaqCntResetCmp(HAND DeviceHandle, U16 CntChannel);
U32 ADVCMNAPI Acm_DaqCntResetCnt(HAND DeviceHandle, U16 CntChannel);
U32 ADVCMNAPI Acm_DaqCntGetCounterData(HAND DeviceHandle, U16 CntChannel, PI32 CounterData);
U32 ADVCMNAPI Acm_DaqCntGetLatchData(HAND DeviceHandle, U16 CntChannel, PI32 LatchData);
U32 ADVCMNAPI Acm_DaqCntGetCmpData(HAND DeviceHandle, U16 CntChannel, PI32 CmpData);
//mining: Compare functions
U32 ADVCMNAPI Acm_AxSetCmpAuto(HAND AxisHandle, F64 Start, F64 End, F64 Interval);
U32 ADVCMNAPI Acm_AxGetCmpData(HAND AxisHandle, PF64 CmpPosition);
U32 ADVCMNAPI Acm_AxSetCmpData(HAND AxisHandle, F64 CmpPosition);
U32 ADVCMNAPI Acm_AxSetCmpTable(HAND AxisHandle, PF64 TableArray, I32 ArrayCount);
//Dan.Yang 2011.07.12 :Add for download Dsp Firmware program.
U32 ADVCMNAPI Acm_GetDSPFrmWareDwnLoadRate(HAND DeviceHandle, PF64 Percentage);
U32 ADVCMNAPI Acm_DevDownLoadDSPFrmWare_STP1(HAND DeviceHandle);
U32 ADVCMNAPI Acm_DevDownLoadDSPFrmWare_STP2(HAND DeviceHandle, PI8 FilePath);
U32 ADVCMNAPI Acm_DevDownLoadDSPFrmWare_STP3(HAND DeviceHandle);
U32 ADVCMNAPI Acm_DownLoadMCU_ST2(HAND DeviceHandle, U16 CPLDNo, PI8 FilePath);
U32 ADVCMNAPI Acm_DownLoadMCU_ST1(HAND DeviceHandle, U16 CPLDNo);
U32 ADVCMNAPI Acm_GetMCUDownLoadRate(HAND DeviceHandle, PF64 Percentage);
U32 ADVCMNAPI Acm_AxPWMOut(HAND AxisHandle,U32 OFForON,U32 PulseCount);
U32 ADVCMNAPI Acm_AxGetPWMOutState(HAND AxisHandle,PU32 OFForON);
U32 ADVCMNAPI Acm_DownLoadCPLD_ST2(HAND DeviceHandle, U16 CPLDNo, PI8 FilePath);
U32 ADVCMNAPI Acm_DownLoadCPLD_ST1(HAND DeviceHandle, U16 CPLDNo);
U32 ADVCMNAPI Acm_GetCPLDDownLoadRate(HAND DeviceHandle, PF64 Percentage);
U32 ADVCMNAPI Acm_DevMDaqConfig(HAND DeviceHandle, U16 ChannelID, U32 Period, U32 AxisNo, U32 Method, U32 ChanType, U32 Count);
U32 ADVCMNAPI Acm_DevMDaqStart(HAND DeviceHandle);
U32 ADVCMNAPI Acm_DevMDaqStop(HAND DeviceHandle);
U32 ADVCMNAPI Acm_DevMDaqReset(HAND DeviceHandle, U16 ChannelID);
U32 ADVCMNAPI Acm_DevMDaqGetStatus(HAND DeviceHandle, U16 ChannelID, PU16 CurrentCnt, PU8 Status);
U32 ADVCMNAPI Acm_DevMDaqGetData(HAND DeviceHandle, U16 ChannelID, U16 StartIndex, U16 MaxCount, PI32 DataBuffer);
U32 ADVCMNAPI Acm_DevMDaqGetConfig(HAND DeviceHandle, U16 ChannelID, PU32 Period, PU32 AxisNo, PU32 Method, PU32 ChanType, PU32 Count);
U32 ADVCMNAPI Acm_AxReadLatchBuffer(HAND AxisHandle, PF64 LatchDataArray, PU32 DataCnt);
U32 ADVCMNAPI Acm_AxResetLatchBuffer(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxGetLatchBufferStatus(HAND AxisHandle, PU32 RemainCnt, PU32 SpaceCnt);
//******************SCARA Robot*************************************************/
U32 Acm_GpRbSetMode(HAND GroupHandle, U16 Mode, PI32 CurActPosiArray, U32 ArrayElement);
U32 Acm_GpRbGetCmdPosition(HAND GroupHandle, PF64 PositionArray, U32 ArrayElement);
U32 Acm_GpRbGetActualPosition(HAND GroupHandle, PF64 PositionArray, U32 ArrayElement);
U32 Acm_GpRbGetArmCmdPosition(HAND GroupHandle, U16 ArmID, PF64 CurPosi);
U32 Acm_GpRbGetArmActualPosition(HAND GroupHandle, U16 ArmID, PF64 CurPosi);
//******************************************************************************/
//add by dujunling on 2012.11.22,for GM code function ,
U32 ADVCMNAPI Acm_GmOpen( IN HAND DeviceHandle, OUT PHAND GMSHandle );
U32 ADVCMNAPI Acm_GmClose(IN HAND GMSHandle);
U32 ADVCMNAPI Acm_GmLoadJob(IN HAND GMSHandle, IN PI8 JobFilePath, OUT PU32 ErrorRow);
U32 ADVCMNAPI Acm_GmUploadJob( IN HAND GMSHandle, IN OUT PI8 GCodeBuffer, IN OUT PU32 GCodeLength);
U32 ADVCMNAPI Acm_GmResetJob( IN HAND GMSHandle);
U32 ADVCMNAPI Acm_GmCommand(IN HAND GMSHandle, IN PI8 InputCmd);
U32 ADVCMNAPI Acm_GmRemoveAxisFromSystem(IN HAND GMSHandle, IN U32 uAxisId);
U32 ADVCMNAPI Acm_GmSetCompensationRadius(IN HAND GMSHandle, IN U32 DValue,IN F64 Radius);
U32 ADVCMNAPI Acm_GmGetCompensationRadius(IN HAND GMSHandle, OUT PU32 pCRArray,IN OUT PU32 pCRArrayLength);
U32 ADVCMNAPI Acm_GmSetCurrentCompensationRadius(IN HAND GMSHandle, IN F64 Radius);
U32 ADVCMNAPI Acm_GmGetCurrentCompensationRadius(IN HAND GMSHandle, IN OUT PF64 pCRadius);
U32 ADVCMNAPI Acm_GmSetToolLengthOffset(IN HAND GMSHandle, IN U32 HValue,IN F64 ToolLengthOffset);
U32 ADVCMNAPI Acm_GmGetToolLengthOffset(IN HAND GMSHandle, OUT PU32 pTLOArray,IN OUT PU32 pTLOArrayLength);
U32 ADVCMNAPI Acm_GmSetCurrentToolLengthOffset(IN HAND GMSHandle,IN F64 ToolLengthOffset);
U32 ADVCMNAPI Acm_GmGetCurrentToolLengthOffset(IN HAND GMSHandle, IN OUT PF64 pToolLengthOffset);
U32 ADVCMNAPI Acm_GmSetMacro(IN HAND GMSHandle, IN U32 uMacroCmd,IN const PI8 MacroCmdContent);
U32 ADVCMNAPI Acm_GmGetMacro(IN HAND GMSHandle, IN U32 uMacroCmd,OUT PI8 pMacroCmdContent,IN OUT PU32 pMacroCmdContentLength);
U32 ADVCMNAPI Acm_GmGetMacroArray(IN HAND GMSHandle,OUT PU32 pMacroArray,IN OUT PU32 pMacroArrayLength);
U32 ADVCMNAPI Acm_GmSetPreCustomFunction(IN HAND GMSHandle, IN U32 (*ptrPreCustomFunction)(const U32 CustomMCommand,U32 TWordValue,bool &bDone));
U32 ADVCMNAPI Acm_GmSetFinalCustomFunction(IN HAND GMSHandle, IN U32 (*ptrFinalCustomFunction)(const U32 CustomMCommand,U32 TWordValue,bool &bDone));
U32 ADVCMNAPI Acm_GmSetExtDoFunction(IN HAND GMSHandle, IN U32 (*ptrExtDoFunction)(U32 uDoCh,U32 uDoLevel));
U32 ADVCMNAPI Acm_GmSetExtDiFunction(IN HAND GMSHandle, IN U32 (*ptrExtDiFunction)(U32 uDiCh));
U32 ADVCMNAPI Acm_GmSetBreakPoint(IN HAND GMSHandle, IN U32 uBreakPoint);
U32 ADVCMNAPI Acm_GmAddBreakPoint(IN HAND GMSHandle, IN U32 uBreakPoint);
U32 ADVCMNAPI Acm_GmRemoveBreakPoint(IN HAND GMSHandle, IN U32 uBreakPoint);
U32 ADVCMNAPI Acm_GmClearBreakPoint(IN HAND GMSHandle);
U32 ADVCMNAPI Acm_GmSetSpindleRatio(IN HAND GMSHandle, IN F64 fSpindleRatio);
U32 ADVCMNAPI Acm_GmSetJogRatio(IN HAND GMSHandle, IN F64 fJogRatio);
U32 ADVCMNAPI Acm_GmSetFastFeedRateRatio(IN HAND GMSHandle, IN U32 uAxis,IN F64 fFastFeedRateRatio);
U32 ADVCMNAPI Acm_GmGetFastFeedRateRatio(IN HAND GMSHandle, IN U32 uAxis,OUT PF64 pFastFeedRateRatio);
U32 ADVCMNAPI Acm_GmSetFeedRateRatio(IN HAND GMSHandle, IN F64 fFeedRateRatio);
U32 ADVCMNAPI Acm_GmGetFeedRateRatio(IN HAND GMSHandle, OUT PF64 pFeedRateRatio);
U32 ADVCMNAPI Acm_GmSetFeedRate(IN HAND GMSHandle, IN F64 fFeedRate);
U32 ADVCMNAPI Acm_GmGetFeedRate(IN HAND GMSHandle, IN PF64 pFeedRate);
U32 ADVCMNAPI Acm_GmSetFastFeedRate(IN HAND GMSHandle, IN F64 fFastFeedRate);
U32 ADVCMNAPI Acm_GmGetFastFeedRate(IN HAND GMSHandle, OUT PF64 pFastFeedRate);
U32 ADVCMNAPI Acm_GmSetOptionPause(IN HAND GMSHandle, IN U32 uOptionPause);
U32 ADVCMNAPI Acm_GmGetOptionPause(IN HAND GMSHandle, OUT PU32 pOptionPause);
U32 ADVCMNAPI Acm_GmSetOptionSkip(IN HAND GMSHandle, IN U32 uOptionSkip);
U32 ADVCMNAPI Acm_GmGetOptionSkip(IN HAND GMSHandle, OUT PU32 pOptionSkip);
U32 ADVCMNAPI Acm_GmSetModuleRange(IN HAND GMSHandle, IN U32 ModuleRange);
U32 ADVCMNAPI Acm_GmGetModuleRange(IN HAND GMSHandle, IN PU32 pModuleRange);
U32 ADVCMNAPI Acm_GmGetCurrentFeedRate(IN HAND GMSHandle, OUT PF64 pCurrentFeedRate);
U32 ADVCMNAPI Acm_GmGetCurrentRow(IN HAND GMSHandle, OUT PU32 CurrentRow);
U32 ADVCMNAPI Acm_GmGetErrorRow(IN HAND GMSHandle, OUT PU32 ErrorRow);
U32 ADVCMNAPI Acm_GmGetCurrentCommand(IN HAND GMSHandle, OUT PI8 CurrentCmd, IN OUT PU32 CurrentCmdLength);
U32 ADVCMNAPI Acm_GmGetState(IN HAND GMSHandle, OUT PU32 GmsState);
U32 ADVCMNAPI Acm_GmGetPattern(IN HAND GMSHandle, IN U32 GmsPatternId, PVOID Buffer, PU32 BufferLength);
U32 ADVCMNAPI Acm_GmGetCurrentCoordinateSystem(IN HAND GMSHandle, OUT PU32 pCurrentCoordinateIndex,OUT PF64 pCoordinateArray,IN OUT PU32 pArrayLength);
U32 ADVCMNAPI Acm_GmGetError(IN HAND GMSHandle, OUT PU32 ErrorCode, OUT PU32 LastError);
U32 ADVCMNAPI Acm_GmDxfToGCodeTextEx(IN PI8 DxfFilePath, IN F64 DxfProportion, IN U32 Ellipse_Cut_Min_Angel , IN U32 Spline_Cut_Step ,OUT PI8 GCodeBuffer, IN OUT PU32 Length);
U32 ADVCMNAPI Acm_GmDxfToGCodeText(IN PI8 DxfFilePath, IN F64 DxfProportion, OUT PI8 GCodeBuffer, IN OUT PU32 Length);
U32 ADVCMNAPI Acm_GmDxfToGCodeFileEx(IN PI8 DxfFilePath, IN F64 DxfProportion,IN U32 Ellipse_Cut_Min_Angel , IN U32 Spline_Cut_Step ,IN PI8 GcodeFilePath,OUT PU32 Length);
U32 ADVCMNAPI Acm_GmDxfToGCodeFile(IN PI8 DxfFilePath, IN F64 DxfProportion,IN PI8 GcodeFilePath,PU32 Length);
//Added by W.Y.Z on 2014.08.28 for P point function
U32 ADVCMNAPI Acm_GmSetPoint(IN HAND GMSHandle, IN U32 id, IN PF64 fPoint);
U32 ADVCMNAPI Acm_GmGetPoint(IN HAND GMSHandle, IN U32 id,OUT PF64 fPoint);
U32 ADVCMNAPI Acm_GmLoadPoint(IN HAND GMSHandle, IN PI8 FilePath);
U32 ADVCMNAPI Acm_GmSavePoint(IN HAND GMSHandle, IN PI8 FilePath);
U32 ADVCMNAPI Acm_GmResetPoint(IN HAND GMSHandle);
U32 ADVCMNAPI Acm_GmSetPointF(IN HAND GMSHandle, IN U32 id, IN PF64 fPoint,IN U32 filterFlag);
U32 ADVCMNAPI Acm_GmGetPointF(IN HAND GMSHandle, IN U32 id,OUT PF64 fPoint,OUT PU32 filterflag);
//U32 ADVCMNAPI Acm_GmLoadPointF(IN HAND GMSHandle, IN PI8 FilePath);
//U32 ADVCMNAPI Acm_GmSavePointF(IN HAND GMSHandle, IN PI8 FilePath);
//U32 ADVCMNAPI Acm_GmResetPointF(IN HAND GMSHandle);
U32 ADVCMNAPI Acm_GpMoveHelixRel_Angle(HAND GroupHandle,
PF64 CenterArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction);//added by zhaocui 201305
U32 ADVCMNAPI Acm_GpMoveHelixAbs_Angle(HAND GroupHandle,
PF64 CenterArray,
PF64 EndArray,
PU32 pArrayElements,
I16 Direction);//added by zhaocui 201305
U32 ADVCMNAPI Acm_AxSetPWMTableOnTime(HAND AxisHandle, PU32 TimeTableArray, I32 ArrayCount);//zhaocui add
U32 ADVCMNAPI Acm_AxGetINxStopStatus(HAND AxisHandle,PU32 Stop_Flag);// [2/28/2014 deng]
U32 ADVCMNAPI Acm_AxResetINxStopStatus(HAND AxisHandle);// [2/28/2014 deng]
U32 ADVCMNAPI Acm_GpGetINxStopStatus(HAND GroupHandle,PU32 Stop_Flag);// [2/28/2014 deng]
U32 ADVCMNAPI Acm_GpResetINxStopStatus(HAND GroupHandle);// [2/28/2014 deng]
U32 ADVCMNAPI Acm_AxJog(HAND AxisHandle,U16 Direction); //[5/22/2014 kai.yang]
U32 ADVCMNAPI Acm_AxSetCmpDO(HAND AxisHandle,U32 OFForON);// [12/3/2014 deng]
U32 ADVCMNAPI Acm_AxDownloadTorqueTable (HAND AxisHandle, PF64 pPositionArray, PF64 pTorqueArray, U32 ArrayElements); //[8/6/2015 andy.wang]
U32 ADVCMNAPI Acm_AxLoadTorqueTableFile(HAND AxisHandle, PI8 FilePath, PU32 PointsCount); //[8/6/2015 andy.wang]
U32 ADVCMNAPI Acm_AxResetPVTTable(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxLoadPVTTable(HAND AxisHandle, U16 Num, PF64 Pos, PF64 Vel, PF64 Time);
U32 ADVCMNAPI Acm_AxStartPVT(HAND AxisHandle, U16 rNum);
U32 ADVCMNAPI Acm_AxCheckPTBuffer(HAND AxisHandle,U16* remainblock);
U32 ADVCMNAPI Acm_AxAddPTData(HAND AxisHandle, F64 Pos, F64 time);
U32 ADVCMNAPI Acm_AxStartPT(HAND AxisHandle, U8 BfMode, U16 rNum);
U32 ADVCMNAPI Acm_AxResetPTData(HAND AxisHandle);
U32 ADVCMNAPI Acm_AxAddPVAData(HAND AxisHandle, F64 Position, PF64 VelArray, PF64 AccArray, PF64 DecArray, U32 ArrayElements);
//zhao cui add for robot 201307
U32 ADVCMNAPI Acm_RbGetActualPosition(HAND RbHandle, PF64 PositionArray, U32 ArrayElement);
U32 ADVCMNAPI Acm_RbGetCmdPosition(HAND RbHandle, PF64 PositionArray, U32 ArrayElement);
U32 ADVCMNAPI Acm_RbGetArmActualPosition(HAND RbHandle, U16 ArmID, PF64 CurPosi);
U32 ADVCMNAPI Acm_RbGetArmCmdPosition(HAND RbHandle, U16 ArmID, PF64 CurPosi);
U32 ADVCMNAPI Acm_RbOpen (HAND DeviceHandle,PHAND RbHandle);
U32 ADVCMNAPI Acm_RbClose (PHAND pRbHandle);
U32 ADVCMNAPI Acm_RbResetError (HAND RbHandle);
U32 ADVCMNAPI Acm_RbGetState (HAND RbHandle, PU16 PStates);
U32 ADVCMNAPI Acm_RbSetActPosition (HAND RbHandle, PF64 PositionArray, U32 ArrayElement);
U32 ADVCMNAPI Acm_RbMoveRel(HAND RbHandle, PF64 PosArray, PU32 ArrayElement);
U32 ADVCMNAPI Acm_RbMoveAbs(HAND RbHandle, PF64 PosArray, PU32 ArrayElement);
U32 ADVCMNAPI Acm_RbMoveDirectRel (HAND RbHandle, PF64 PositionArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_RbMoveDirectAbs (HAND RbHandle, PF64 PositionArray, PU32 ArrayElements);
U32 ADVCMNAPI Acm_RbMoveLinearRel( HAND RbHandle,PF64 PositionArray,PU32 pArrayElements);
U32 ADVCMNAPI Acm_RbMoveLinearAbs( HAND RbHandle,PF64 PositionArray,PU32 pArrayElements);
U32 ADVCMNAPI Acm_RbMoveArcAbs( HAND RbHandle,PF64 CenterArray,PF64 EndArray,PU32 pArrayElements, I16 Direction);
U32 ADVCMNAPI Acm_RbMoveArcRel( HAND RbHandle,PF64 CenterArray,PF64 EndArray,PU32 pArrayElements, I16 Direction);
U32 ADVCMNAPI Acm_RbMoveArcRel_3P ( HAND RbHandle,PF64 RefArray,PF64 EndArray,PU32 pArrayElements, I16 Direction);
U32 ADVCMNAPI Acm_RbMoveArcAbs_3P ( HAND RbHandle,PF64 RefArray,PF64 EndArray,PU32 pArrayElements, I16 Direction);
U32 ADVCMNAPI Acm_RbAddPath (HAND RbHandle,U16 MoveCmd,U16 MoveMode,F64 FH,F64 FL,
PF64 EndPoint_DataArray,PF64 CenPoint_DataArray,PU32 ArrayElements);
U32 ADVCMNAPI Acm_RbResetPath (PHAND RbHandle);
U32 ADVCMNAPI Acm_RbGetPathStatus (HAND RbHandle, // IN, Group Handle
PU32 pCurIndex, // IN, OUT, Current index of path data in path buffer
PU32 pCurCmdFunc, // IN, OUT, Return current command function in executing
PU32 pRemainCount, // IN, OUT, Number of unexecuted path data in path
PU32 pFreeSpaceCount );
U32 ADVCMNAPI Acm_RbMovePath(HAND RbHandle, HAND PathHandle);
U32 ADVCMNAPI Acm_RbChangeVel(HAND RbHandle, F64 NewVelocity);
U32 ADVCMNAPI Acm_RbChangeVelByRate(HAND RbHandle, U32 Rate);
U32 ADVCMNAPI Acm_RbGetCmdVel(HAND RbHandle, PF64 CmdVel);
U32 ADVCMNAPI Acm_RbStopDec ( HAND RbHandle);
U32 ADVCMNAPI Acm_RbStopEmg(HAND RbHandle);
U32 ADVCMNAPI Acm_RbPauseMotion(HAND RbHandle);
U32 ADVCMNAPI Acm_RbResumeMotion(HAND RbHandle);
bool IsGMSHandleValid(HAND GMSHandle);
U32 ADVCMNAPI Acm_RbLoadPath(HAND RbHandle, PI8 FilePath, PHAND PathHandle, PU32 pTotalCount);// [6/26/2014 deng]
U32 ADVCMNAPI Acm_RbUnloadPath(HAND RbHandle, PHAND PathHandle);// [6/26/2014 deng]
U32 ADVCMNAPI Acm_RbMoveSelPath(HAND RbHandle,
HAND PathHandle,
U32 StartIndex, // range: 0~9999
U32 EndIndex, // range: 0~9999
U8 Repeat);// [6/26/2014 deng]
U32 ADVCMNAPI Acm_RbGetPathIndexStatus(HAND RbHandle,
U32 Index, // index of path
PU16 CmdFunc,
PU16 MoveMode,
PF64 FH,
PF64 FL,
PF64 EndPoint_DataArray,
PF64 CenPoint_DataArray,
PU32 ArrayElements);// [6/26/2014 deng]
U32 ADVCMNAPI Acm_RbSetExtDrive(HAND RbHandle, U16 ExtDrvMode);// [7/3/2014 deng]
U32 ADVCMNAPI Acm_RbJog(HAND RbHandle,U16 Direction);// [7/3/2014 deng]
U32 ADVCMNAPI Acm_ServoSetCom(U32 ComPortID, U32 Baudrate, U32 Timeout);// [7/17/2014 yang.kai]
U32 ADVCMNAPI Acm_ServoGetAbsPosition(
U32 ComPortID,
U32 ServoType,
U32 ServoID,
U32 ServoAbsResolution,
U32 ServoCmdResolution,
U32 EncoderDir,
PF64 AbsPosition
); // [7/17/2014 yang.kai]
U32 ADVCMNAPI Acm_AxSetCmdPosi_Pulse(HAND AxisHandle,F64 Position); // [7/17/2014 yang.kai]
U32 ADVCMNAPI Acm_AxMoveAbs_EC(HAND AxisHandle, F64 Position);// [8/18/2014 deng]
U32 ADVCMNAPI Acm_RbGetWorldPosFromJoint(HAND RbHandle,PF64 JointPosArray, PF64 WorldPosArray); // [8/12/2014 yang.kai]
U32 ADVCMNAPI Acm_GetDevNum(U32 DevType,U32 BoardID,PU32 DeviceNumber); // [9/2/2014 yang.kai]
U32 ADVCMNAPI Acm_GpMoveArcRel_Angle(HAND GroupHandle, // [9/22/2014 yang.kai]
PF64 CenterArray,
F64 Degree,
PU32 ArrayElements,
I16 Direction);
U32 ADVCMNAPI Acm_GpMoveArcAbs_Angle(HAND GroupHandle, // [9/22/2014 yang.kai]
PF64 CenterArray,
F64 Degree,
PU32 ArrayElements,
I16 Direction);
U32 ADVCMNAPI Acm_AxChangeCmpIndex(HAND AxisHandle, // [9/22/2014 yang.kai]
U32 CmpIndex);
//mapping
U32 ADVCMNAPI Acm_DevSaveMapFile(HAND DeviceHandle, PI8 FilePath);
U32 ADVCMNAPI Acm_DevLoadMapFile(HAND DeviceHandle, PI8 FilePath);
U32 ADVCMNAPI Acm_DevUpLoadMapInfo(HAND DeviceHandle, U16 MapType, PDEV_IO_MAP_INFO MapInfoArray, PU32 ArrayLength);
U32 ADVCMNAPI Acm_DevDownLoadMapInfo(HAND DeviceHandle, U16 MapType, PDEV_IO_MAP_INFO MapInfoArray, U32 ArrayLength);
//SDO
U32 ADVCMNAPI Acm_DevWriteSDOData(HAND DeviceHandle, IN U16 RingNo, IN U16 SlaveIP, IN U16 Index, IN U16 SubIndex, IN U16 Type, IN U16 DataSize, IN VOID *pValue);
U32 ADVCMNAPI Acm_DevReadSDOData(HAND DeviceHandle, IN U16 RingNo, IN U16 SlaveIP, IN U16 Index, IN U16 SubIndex, IN U16 Type, IN U16 DataSize, OUT VOID *pValue);
//ARES
U32 ADVCMNAPI Acm_DevDownloadAres(HAND DeviceHandle, PI8 FilePath);
U32 ADVCMNAPI Acm_DevGetAresVariable(HAND DeviceHandle, U32 Address, PF64 Value);
U32 ADVCMNAPI Acm_DevSetAresVariable(HAND DeviceHandle, U32 Address, F64 Value);
U32 ADVCMNAPI Acm_DevGetDownloadedAresName(HAND DeviceHandle, PDEV_ARES_INFO FileName, PU32 Count);
U32 ADVCMNAPI Acm_DevDeleteAresFile(HAND DeviceHandle, PI8 FileName);
U32 ADVCMNAPI Acm_DevClearAresFile(HAND DeviceHandle);
U32 ADVCMNAPI Acm_GpGetRunningAresName(HAND GroupHandle, PI8 FileName);
U32 ADVCMNAPI Acm_GpGetAresState(HAND GroupHandle, PU16 pState);
U32 ADVCMNAPI Acm_GpLoadAresProgram(HAND GroupHandle, PI8 FileName);
U32 ADVCMNAPI Acm_GpRunAres(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpHoldAres(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpStopAres(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpGetAresCrc(HAND GroupHandle, PU32 Crc);
U32 ADVCMNAPI Acm_GpStepAres(HAND GroupHandle, U32 Offset);
U32 ADVCMNAPI Acm_GpSetAresBreakPoint(HAND GroupHandle, U32 Offset);
U32 ADVCMNAPI Acm_GpRemoveAresBreakPoint(HAND GroupHandle, U32 Offset);
U32 ADVCMNAPI Acm_GpClearAresBreakPoints(HAND GroupHandle);
U32 ADVCMNAPI Acm_GpGetAresBreakPoints(HAND GroupHandle, PU32 Breakpoints, PU32 Count);
U32 ADVCMNAPI Acm_GpGetAresNextOffset(HAND GroupHandle, PU32 Offset);
#ifdef __cplusplus
}
#endif