添加项目文件。
parent
3057ca84c8
commit
85ad5e1c30
Binary file not shown.
@ -0,0 +1,767 @@
|
|||||||
|
//
|
||||||
|
// 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
|
||||||
@ -0,0 +1,95 @@
|
|||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ADV_MOT_DEV_H__
|
||||||
|
#define __ADV_MOT_DEV_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
| ************ Advantech Motion Master Device Type ID************************ |
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define Adv_UNKNOWN 0xff
|
||||||
|
|
||||||
|
// ADAM Motion Series
|
||||||
|
#define Adv_ADAM_MOTION 0x0
|
||||||
|
#define Adv_ADAM5202 (Adv_ADAM_MOTION + 0)
|
||||||
|
#define Adv_ADAM5240 (Adv_ADAM_MOTION + 1)
|
||||||
|
#define Adv_APAX5202 (Adv_ADAM_MOTION + 2)
|
||||||
|
|
||||||
|
// IO Motion Series
|
||||||
|
#define Adv_IO_MOTION 0x20
|
||||||
|
#define Adv_PCI1240 (Adv_IO_MOTION + 0)
|
||||||
|
#define Adv_PCM3240 (Adv_IO_MOTION + 1)
|
||||||
|
#define Adv_PCI1202 (Adv_IO_MOTION + 2)
|
||||||
|
#define Adv_AMAX2050 (Adv_IO_MOTION + 3)
|
||||||
|
#define Adv_PCM3202 (Adv_IO_MOTION + 4)
|
||||||
|
#define Adv_PCI1220 (Adv_IO_MOTION + 5)
|
||||||
|
#define Adv_PCI1244 (Adv_IO_MOTION + 6)
|
||||||
|
#define Adv_PCI1245 (Adv_IO_MOTION + 7)
|
||||||
|
#define Adv_PCI1265 (Adv_IO_MOTION + 8)
|
||||||
|
#define Adv_PCI1245E (Adv_IO_MOTION + 9)
|
||||||
|
#define Adv_PCI1285 (Adv_IO_MOTION + 0xa)
|
||||||
|
#define Adv_PCI1285E (Adv_IO_MOTION + 0xb)
|
||||||
|
#define Adv_PCI1245V (Adv_IO_MOTION + 0xc)
|
||||||
|
#define Adv_PCI1245L (Adv_IO_MOTION + 0xd)
|
||||||
|
#define Adv_PCI1245S (Adv_IO_MOTION + 0xe)
|
||||||
|
#define Adv_PCI1285V (Adv_IO_MOTION + 0xf)
|
||||||
|
#define Adv_MIC3285 (Adv_IO_MOTION + 0x10)
|
||||||
|
#define Adv_MIC3245 (Adv_IO_MOTION + 0x11)
|
||||||
|
#define Adv_PCI1245HP (Adv_IO_MOTION + 0x12) //YDD 2015.6.1
|
||||||
|
#define Adv_PCI1245LIO (Adv_IO_MOTION + 0x13) //YDD 2015.6.1
|
||||||
|
|
||||||
|
|
||||||
|
//YDD 2015.9.29
|
||||||
|
#define Adv_MOTION_MVP 0xD0
|
||||||
|
#define Adv_MVP3245 (Adv_MOTION_MVP + 0x01)
|
||||||
|
#define Adv_MVP3245P (Adv_MOTION_MVP + 0x02)
|
||||||
|
|
||||||
|
#define Adv_IO_MOTION_EX 0x80 //Custom
|
||||||
|
#define Adv_PCI1285HT (Adv_IO_MOTION_EX + 0x0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define AdV_VIRTUAL_DIO_CARD 0x90 //VIRTUAL DIO CARD
|
||||||
|
#define AdV_V_PCI1750 (AdV_VIRTUAL_DIO_CARD + 0)
|
||||||
|
|
||||||
|
|
||||||
|
#define Adv_VirtualMotionCard (0xA0)
|
||||||
|
#define Adv_V_PCI1245 (Adv_VirtualMotionCard + Adv_PCI1245 -Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1245E (Adv_VirtualMotionCard + Adv_PCI1245E-Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1245V (Adv_VirtualMotionCard + Adv_PCI1245V-Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1245S (Adv_VirtualMotionCard + Adv_PCI1245S-Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1245L (Adv_VirtualMotionCard + Adv_PCI1245L-Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1265 (Adv_VirtualMotionCard + Adv_PCI1265 -Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1285 (Adv_VirtualMotionCard + Adv_PCI1285 -Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1285E (Adv_VirtualMotionCard + Adv_PCI1285E-Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1285V (Adv_VirtualMotionCard + Adv_PCI1285V-Adv_IO_MOTION)
|
||||||
|
#define Adv_V_PCI1203 (Adv_VirtualMotionCard + Adv_PCI1203-Adv_IO_MOTION)
|
||||||
|
|
||||||
|
|
||||||
|
//IO Slave Series
|
||||||
|
#define Adv_AMAX_SLAVE 0x40
|
||||||
|
#define Adv_AMAX2210 (Adv_AMAX_SLAVE + 0)
|
||||||
|
#define Adv_AMAX2240 (Adv_AMAX_SLAVE + 1)
|
||||||
|
#define Adv_AMAX2710 (Adv_AMAX_SLAVE + 2)
|
||||||
|
#define Adv_AMAX2754 (Adv_AMAX_SLAVE + 3)
|
||||||
|
#define Adv_AMAX2730 (Adv_AMAX_SLAVE + 4)
|
||||||
|
#define Adv_AMAX2756 (Adv_AMAX_SLAVE + 5)
|
||||||
|
#define Adv_AMAX2752 (Adv_AMAX_SLAVE + 6)
|
||||||
|
|
||||||
|
//EtherCAT
|
||||||
|
#define Adv_EtherCAT 0x60
|
||||||
|
#define Adv_ADAM5000 (Adv_EtherCAT + 1)
|
||||||
|
#define Adv_PCI1203 (Adv_EtherCAT + 2)
|
||||||
|
#endif // __ADV_MOT_DEV_H__
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,760 @@
|
|||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ADV_MOT_ERR_H__
|
||||||
|
#define __ADV_MOT_ERR_H__
|
||||||
|
|
||||||
|
#ifndef SUCCESS
|
||||||
|
#define SUCCESS 0x00000000
|
||||||
|
#endif
|
||||||
|
#define Warning 0x10000000
|
||||||
|
#define FuncError 0x80000000
|
||||||
|
#define CommError 0x80001000
|
||||||
|
#define MotionError 0x80002000
|
||||||
|
#define DaqError 0x80003000
|
||||||
|
#define DevEvtError 0x80004000
|
||||||
|
#define DspError 0x80005000 // [9/26/2011 dan.yang]
|
||||||
|
#define DspAxError 0x80005100 // [9/26/2011 dan.yang]
|
||||||
|
#define DspGpError 0x80005200 // [9/26/2011 dan.yang]
|
||||||
|
#define DspRbError 0x80005500
|
||||||
|
#define GmError 0x81000000 //by dujunling on 2012.11.22 for GM code error
|
||||||
|
|
||||||
|
#define ECTError 0x83000000 // [9/22/2014 dan]: Add for EtherCAT
|
||||||
|
#define ECTDevError 0x83010000 // [3/24/2015 Andy] : EtherCAT master & slave error
|
||||||
|
#define ECTDevSDOError 0x83020000 //Error from SDO communication 0x8301 XXXX
|
||||||
|
#define ECTMotionError 0x83030000 //Error from Motion port communication
|
||||||
|
#define ECTIOError 0x83040000 //Error from IO port communication
|
||||||
|
#define ECTAxError 0x83050000 //Error from CiA402 ecat driver
|
||||||
|
#define ECAT_DriveError 0x83100000 // [3/24/2015 Andy] : EtherCAT Drive error
|
||||||
|
|
||||||
|
#define InvalidDevNumber (FuncError + 0)
|
||||||
|
#define DevRegDataLost (FuncError + 1)
|
||||||
|
#define LoadDllFailed (FuncError + 2)
|
||||||
|
#define GetProcAddrFailed (FuncError + 3)
|
||||||
|
#define MemAllocateFailed (FuncError + 4)
|
||||||
|
#define InvalidHandle (FuncError + 5)
|
||||||
|
#define CreateFileFailed (FuncError + 6)
|
||||||
|
#define OpenEventFailed (FuncError + 7)
|
||||||
|
#define EventTimeOut (FuncError + 8)
|
||||||
|
#define InvalidInputParam (FuncError + 9)
|
||||||
|
#define PropertyIDNotSupport (FuncError + 10)
|
||||||
|
#define PropertyIDReadOnly (FuncError + 11)
|
||||||
|
#define ConnectWinIrqFailed (FuncError + 12)
|
||||||
|
|
||||||
|
#define InvalidAxCfgVel (FuncError + 13)
|
||||||
|
#define InvalidAxCfgAcc (FuncError + 14)
|
||||||
|
#define InvalidAxCfgDec (FuncError + 15)
|
||||||
|
#define InvalidAxCfgJerk (FuncError + 16)
|
||||||
|
#define InvalidAxParVelLow (FuncError + 17)
|
||||||
|
#define InvalidAxParVelHigh (FuncError + 18)
|
||||||
|
#define InvalidAxParAcc (FuncError + 19)
|
||||||
|
#define InvalidAxParDec (FuncError + 20)
|
||||||
|
#define InvalidAxParJerk (FuncError + 21)
|
||||||
|
#define InvalidAxPulseInMode (FuncError + 22)
|
||||||
|
#define InvalidAxPulseOutMode (FuncError + 23)
|
||||||
|
#define InvalidAxAlarmEn (FuncError + 24)
|
||||||
|
#define InvalidAxAlarmLogic (FuncError + 25)
|
||||||
|
#define InvalidAxInPEn (FuncError + 26)
|
||||||
|
#define InvalidAxInPLogic (FuncError + 27)
|
||||||
|
#define InvalidAxHLmtEn (FuncError + 28)
|
||||||
|
#define InvalidAxHLmtLogic (FuncError + 29)
|
||||||
|
#define InvalidAxHLmtReact (FuncError + 30)
|
||||||
|
#define InvalidAxSLmtPEn (FuncError + 31)
|
||||||
|
#define InvalidAxSLmtPReact (FuncError + 32)
|
||||||
|
#define InvalidAxSLmtPValue (FuncError + 33)
|
||||||
|
#define InvalidAxSLmtMEn (FuncError + 34)
|
||||||
|
#define InvalidAxSLmtMReact (FuncError + 35)
|
||||||
|
#define InvalidAxSLmtMValue (FuncError + 36)
|
||||||
|
#define InvalidAxOrgLogic (FuncError + 37)
|
||||||
|
#define InvalidAxOrgEnable (FuncError + 38)
|
||||||
|
#define InvalidAxEzLogic (FuncError + 39)
|
||||||
|
#define InvalidAxEzEnable (FuncError + 40)
|
||||||
|
#define InvalidAxEzCount (FuncError + 41)
|
||||||
|
#define InvalidAxState (FuncError + 42)
|
||||||
|
#define InvalidAxInEnable (FuncError + 43)
|
||||||
|
|
||||||
|
|
||||||
|
#define InvalidAxSvOnOff (FuncError + 44)
|
||||||
|
#define InvalidAxDistance (FuncError + 45)
|
||||||
|
#define InvalidAxPosition (FuncError + 46)
|
||||||
|
#define InvalidAxHomeModeKw (FuncError + 47)
|
||||||
|
|
||||||
|
#define InvalidAxCntInGp (FuncError + 48)
|
||||||
|
#define AxInGpNotFound (FuncError + 49)
|
||||||
|
#define AxIsInOtherGp (FuncError + 50)
|
||||||
|
#define AxCannotIntoGp (FuncError + 51)
|
||||||
|
#define GpInDevNotFound (FuncError + 52)
|
||||||
|
#define InvalidGpCfgVel (FuncError + 53)
|
||||||
|
#define InvalidGpCfgAcc (FuncError + 54)
|
||||||
|
#define InvalidGpCfgDec (FuncError + 55)
|
||||||
|
#define InvalidGpCfgJerk (FuncError + 56)
|
||||||
|
#define InvalidGpParVelLow (FuncError + 57)
|
||||||
|
#define InvalidGpParVelHigh (FuncError + 58)
|
||||||
|
#define InvalidGpParAcc (FuncError + 59)
|
||||||
|
#define InvalidGpParDec (FuncError + 60)
|
||||||
|
#define InvalidGpParJerk (FuncError + 61)
|
||||||
|
#define JerkNotSupport (FuncError + 62)
|
||||||
|
#define ThreeAxNotSupport (FuncError + 63)
|
||||||
|
#define DevIpoNotFinished (FuncError + 64)
|
||||||
|
#define InvalidGpState (FuncError + 65)
|
||||||
|
#define OpenFileFailed (FuncError + 66)
|
||||||
|
#define InvalidPathCnt (FuncError + 67)
|
||||||
|
#define InvalidPathHandle (FuncError + 68)
|
||||||
|
#define InvalidPath (FuncError + 69)
|
||||||
|
|
||||||
|
#define IoctlError (FuncError + 70)
|
||||||
|
#define AmnetRingUsed (FuncError + 71)
|
||||||
|
#define DeviceNotOpened (FuncError + 72)
|
||||||
|
#define InvalidRing (FuncError + 73)
|
||||||
|
#define InvalidSlaveIP (FuncError + 74)
|
||||||
|
#define InvalidParameter (FuncError + 75)
|
||||||
|
#define InvalidGpCenterPosition (FuncError + 76)
|
||||||
|
#define InvalidGpEndPosition (FuncError + 77)
|
||||||
|
#define InvalidAddress (FuncError + 78)
|
||||||
|
#define DeviceDisconnect (FuncError + 79)
|
||||||
|
#define DataOutBufExceeded (FuncError + 80)
|
||||||
|
#define SlaveDeviceNotMatch (FuncError + 81)
|
||||||
|
#define SlaveDeviceError (FuncError + 82)
|
||||||
|
#define SlaveDeviceUnknow (FuncError + 83)
|
||||||
|
#define FunctionNotSupport (FuncError + 84)
|
||||||
|
#define InvalidPhysicalAxis (FuncError + 85) //[Dean 2008.1.31]
|
||||||
|
#define InvalidVelocity (FuncError + 86) //[Dean 2008.2.5]
|
||||||
|
#define InvalidAxPulseInLogic (FuncError + 87) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxPulseInSource (FuncError + 88) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxErcLogic (FuncError + 89) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxErcOnTime (FuncError + 90) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxErcOffTime (FuncError + 91) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxErcEnableMode (FuncError + 92) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxSdEnable (FuncError + 93) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxSdLogic (FuncError + 94) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxSdReact (FuncError + 95) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxSdLatch (FuncError + 96) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxHomeResetEnable (FuncError + 97) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxBacklashEnable (FuncError + 98) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxBacklashPulses (FuncError + 99) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxVibrationEnable (FuncError + 100) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxVibrationRevTime (FuncError + 101) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxVibrationFwdTime (FuncError + 102) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxAlarmReact (FuncError + 103) //[Dean 2008.2.13]
|
||||||
|
#define InvalidAxLatchLogic (FuncError + 104) //[Dean 2008.2.13]
|
||||||
|
#define InvalidFwMemoryMode (FuncError + 105)
|
||||||
|
#define InvalidConfigFile (FuncError + 106)
|
||||||
|
#define InvalidAxEnEvtArraySize (FuncError + 107)
|
||||||
|
#define InvalidAxEnEvtArray (FuncError + 108)
|
||||||
|
#define InvalidGpEnEvtArraySize (FuncError + 109)
|
||||||
|
#define InvalidGpEnEvtArray (FuncError + 110)
|
||||||
|
#define InvalidIntervalData (FuncError + 111)
|
||||||
|
#define InvalidEndPosition (FuncError + 112)
|
||||||
|
#define InvalidAxisSelect (FuncError + 113)
|
||||||
|
#define InvalidTableSize (FuncError + 114)
|
||||||
|
#define InvalidGpHandle (FuncError + 115)
|
||||||
|
#define InvalidCmpSource (FuncError + 116)
|
||||||
|
#define InvalidCmpMethod (FuncError + 117)
|
||||||
|
#define InvalidCmpPulseMode (FuncError + 118)
|
||||||
|
#define InvalidCmpPulseLogic (FuncError + 119)
|
||||||
|
#define InvalidCmpPulseWidth (FuncError + 120)
|
||||||
|
#define InvalidPathFunctionID (FuncError + 121)
|
||||||
|
#define SysBufAllocateFailed (FuncError + 122)
|
||||||
|
#define SpeedFordFunNotSpported (FuncError + 123)
|
||||||
|
#define InvalidNormVector (FuncError + 124)//zhaocui add
|
||||||
|
#define InvalidCmpTimeTableCount (FuncError + 125)
|
||||||
|
#define InvalidCmpTime (FuncError + 126)
|
||||||
|
#define FWDownLoading (FuncError + 127)//zhaocui add 20131209
|
||||||
|
#define FWVersionNotMatch (FuncError + 128)//zhaocui add 20131209
|
||||||
|
#define InvalidAxParHomeVelLow (FuncError + 129)//yangkai add 20140707
|
||||||
|
#define InvalidAxParHomeVelHigh (FuncError + 130)//yangkai add 20140707
|
||||||
|
#define InvalidAxParHomeAcc (FuncError + 131)//yangkai add 20140707
|
||||||
|
#define InvalidAxParHomeDec (FuncError + 132)//yangkai add 20140707
|
||||||
|
#define InvalidAxParHomeJerk (FuncError + 133)//yangkai add 20140707
|
||||||
|
#define InvalidAxCfgJogVelLow (FuncError + 134)//yangkai add 20140707
|
||||||
|
#define InvalidAxCfgJogVelHigh (FuncError + 135)//yangkai add 20140707
|
||||||
|
#define InvalidAxCfgJogAcc (FuncError + 136)//yangkai add 20140707
|
||||||
|
#define InvalidAxCfgJogDec (FuncError + 137)//yangkai add 20140707
|
||||||
|
#define InvalidAxCfgJogJerk (FuncError + 138)//yangkai add 20140707
|
||||||
|
#define InvalidAxCfgKillDec (FuncError + 139)//yangkai add 20140707
|
||||||
|
#define NotOpenAllAxes (FuncError + 140)//yangkai add 20140707
|
||||||
|
#define NotSetServoComPort (FuncError + 141)//yangkai add 20140707
|
||||||
|
#define OpenComPortFailed (FuncError + 142)//yangkai add 20140707
|
||||||
|
#define ReadComPortTimeOut (FuncError + 143)//yangkai add 20140707
|
||||||
|
#define SetComPortStateFailed (FuncError + 144)//yangkai add 20140707
|
||||||
|
#define SevroTypeNotSupport (FuncError + 145)//yangkai add 20140707
|
||||||
|
#define ReadComBufFailed (FuncError + 146)//yangkai add 20140707
|
||||||
|
#define InvalidAxMaxErrorCnt (FuncError + 147)//yangkai add 20141015
|
||||||
|
#define MoveModeNosupportBlend (FuncError + 148)
|
||||||
|
#define CmpModeCannotGenDO (FuncError + 149)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//AMONet Communication error
|
||||||
|
#define SlaveIOUpdateError (FuncError + 150)
|
||||||
|
#define NoSlaveDevFound (FuncError + 151)
|
||||||
|
#define MasterDevNotOpen (FuncError + 152)
|
||||||
|
#define MasterRingNotOpen (FuncError + 153)
|
||||||
|
#define CannotFindCenterby3P (FuncError + 154)
|
||||||
|
#define InvalidAxCfgJogPAssign (FuncError + 155)//andy.wang add 20150508
|
||||||
|
#define InvalidAxCfgJogNAssign (FuncError + 156)//andy.wang add 20150508
|
||||||
|
#define InvalidAxCfgCamDOAssign (FuncError + 157)//andy.wang add 20150508
|
||||||
|
#define InvalidAxCfgDIStopAssign (FuncError + 158)//andy.wang add 20150512
|
||||||
|
|
||||||
|
|
||||||
|
//DAQ function [1/24/2008 Dean] -----------------------------------
|
||||||
|
#define InvalidDIPort (FuncError + 200)
|
||||||
|
#define InvalidDOPort (FuncError + 201)
|
||||||
|
#define InvalidDOValue (FuncError + 202)
|
||||||
|
|
||||||
|
//EVT function
|
||||||
|
#define CreateEventFailed (FuncError + 203)
|
||||||
|
#define CreateThreadFailed (FuncError + 204)
|
||||||
|
|
||||||
|
#define InvalidHomeModeEx (FuncError + 205)
|
||||||
|
#define InvalidDirMode (FuncError + 206)
|
||||||
|
#define AxHomeMotionFailed (FuncError + 207)
|
||||||
|
#define ReadFileFailed (FuncError + 208)
|
||||||
|
#define PathBufIsFull (FuncError + 209)
|
||||||
|
#define PathBufIsEmpty (FuncError + 210)
|
||||||
|
#define GetAuthorityFailed (FuncError + 211) // [3/17/2011 dan.yang]
|
||||||
|
#define GpIDAllocatedFailed (FuncError + 212) // [04/15/2011 dan.yang]
|
||||||
|
#define FirmWareDown (FuncError + 213) // [4/26/2011 dan.yang] todo
|
||||||
|
#define InvalidGpRadius (FuncError + 214) // [4/28/2011 dan.yang]
|
||||||
|
#define InvalidAxCmd (FuncError + 215) // [4/28/2011 dan.yang]
|
||||||
|
#define InvalidaxExtDrv (FuncError + 216) // [4/29/2011 dan.yang]
|
||||||
|
#define InvalidGpMovCmd (FuncError + 217) // [5/4/2011 dan.yang]
|
||||||
|
#define SpeedCurveNotSupported (FuncError + 218) // [5/20/2011 dan.yang]
|
||||||
|
#define InvalidCounterNo (FuncError + 219) // [5/24/2011 dan.yang]
|
||||||
|
#define InvalidPathMoveMode (FuncError + 220) // [6/2/2011 dan.yang]
|
||||||
|
#define PathSelStartCantRunInSpeedForwareMode (FuncError + 221) // [6/21/2011 dan.yang]
|
||||||
|
#define InvalidCamTableID (FuncError + 222) // [6/23/2011 dan.yang]
|
||||||
|
#define InvalidCamPointRange (FuncError + 223) // [6/23/2011 dan.yang]
|
||||||
|
#define CamTableIsEmpty (FuncError + 224) // [6/23/2011 dan.yang]
|
||||||
|
#define InvalidPlaneVector (FuncError + 225) // [6/24/2011 dan.yang]
|
||||||
|
#define MasAxIDSameSlvAxID (FuncError + 226) // [6/24/2011 dan.yang]
|
||||||
|
#define InvalidGpRefPlane (FuncError + 227) // [7/4/2011 dan.yang]
|
||||||
|
#define InvalidAxModuleRange (FuncError + 228) // [7/8/2011 dan.yang]
|
||||||
|
#define DownloadFileFailed (FuncError + 229) // [7/12/2011 dan.yang]
|
||||||
|
#define InvalidFileLength (FuncError + 230) // [7/12/2011 dan.yang]
|
||||||
|
#define InvalidCmpCnt (FuncError + 231) // [8/10/2011 dan.yang]
|
||||||
|
#define JerkExceededMaxValue (FuncError + 232) // [12/9/2011 dan.yang]
|
||||||
|
#define AbsMotionNotSupport (FuncError + 233) // [1/17/2012 dan.yang]
|
||||||
|
#define invalidAiRange (FuncError + 234) // [4/18/2012 dan.yang]
|
||||||
|
#define AIScaleFailed (FuncError + 235) // [4/18/2012 dan.yang]
|
||||||
|
#define AxInRobot (FuncError + 236) // [7/31/2013 zhaocui]
|
||||||
|
#define Invalid3DArcFlat (FuncError + 237) // [7/31/2013 zhaocui]
|
||||||
|
#define InvalidIpoMap (FuncError + 238)
|
||||||
|
#define DataSizeNotCorrect (FuncError + 239) // [10/28/2013 dan.yang]
|
||||||
|
#define AxisNotFound (FuncError + 240) // [10/30/2013 dan.yang]
|
||||||
|
#define InvalidPathVelHigh (FuncError + 241) // [12/10/2013 dan.yang]
|
||||||
|
|
||||||
|
#define InvalidRbParVelLow (FuncError + 250) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbParVelHigh (FuncError + 251) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbParAcc (FuncError + 252) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbParDec (FuncError + 253) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbParJerk (FuncError + 254) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbState (FuncError + 255) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbHandle (FuncError + 256) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbRadius (FuncError + 257) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbMovCmd (FuncError + 258) // [8/5/2014 kai.yang]
|
||||||
|
#define NotOpenRobot (FuncError + 259) // [8/5/2014 kai.yang]
|
||||||
|
#define InvalidRbPoint (FuncError + 260)//yangkai add 20150128
|
||||||
|
#define RbAngleExceeded (FuncError + 261)//yangkai add 20150128
|
||||||
|
|
||||||
|
#define GetDIOFalied (FuncError + 300) // [11/16/2014 dan]
|
||||||
|
#define InvalidRingBufferCmd (FuncError + 301) // [12/10/2014 dan]
|
||||||
|
#define InvalidAoRange (FuncError + 302) // [12/17/2014 dan]
|
||||||
|
#define RingBufferOverFlow (FuncError + 303) // [12/18/2014 dan]
|
||||||
|
#define RbAreaExceeded (FuncError + 304)
|
||||||
|
#define InvalidAiValue (FuncError + 305)
|
||||||
|
#define InvalidAoValue (FuncError + 306)
|
||||||
|
#define NoPreScanData (FuncError + 307) // [2/17/2016 dandan.yang]
|
||||||
|
#define GroupNotAssigned (FuncError + 308) // [2/17/2016 dandan.yang]
|
||||||
|
|
||||||
|
#define HLmtPExceeded (MotionError + 0)
|
||||||
|
#define HLmtNExceeded (MotionError + 1)
|
||||||
|
#define SLmtPExceeded (MotionError + 2)
|
||||||
|
#define SLmtNExceeded (MotionError + 3)
|
||||||
|
#define AlarmHappened (MotionError + 4)
|
||||||
|
#define EmgHappened (MotionError + 5)
|
||||||
|
#define TimeLmtExceeded (MotionError + 6)
|
||||||
|
#define DistLmtExceeded (MotionError + 7)
|
||||||
|
#define InvalidPositionOverride (MotionError + 8) //[Dean 2008.2.18]
|
||||||
|
#define OperationErrorHappened (MotionError + 9)
|
||||||
|
#define SimultaneousStopHappened (MotionError + 10)
|
||||||
|
#define OverflowInPAPB (MotionError + 11)
|
||||||
|
#define OverflowInIPO (MotionError + 12)
|
||||||
|
#define STPHappened (MotionError + 13)
|
||||||
|
#define SDHappened (MotionError + 14)
|
||||||
|
#define AxisNoCmpDataLeft (MotionError + 15)
|
||||||
|
|
||||||
|
|
||||||
|
#define DevEvtTimeOut (DevEvtError + 1)
|
||||||
|
#define DevNoEvt (DevEvtError + 2)
|
||||||
|
//*************************************************************
|
||||||
|
#define Warning_AxWasInGp (Warning + 1)
|
||||||
|
//inconsistent rate of PPU setting
|
||||||
|
#define Warning_GpInconsistRate (Warning + 2)
|
||||||
|
#define Warning_GpInconsistPPU (Warning + 3)
|
||||||
|
#define Warning_GpMoveDistanceCanntBeZero (Warning + 4)
|
||||||
|
|
||||||
|
|
||||||
|
// Dsp Error // [9/26/2011 dan.yang]
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
#define ERR_SYS_TIME_OUT (DspError + 0x01)
|
||||||
|
#define Dsp_PropertyIDNotSupport (DspError + 0x02)
|
||||||
|
#define Dsp_PropertyIDReadOnly (DspError + 0x03)
|
||||||
|
|
||||||
|
#define Dsp_InvalidParameter (DspError + 0x04)
|
||||||
|
#define Dsp_DataOutBufExceeded (DspError + 0x05)
|
||||||
|
#define Dsp_FunctionNotSupport (DspError + 0x06)
|
||||||
|
#define Dsp_InvalidConfigFile (DspError + 0x07)
|
||||||
|
#define Dsp_InvalidIntervalData (DspError + 0x08)
|
||||||
|
#define Dsp_InvalidTableSize (DspError + 0x09)
|
||||||
|
#define Dsp_InvalidTableID (DspError + 0x0a)
|
||||||
|
#define Dsp_DataIndexExceedBufSize (DspError + 0x0b)
|
||||||
|
#define Dsp_InvalidCompareInterval (DspError + 0x0c)
|
||||||
|
#define Dsp_InvalidCompareRange (DspError + 0x0d)
|
||||||
|
#define Dsp_PropertyIDWriteOnly (DspError + 0x0e)
|
||||||
|
#define Dsp_NcError (DspError + 0x0f)
|
||||||
|
#define Dsp_CamTableIsInUse (DspError + 0x10)
|
||||||
|
#define Dsp_EraseBlockFailed (DspError + 0x11)
|
||||||
|
#define Dsp_ProgramFlashFailed (DspError + 0x12)
|
||||||
|
#define Dsp_WatchdogError (DspError + 0x13)
|
||||||
|
#define Dsp_ReadPrivateOverMaxTimes (DspError + 0x14) //[v1.0.8.4]
|
||||||
|
#define Dsp_InvalidPrivateID (DspError + 0x15) //[v1.0.8.4]
|
||||||
|
#define Dsp_DataNotReady (DspError + 0x16) //[v1.0.8.4]
|
||||||
|
#define Dsp_LastOperationNotOver (DspError + 0x17)
|
||||||
|
#define Dsp_WritePrivateTimeout (DspError + 0x18)
|
||||||
|
#define Dsp_FwIsDownloading (DspError + 0x19)
|
||||||
|
#define Dsp_FwDownloadStepError (DspError + 0x20)
|
||||||
|
|
||||||
|
#define Dsp_InvalidDiLtcChanelID (DspError + 0x21)
|
||||||
|
#define Dsp_InvalidDoCmpChanelID (DspError + 0x22)
|
||||||
|
#define Dsp_InvalidDevPptValue (DspError + 0x23)
|
||||||
|
#define Dsp_CmpCannotLinkMultiLtc (DspError + 0x24)
|
||||||
|
#define Dsp_SDIOLinkError (DspError + 0x25)
|
||||||
|
#define InvalidVerScanTable (DspError + 0x26)
|
||||||
|
#define InvalidVerEnablePos (DspError + 0x27)
|
||||||
|
#define VerMovLimitExceeded (DspError + 0x28)
|
||||||
|
#define Dsp_InvalidTableName (DspError + 0x29)
|
||||||
|
|
||||||
|
// Axis Error
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#define Dsp_InvalidAxCfgVel (DspAxError + 0x01)
|
||||||
|
#define Dsp_InvalidAxCfgAcc (DspAxError + 0x02)
|
||||||
|
#define Dsp_InvalidAxCfgDec (DspAxError + 0x03)
|
||||||
|
#define Dsp_InvalidAxCfgJerk (DspAxError + 0x04)
|
||||||
|
#define Dsp_InvalidAxParVelLow (DspAxError + 0x05)
|
||||||
|
#define Dsp_InvalidAxParVelHigh (DspAxError + 0x06)
|
||||||
|
#define Dsp_InvalidAxParAcc (DspAxError + 0x07)
|
||||||
|
#define Dsp_InvalidAxParDec (DspAxError + 0x08)
|
||||||
|
#define Dsp_InvalidAxParJerk (DspAxError + 0x09)
|
||||||
|
#define Dsp_InvalidAxPptValue (DspAxError + 0x0a)
|
||||||
|
#define Dsp_InvalidAxState (DspAxError + 0x0b)
|
||||||
|
#define Dsp_InvalidAxSvOnOff (DspAxError + 0x0c)
|
||||||
|
#define Dsp_InvalidAxDistance (DspAxError + 0x0d)
|
||||||
|
#define Dsp_InvalidAxPosition (DspAxError + 0x0e)
|
||||||
|
#define Dsp_InvalidAxHomeMode (DspAxError + 0x0f)
|
||||||
|
#define Dsp_InvalidPhysicalAxis (DspAxError + 0x10)
|
||||||
|
#define Dsp_HLmtPExceeded (DspAxError + 0x11)
|
||||||
|
#define Dsp_HLmtNExceeded (DspAxError + 0x12)
|
||||||
|
#define Dsp_SLmtPExceeded (DspAxError + 0x13)
|
||||||
|
#define Dsp_SLmtNExceeded (DspAxError + 0x14)
|
||||||
|
#define Dsp_AlarmHappened (DspAxError + 0x15)
|
||||||
|
#define Dsp_EmgHappened (DspAxError + 0x16)
|
||||||
|
#define Dsp_CmdValidOnlyInConstSec (DspAxError + 0x17) // Command valid only in the constant section
|
||||||
|
#define Dsp_InvalidAxCmd (DspAxError + 0x18)
|
||||||
|
#define Dsp_InvalidAxHomeDirMode (DspAxError + 0x19)
|
||||||
|
#define Dsp_AxisMustBeModuloAxis (DspAxError + 0x1a)
|
||||||
|
#define Dsp_AxIdCantSameAsMasId (DspAxError + 0x1b)
|
||||||
|
#define Dsp_CantResetPosiOfMasAxis (DspAxError + 0x1c)
|
||||||
|
#define Dsp_InvalidAxExtDrvOperation (DspAxError + 0x1d)
|
||||||
|
#define Dsp_AxAccExceededMaxAcc (DspAxError + 0x1e)
|
||||||
|
#define Dsp_AxVelExceededMaxVel (DspAxError + 0x1f)
|
||||||
|
#define Dsp_NotEnoughPulseForChgV (DspAxError + 0x20)
|
||||||
|
#define Dsp_NewVelMustGreaterThanVelLow (DspAxError + 0x21)
|
||||||
|
#define Dsp_InvalidAxGearMode (DspAxError + 0x22)
|
||||||
|
#define Dsp_InvalidGearRatio (DspAxError + 0x23)
|
||||||
|
#define Dsp_InvalidPWMDataCount (DspAxError + 0x24)
|
||||||
|
#define Dsp_InvalidAxPWMFreq (DspAxError + 0x25)
|
||||||
|
#define Dsp_InvalidAxPWMDuty (DspAxError + 0x26)
|
||||||
|
#define Dsp_AxGantryExceedMaxDiffValue (DspAxError + 0x27)
|
||||||
|
#define Dsp_ChanelIsDisable (DspAxError + 0x28)
|
||||||
|
#define Dsp_ChanelBufferIsFull (DspAxError + 0x29)
|
||||||
|
#define Dsp_ChanelBufferIsEmpty (DspAxError + 0x30)
|
||||||
|
#define Dsp_InvalidDoChanelID (DspAxError + 0x31)
|
||||||
|
#define Dsp_LatchHappened (DspAxError + 0x32)
|
||||||
|
#define Dsp_InvalidAxKillDec (DspAxError + 0x33)
|
||||||
|
#define Dsp_InvalidAxJogVelLow (DspAxError + 0x34)
|
||||||
|
#define Dsp_InvalidAxJogVelHigh (DspAxError + 0x35)
|
||||||
|
#define Dsp_InvalidAxJogAcc (DspAxError + 0x36)
|
||||||
|
#define Dsp_InvalidAxJogDec (DspAxError + 0x37)
|
||||||
|
#define Dsp_InvalidAxJogJerk (DspAxError + 0x38)
|
||||||
|
#define Dsp_InvalidAxHomeVelLow (DspAxError + 0x39)
|
||||||
|
#define Dsp_InvalidAxHomeVelHigh (DspAxError + 0x40)
|
||||||
|
#define Dsp_InvalidAxHomeAcc (DspAxError + 0x41)
|
||||||
|
#define Dsp_InvalidAxHomeDec (DspAxError + 0x42)
|
||||||
|
#define Dsp_InvalidAxHomeJerk (DspAxError + 0x43)
|
||||||
|
#define Dsp_PosErrorCntExceed (DspAxError + 0x44)
|
||||||
|
#define Dsp_InvalidAxCounterMax (DspAxError + 0x45) //ring counter
|
||||||
|
#define Dsp_InvalidAxOverflowMode (DspAxError + 0x46)
|
||||||
|
#define Dsp_ImposeTimeLongerPTP (DspAxError + 0x47)
|
||||||
|
#define Dsp_AxAngExceededMaxRotationAng (DspAxError + 0x48)
|
||||||
|
#define Dsp_AxAreaExceeded (DspAxError + 0x49)
|
||||||
|
#define Dsp_AxDiStopAct (DspAxError + 0x50) //dan.yang 2015.5.11 For guanghaojie
|
||||||
|
// Group Error // [9/26/2011 dan.yang]
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
#define Dsp_InvalidAxCntInGp (DspGpError + 0x01)
|
||||||
|
#define Dsp_AxInGpNotFound (DspGpError + 0x02)
|
||||||
|
#define Dsp_AxIsInOtherGp (DspGpError + 0x03)
|
||||||
|
#define Dsp_AxCannotIntoGp (DspGpError + 0x04)
|
||||||
|
#define Dsp_GpInDevNotFound (DspGpError + 0x05)
|
||||||
|
#define Dsp_InvalidGpCfgVel (DspGpError + 0x06)
|
||||||
|
#define Dsp_InvalidGpCfgAcc (DspGpError + 0x07)
|
||||||
|
#define Dsp_InvalidGpCfgDec (DspGpError + 0x08)
|
||||||
|
#define Dsp_InvalidGpCfgJerk (DspGpError + 0x09)
|
||||||
|
#define Dsp_InvalidGpParVelLow (DspGpError + 0x0a)
|
||||||
|
#define Dsp_InvalidGpParVelHigh (DspGpError + 0x0b)
|
||||||
|
#define Dsp_InvalidGpParAcc (DspGpError + 0x0c)
|
||||||
|
#define Dsp_InvalidGpParDec (DspGpError + 0x0d)
|
||||||
|
#define Dsp_InvalidGpParJerk (DspGpError + 0x0e)
|
||||||
|
#define Dsp_JerkNotSupport (DspGpError + 0x0f)
|
||||||
|
#define Dsp_ThreeAxNotSupport (DspGpError + 0x10)
|
||||||
|
#define Dsp_DevIpoNotFinished (DspGpError + 0x11)
|
||||||
|
#define Dsp_InvalidGpState (DspGpError + 0x12)
|
||||||
|
#define Dsp_OpenFileFailed (DspGpError + 0x13)
|
||||||
|
#define Dsp_InvalidPathCnt (DspGpError + 0x14)
|
||||||
|
#define Dsp_InvalidPathHandle (DspGpError + 0x15)
|
||||||
|
#define Dsp_InvalidPath (DspGpError + 0x16)
|
||||||
|
#define Dsp_GpSlavePositionOverMaster (DspGpError + 0x17)
|
||||||
|
#define Dsp_GpPathBufferOverflow (DspGpError + 0x19)
|
||||||
|
#define Dsp_InvalidPathFunctionID (DspGpError + 0x1a)
|
||||||
|
#define Dsp_SysBufAllocateFailed (DspGpError + 0x1b)
|
||||||
|
#define Dsp_InvalidGpCenterPosition (DspGpError + 0x1c)
|
||||||
|
#define Dsp_InvalidGpEndPosition (DspGpError + 0x1d)
|
||||||
|
#define Dsp_InvalidGpCmd (DspGpError + 0x1e)
|
||||||
|
#define Dsp_AxHasBeenInInGp (DspGpError + 0x1f)
|
||||||
|
#define Dsp_InvalidPathRange (DspGpError + 0x20)
|
||||||
|
#define Dsp_InvalidNormVector (DspGpError + 0x21)
|
||||||
|
|
||||||
|
// [1/22/2014 deng]
|
||||||
|
|
||||||
|
#define Dsp_RbInvalidGpid (DspRbError + 0x01)
|
||||||
|
#define Dsp_RbInvalidMode (DspRbError + 0x01)
|
||||||
|
#define Dsp_RbInvalidArmLength (DspRbError + 0x02)
|
||||||
|
#define Dsp_RbInvalidAxesNum (DspRbError + 0x03)
|
||||||
|
#define Dsp_RbInvalidHandDir (DspRbError + 0x04)
|
||||||
|
#define Dsp_RbAreaExceeded (DspRbError + 0x05)
|
||||||
|
#define Dsp_RbAngleExceeded (DspRbError + 0x06)
|
||||||
|
#define Dsp_RbSwLmtNotEnabled (DspRbError + 0x07)
|
||||||
|
#define Dsp_RbVectorDistExceededZTargetDist (DspRbError + 0x08)
|
||||||
|
#define Dsp_RbInvalidPoint (DspRbError + 0x09)
|
||||||
|
#define Dsp_RbInvalidCurrentHandDir (DspRbError + 0x0a)
|
||||||
|
#define Dsp_RbInvalidCoordinateSystem (DspRbError + 0x0b)
|
||||||
|
#define Dsp_RbInvalidCoordinateAxis (DspRbError + 0x0c)
|
||||||
|
#define Dsp_RbSpeedTooHigh (DspRbError + 0x0d)
|
||||||
|
#define Dsp_RbInvalidState (DspRbError + 0x0e)
|
||||||
|
#define Dsp_RbEmgHappened (DspRbError + 0x0f)
|
||||||
|
#define Dsp_RbAlmHappened (DspRbError + 0x10)
|
||||||
|
#define Dsp_RbSLmtPExceeded (DspRbError + 0x11)
|
||||||
|
#define Dsp_RbSLmtNExceeded (DspRbError + 0x12)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//add by dujunling 2012.11.23
|
||||||
|
#define Gm_CodeError (GmError + 0x100)
|
||||||
|
#define Gm_SystemError (GmError + 0x200)
|
||||||
|
|
||||||
|
/////////////Gm_CodeError
|
||||||
|
#define Gm_InvalidCharacter (Gm_CodeError + 1)
|
||||||
|
#define Gm_InvalidCode (Gm_CodeError + 2)
|
||||||
|
#define Gm_InvalidGCode (Gm_CodeError + 3)
|
||||||
|
#define Gm_InvalidMCode (Gm_CodeError + 4)
|
||||||
|
#define Gm_GroupCodeAlreadyExist (Gm_CodeError + 5)
|
||||||
|
#define Gm_MissingNumber (Gm_CodeError + 6)
|
||||||
|
//
|
||||||
|
#define Gm_MissingFWord (Gm_CodeError + 7)
|
||||||
|
#define Gm_MissingSWord (Gm_CodeError + 8)
|
||||||
|
#define Gm_MissingOWord (Gm_CodeError + 9)
|
||||||
|
#define Gm_MissingNWord (Gm_CodeError + 10)
|
||||||
|
#define Gm_MissingLWord (Gm_CodeError + 11)
|
||||||
|
#define Gm_MissingPWord (Gm_CodeError + 12)
|
||||||
|
#define Gm_MissingQWord (Gm_CodeError + 13)
|
||||||
|
#define Gm_MissingRWord (Gm_CodeError + 14)
|
||||||
|
#define Gm_MissingEWord (Gm_CodeError + 15)
|
||||||
|
#define Gm_MissingHWord (Gm_CodeError + 16)
|
||||||
|
#define Gm_MissingDWord (Gm_CodeError + 17)
|
||||||
|
#define Gm_MissingTWord (Gm_CodeError + 18)
|
||||||
|
#define Gm_MissingAxisWord (Gm_CodeError + 19)
|
||||||
|
#define Gm_MissingSubAxisWord (Gm_CodeError + 20)
|
||||||
|
//
|
||||||
|
#define Gm_InvalidFValue (Gm_CodeError + 21)
|
||||||
|
#define Gm_InvalidSValue (Gm_CodeError + 22)
|
||||||
|
#define Gm_InvalidOValue (Gm_CodeError + 23)
|
||||||
|
#define Gm_InvalidNValue (Gm_CodeError + 24)
|
||||||
|
#define Gm_InvalidLValue (Gm_CodeError + 25)
|
||||||
|
#define Gm_InvalidPValue (Gm_CodeError + 26)
|
||||||
|
#define Gm_InvalidQValue (Gm_CodeError + 27)
|
||||||
|
#define Gm_InvalidRValue (Gm_CodeError + 28)
|
||||||
|
#define Gm_InvalidEValue (Gm_CodeError + 29)
|
||||||
|
#define Gm_InvalidHValue (Gm_CodeError + 31)
|
||||||
|
#define Gm_InvalidDValue (Gm_CodeError + 32)
|
||||||
|
#define Gm_InvalidTValue (Gm_CodeError + 33)
|
||||||
|
#define Gm_InvalidAxisValue (Gm_CodeError + 34)
|
||||||
|
#define Gm_InvalidSubAxisValue (Gm_CodeError + 35)
|
||||||
|
|
||||||
|
#define Gm_OverloadAxisNum (Gm_CodeError + 36)
|
||||||
|
#define Gm_InvalidAxisNumber (Gm_CodeError + 37)
|
||||||
|
#define Gm_MacroNotFound (Gm_CodeError + 38)
|
||||||
|
|
||||||
|
//////////////Gm_SystemError
|
||||||
|
#define Gm_InvalidGMSHandle (Gm_SystemError + 1)
|
||||||
|
#define Gm_InvalidThreadHandle (Gm_SystemError + 2)
|
||||||
|
#define Gm_SystemNotReady (Gm_SystemError + 3)
|
||||||
|
|
||||||
|
#define Gm_NotEnoughMemory (Gm_SystemError + 4)
|
||||||
|
#define Gm_InvalidPatternId (Gm_SystemError + 5)
|
||||||
|
#define Gm_InvalidBreakPoint (Gm_SystemError + 6)
|
||||||
|
#define Gm_InvalidMacroNumber (Gm_SystemError + 7)
|
||||||
|
|
||||||
|
#define Gm_CodeOverload (Gm_SystemError + 8)
|
||||||
|
#define Gm_MacroOverload (Gm_SystemError + 9)
|
||||||
|
#define Gm_InvalidFeedRate (Gm_SystemError + 10)
|
||||||
|
#define Gm_InvalidModuleRange (Gm_SystemError + 11)
|
||||||
|
|
||||||
|
|
||||||
|
#define Gm_RadiusCompensationAlreadyOn (Gm_SystemError + 12)
|
||||||
|
#define Gm_OverCut (Gm_SystemError + 13)
|
||||||
|
#define Gm_WrongRefPlane (Gm_SystemError + 14)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define Gm_DllNotFound (Gm_SystemError + 15)
|
||||||
|
#define Gm_Ax_ErrorStop (Gm_SystemError + 16)
|
||||||
|
|
||||||
|
#define Gm_OverrunDwell (Gm_SystemError + 17)
|
||||||
|
#define Gm_InvalidSetCoordinate (Gm_SystemError + 18)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define Gm_OverrunAxisNum (Gm_SystemError + 19)
|
||||||
|
#define Gm_InvalidG29 (Gm_SystemError + 20)//Updated by W.Y.Z 10-->20
|
||||||
|
#define Gm_BothOfGCodeUseAxisWords (Gm_SystemError + 21)
|
||||||
|
#define Gm_NotFoundNext (Gm_SystemError + 22)
|
||||||
|
#define Gm_ArcAxisNumError (Gm_SystemError + 23)
|
||||||
|
#define Gm_OverrunContiAxis (Gm_SystemError + 24)
|
||||||
|
#define Gm_ContiArcAxisError (Gm_SystemError + 25)
|
||||||
|
#define Gm_G272829CanNotBeConti (Gm_SystemError + 26)
|
||||||
|
#define Gm_CheckHomeFailed (Gm_SystemError + 27)
|
||||||
|
|
||||||
|
#define Gm_StackOverflow (Gm_SystemError + 28)
|
||||||
|
#define Gm_StackUnderflow (Gm_SystemError + 29)
|
||||||
|
#define Gm_InvalidAxHomeMode (Gm_SystemError + 30)
|
||||||
|
#define Gm_OverrunFilePath (Gm_SystemError + 31)
|
||||||
|
#define Gm_OverrunLineText (Gm_SystemError + 32)
|
||||||
|
#define Gm_InvalidSSTA (Gm_SystemError + 33) //Added by W.Y.Z on 2012.08.22 modify by dujunling on 2012.10.26
|
||||||
|
|
||||||
|
#define Gm_InfineLoop (Gm_SystemError + 34) //Added bydujunling on 2012.9.27 for loadjob,uploadjob,
|
||||||
|
|
||||||
|
////do error added by dujunling 2012.10.26
|
||||||
|
#define Gm_InvalidDoDevice (Gm_SystemError + 35)
|
||||||
|
#define Gm_InvalidDoChannel (Gm_SystemError + 36)
|
||||||
|
#define Gm_InvalidDoLevel (Gm_SystemError + 37)
|
||||||
|
//di
|
||||||
|
#define Gm_InvalidDiDevice (Gm_SystemError + 38)
|
||||||
|
#define Gm_InvalidDiChannel (Gm_SystemError + 39)
|
||||||
|
#define Gm_InvalidDiLevel (Gm_SystemError + 40)
|
||||||
|
//custom m code
|
||||||
|
#define Gm_RunCustomMcodeError (Gm_SystemError + 41)
|
||||||
|
|
||||||
|
#define Gm_ZeroVector (Gm_SystemError + 42)
|
||||||
|
#define Gm_LineParallel (Gm_SystemError + 43)
|
||||||
|
//
|
||||||
|
#define Gm_InvalidBufferLength (Gm_SystemError + 44)
|
||||||
|
#define GmInvalidOptionPauseParam (Gm_SystemError + 45)
|
||||||
|
#define GmInvalidOptionSkip (Gm_SystemError + 46)
|
||||||
|
#define GmWaitDiTimeOut (Gm_SystemError + 47)
|
||||||
|
#define GmCannotInvokeMacroInMacro (Gm_SystemError + 48)
|
||||||
|
#define GmThreadTimeOut (Gm_SystemError + 49)
|
||||||
|
#define Gm_InvalidDiValue (Gm_SystemError + 50)//Added by W.Y.Z on 2014.04.09
|
||||||
|
#define Gm_BeOverCutted (Gm_SystemError + 51)//Added by W.Y.Z on 2014.06.12
|
||||||
|
//for P point function by W.Y.Z on 2014.08.28
|
||||||
|
#define Gm_RadiusCompensationCannotWithG2G3 (Gm_SystemError + 52)
|
||||||
|
#define Gm_InvalidPpointID (Gm_SystemError + 53)
|
||||||
|
#define Gm_InvalidFilePath (Gm_SystemError + 54)
|
||||||
|
#define Gm_InvalidFileFormat (Gm_SystemError + 55)
|
||||||
|
#define Gm_PpointHasNotSet (Gm_SystemError + 56)
|
||||||
|
#define Gm_PpointLenNotEqualWithAxesNum (Gm_SystemError + 57)
|
||||||
|
#define Gm_PpointAndNonPCannotBeMixed (Gm_SystemError + 58)
|
||||||
|
#define Gm_StartPosCannotEqualWithEndPos (Gm_SystemError + 59)
|
||||||
|
// [3/24/2015 yang.kai]
|
||||||
|
#define Gm_InvalidBoolID (Gm_SystemError + 60)
|
||||||
|
#define Gm_BoolHasNotSet (Gm_SystemError + 61)
|
||||||
|
#define Gm_IfBlockNotCorrect (Gm_SystemError + 62)
|
||||||
|
#define Gm_IfBlockFlowError (Gm_SystemError + 63)
|
||||||
|
#define Gm_InvalidParameter (Gm_SystemError + 64)
|
||||||
|
//Error Code
|
||||||
|
|
||||||
|
|
||||||
|
#define EC_GetNICNumberFailed (ECTError + 0x0)
|
||||||
|
#define EC_GetNICInfoFailed (ECTError + 0x1)
|
||||||
|
#define EC_OpenMasterDevFailed (ECTError + 0x2)
|
||||||
|
#define EC_GetSlaveFailed (ECTError + 0x3)
|
||||||
|
#define EC_StartOpModeFailed (ECTError + 0x4)
|
||||||
|
#define EC_CloseDeviceFailed (ECTError + 0x5)
|
||||||
|
#define EC_MemAllocateFailed (ECTError + 0x6)
|
||||||
|
#define EC_InvalidNicIndex (ECTError + 0x7)
|
||||||
|
#define EC_OpenDevFailed (ECTError + 0x8)
|
||||||
|
#define EC_ReadFileFailed (ECTError + 0x9)
|
||||||
|
#define EC_GetNicInfoFailed (ECTError + 0xa)
|
||||||
|
#define EC_GetSDOFailed (ECTError + 0xb)
|
||||||
|
#define EC_InvalidParameter (ECTError + 0xc)
|
||||||
|
#define EC_GetPDOOffsetFailed (ECTError + 0xd)
|
||||||
|
#define EC_InitialMappingInfoFalied (ECTError + 0xe)
|
||||||
|
#define EC_InitResourceFailed (ECTError + 0xf)
|
||||||
|
#define EC_SetSDOFailed (ECTError + 0x10)
|
||||||
|
#define EC_InvalidPortType (ECTError + 0x11)
|
||||||
|
#define EC_SetCycleTimeFailed (ECTError + 0x12)
|
||||||
|
#define EC_InvalidAoRange (ECTError + 0x13)
|
||||||
|
#define EC_InvalidAiRange (ECTError + 0x14)
|
||||||
|
#define EC_GetSlaveInfoFaied (ECTError + 0x15)
|
||||||
|
#define EC_GetNetWorkStateFaied (ECTError + 0x16)
|
||||||
|
#define EC_RegisterEventFailed (ECTError + 0x17)
|
||||||
|
#define EC_InvalidIntegrationTime (ECTError + 0x18)
|
||||||
|
#define EC_InvalidAIEnable (ECTError + 0x19)
|
||||||
|
#define EC_InvalidDIFilter (ECTError + 0x1a)
|
||||||
|
#define EC_SetSlaveStateFailed (ECTError + 0x1b)
|
||||||
|
#define EC_ZeroCalibrationFailed (ECTError + 0x1c)
|
||||||
|
#define EC_InvalidMasterHandle (ECTError + 0x1d)
|
||||||
|
#define EC_InvalidENIFile (ECTError + 0x1e)
|
||||||
|
#define EC_InvalidCaliType (ECTError + 0x1f)
|
||||||
|
#define EC_SetCaliValueFailed (ECTError + 0x20)
|
||||||
|
#define EC_AOCalibrationFailed (ECTError + 0x21)
|
||||||
|
#define EC_InvalidIOMapping (ECTError + 0x22)
|
||||||
|
#define EC_PortIndexGreaterThanPortNum (ECTError + 0x23)
|
||||||
|
#define EC_ChannelIDGreaterThanChannelNum (ECTError + 0x24)
|
||||||
|
#define EC_InputIndexGreaterThanInputNum (ECTError + 0x25)
|
||||||
|
#define EC_OutputIndexGreaterThanOutputNum (ECTError + 0x26)
|
||||||
|
#define EC_SetEnableFailed (ECTError + 0x27)
|
||||||
|
#define EC_SetAIRangeFailed (ECTError + 0x28)
|
||||||
|
#define EC_SetIntegrationTimeFailed (ECTError + 0x29)
|
||||||
|
#define EC_PropertyNotSupported (ECTError + 0x2a)
|
||||||
|
#define EC_SlaveIDConflicted (ECTError + 0x2b)
|
||||||
|
#define EC_SpanCalibrationFailed (ECTError + 0x2c)
|
||||||
|
#define EC_InvalidAiValue (ECTError + 0x2d)
|
||||||
|
#define EC_InvalidAoValue (ECTError + 0x2e)
|
||||||
|
#define EC_GetModuleFailed (ECTError + 0x2f)
|
||||||
|
#define EC_InvalidCntEnable (ECTError + 0x30)
|
||||||
|
#define EC_InvalidCntPulseInMode (ECTError + 0x31)
|
||||||
|
#define EC_InvalidCntInitValue (ECTError + 0x32)
|
||||||
|
#define EC_InvalidCntMaxValue (ECTError + 0x33)
|
||||||
|
#define EC_InvalidCntOverflowMode (ECTError + 0x34)
|
||||||
|
#define EC_InvalidCntLatchEnable (ECTError + 0x35)
|
||||||
|
#define EC_InvalidCntLatchEdge (ECTError + 0x36)
|
||||||
|
#define EC_InvalidCntCmpEnable (ECTError + 0x37)
|
||||||
|
#define EC_InvalidCntCmpMethod (ECTError + 0x38)
|
||||||
|
#define EC_InvalidCntCmpPulseEnable (ECTError + 0x39)
|
||||||
|
#define EC_InvalidCntCmpPulseMode (ECTError + 0x3a)
|
||||||
|
#define EC_InvalidCntCmpPulseLogic (ECTError + 0x3b)
|
||||||
|
#define EC_InvalidCntCmpPulseWidth (ECTError + 0x3c)
|
||||||
|
#define EC_AxCntExceeded (ECTError + 0x3d)
|
||||||
|
#define EC_FWUpgraded (ECTError + 0x3e)
|
||||||
|
|
||||||
|
|
||||||
|
#define ECAT_MasterEcatError (ECTDevError + 0x01)
|
||||||
|
#define ECAT_SlaveDisconnect_R0 (ECTDevError + 0x02)
|
||||||
|
#define ECAT_SlaveDisconnect_R1 (ECTDevError + 0x03)
|
||||||
|
|
||||||
|
#define ECAT_AxRetryError (ECTAxError + 0x01)
|
||||||
|
#define ECAT_AxResetCounterError (ECTAxError + 0x02)
|
||||||
|
#define ECAT_AxCmdErrorProtection (ECTAxError + 0x03)
|
||||||
|
#define ECAT_AxSlaveALM (ECTAxError + 0x04)
|
||||||
|
#define ECAT_AxFollowError (ECTAxError + 0x05)
|
||||||
|
#define ECAT_AxHomeError (ECTAxError + 0x06)
|
||||||
|
|
||||||
|
#define ECAT_MOTION_MASTER_NULL (ECTMotionError + 0x01)
|
||||||
|
#define ECAT_MOTION_SCAN_BUSY (ECTMotionError + 0x02)
|
||||||
|
#define ECAT_MOTION_DOMAIN_FAILED (ECTMotionError + 0x03)
|
||||||
|
#define ECAT_MOTION_SLAVE_NOT_SUPPORT (ECTMotionError + 0x04)
|
||||||
|
#define ECAT_MOTION_SLAVE_CONFIG_FAILED (ECTMotionError + 0x05)
|
||||||
|
#define ECAT_MOTION_ACTIVE_FAILED (ECTMotionError + 0x06)
|
||||||
|
#define ECAT_MOTION_DOMAN_DATA_FAILED (ECTMotionError + 0x07)
|
||||||
|
|
||||||
|
#define ECAT_IO_MASTER_NULL (ECTIOError + 0x01)
|
||||||
|
#define ECAT_IO_SCAN_BUSY (ECTIOError + 0x02)
|
||||||
|
#define ECAT_IO_DOMAIN_FAILED (ECTIOError + 0x03)
|
||||||
|
#define ECAT_IO_SLAVE_NOT_SUPPORT (ECTIOError + 0x04)
|
||||||
|
#define ECAT_IO_SLAVE_CONFIG_FAILED (ECTIOError + 0x05)
|
||||||
|
#define ECAT_IO_ACTIVE_FAILED (ECTIOError + 0x06)
|
||||||
|
#define ECAT_IO_DOMAN_DATA_FAILED (ECTIOError + 0x07)
|
||||||
|
|
||||||
|
#define ECTAxOPERATIONMODE (ECTAxError + 0x10) //Error from CiA402 ecat driver
|
||||||
|
#define ECTAxHOMEOFFSET (ECTAxError + 0x20) //Error from CiA402 ecat driver
|
||||||
|
#define ECTAxHOMEMODE (ECTAxError + 0x30) //Error from CiA402 ecat driver
|
||||||
|
|
||||||
|
#define ECAT_HM_OPMODE_ProtocolTimeout (ECTAxOPERATIONMODE + 0x01)
|
||||||
|
#define ECAT_HM_OPMODE_ObjectNotExist (ECTAxOPERATIONMODE + 0x02)
|
||||||
|
#define ECAT_HM_OPMODE_SubindexNotExist (ECTAxOPERATIONMODE + 0x03)
|
||||||
|
#define ECAT_HM_OPMODE_ValueRangeExceeded (ECTAxOPERATIONMODE + 0x04)
|
||||||
|
#define ECAT_HM_OPMODE_WrittenTooHigh (ECTAxOPERATIONMODE + 0x05)
|
||||||
|
#define ECAT_HM_OPMODE_WrittenTooLow (ECTAxOPERATIONMODE + 0x06)
|
||||||
|
#define ECAT_HM_OPMODE_MaximumLessMinimum (ECTAxOPERATIONMODE + 0x07)
|
||||||
|
#define ECAT_HM_OPMODE_OTHER (ECTAxOPERATIONMODE + 0x08)
|
||||||
|
|
||||||
|
#define ECAT_HM_OFFSET_ProtocolTimeout (ECTAxHOMEOFFSET + 0x01)
|
||||||
|
#define ECAT_HM_OFFSET_ObjectNotExist (ECTAxHOMEOFFSET + 0x02)
|
||||||
|
#define ECAT_HM_OFFSET_SubindexNotExist (ECTAxHOMEOFFSET + 0x03)
|
||||||
|
#define ECAT_HM_OFFSET_ValueRangeExceeded (ECTAxHOMEOFFSET + 0x04)
|
||||||
|
#define ECAT_HM_OFFSET_WrittenTooHigh (ECTAxHOMEOFFSET + 0x05)
|
||||||
|
#define ECAT_HM_OFFSET_WrittenTooLow (ECTAxHOMEOFFSET + 0x06)
|
||||||
|
#define ECAT_HM_OFFSET_MaximumLessMinimum (ECTAxHOMEOFFSET + 0x07)
|
||||||
|
#define ECAT_HM_OFFSET_OTHER (ECTAxHOMEOFFSET + 0x08)
|
||||||
|
|
||||||
|
#define ECAT_HM_MODE_ProtocolTimeout (ECTAxHOMEMODE + 0x01)
|
||||||
|
#define ECAT_HM_MODE_ObjectNotExist (ECTAxHOMEMODE + 0x02)
|
||||||
|
#define ECAT_HM_MODE_SubindexNotExist (ECTAxHOMEMODE + 0x03)
|
||||||
|
#define ECAT_HM_MODE_ValueRangeExceeded (ECTAxHOMEMODE + 0x04)
|
||||||
|
#define ECAT_HM_MODE_WrittenTooHigh (ECTAxHOMEMODE + 0x05)
|
||||||
|
#define ECAT_HM_MODE_WrittenTooLow (ECTAxHOMEMODE + 0x06)
|
||||||
|
#define ECAT_HM_MODE_MaximumLessMinimum (ECTAxHOMEMODE + 0x07)
|
||||||
|
#define ECAT_HM_MODE_OTHER (ECTAxHOMEMODE + 0x08)
|
||||||
|
|
||||||
|
|
||||||
|
#define ECAT_SDO_ToggleBitNotChanged (ECTDevSDOError + 0x5300) //0x05030000,Toggle bit not changed
|
||||||
|
#define ECAT_SDO_ProtocolTimeout (ECTDevSDOError + 0x5400) //0x05040000,SDO protocol timeout
|
||||||
|
#define ECAT_SDO_CommandNotValidOrUnknown (ECTDevSDOError + 0x5401) //0x05040001,Client/Server command specifier not valid or unknown
|
||||||
|
#define ECAT_SDO_OutOfMemory (ECTDevSDOError + 0x5405) //0x05040005,Out of memory
|
||||||
|
#define ECAT_SDO_UnsupportedAccess (ECTDevSDOError + 0x6100) //0x06010000,Unsupported access to an object
|
||||||
|
#define ECAT_SDO_WriteOnlyObject (ECTDevSDOError + 0x6101) //0x06010001,Attempt to read a write-only object
|
||||||
|
#define ECAT_SDO_ReadOnlyObject (ECTDevSDOError + 0x6102) //0x06010002,Attempt to write a read-only object
|
||||||
|
#define ECAT_SDO_ObjectNotExist (ECTDevSDOError + 0x6200) //0x06020000, This object does not exist in the object directory
|
||||||
|
#define ECAT_SDO_MappedToPDOFailed (ECTDevSDOError + 0x6441) //0x06040041,The object cannot be mapped into the PDO
|
||||||
|
#define ECAT_SDO_ExceedPdoLength (ECTDevSDOError + 0x6442) //0x06040042,The number and length of the objects to be mapped would exceed the PDO length
|
||||||
|
#define ECAT_SDO_ParameterIncompatibility (ECTDevSDOError + 0x6443) //0x06040043,General parameter incompatibility reason
|
||||||
|
#define ECAT_SDO_InternalIncompatibility (ECTDevSDOError + 0x6447) //0x06040047,"General internal incompatibility in device
|
||||||
|
#define ECAT_SDO_HardwareError (ECTDevSDOError + 0x6600) //0x06060000,Access failure due to a hardware error
|
||||||
|
#define ECAT_SDO_LengthNotMatch (ECTDevSDOError + 0x6710) //0x06070010,Data type does not match, length of service parameter does not match
|
||||||
|
#define ECAT_SDO_LengthTooHigh (ECTDevSDOError + 0x6712) //0x06070012,Data type does not match, length of service parameter too high
|
||||||
|
#define ECAT_SDO_LengthTooLow (ECTDevSDOError + 0x6713) //0x06070013,Data type does not match, length of service parameter too low
|
||||||
|
#define ECAT_SDO_SubindexNotExist (ECTDevSDOError + 0x6911) //0x06090011,Subindex does not exist
|
||||||
|
#define ECAT_SDO_ValueRangeExceeded (ECTDevSDOError + 0x6930) //0x06090030,Value range of parameter exceeded
|
||||||
|
#define ECAT_SDO_WrittenTooHigh (ECTDevSDOError + 0x6931) //0x06090031,Value of parameter written too high
|
||||||
|
#define ECAT_SDO_WrittenTooLow (ECTDevSDOError + 0x6932) //0x06090032,Value of parameter written too low
|
||||||
|
#define ECAT_SDO_MaximumLessMinimum (ECTDevSDOError + 0x6936) //0x06090036,Maximum value is less than minimum value
|
||||||
|
#define ECAT_SDO_GeneralError (ECTDevSDOError + 0x8000) //0x08000000,General error
|
||||||
|
#define ECAT_SDO_ErrorStoredToApplication (ECTDevSDOError + 0x8020) //0x08000020,Data cannot be transferred or stored to the application
|
||||||
|
#define ECAT_SDO_ErrorStoredOfLocalControl (ECTDevSDOError + 0x8021) //0x08000021,Data cannot be transferred or stored to the application because of local control
|
||||||
|
#define ECAT_SDO_ErrorStoredOfPresentDeviceState (ECTDevSDOError + 0x8022) //0x08000022,Data cannot be transferred or stored to the application because of the present device state
|
||||||
|
#define ECAT_SDO_DynamicGenerationFails (ECTDevSDOError + 0x8023) //0x08000023,Object dictionary dynamic generation fails or no object
|
||||||
|
|
||||||
|
#endif // __ADV_MOT_ERR_H__
|
||||||
@ -0,0 +1,502 @@
|
|||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ADV_MOT_PROP_ID_H__
|
||||||
|
#define __ADV_MOT_PROP_ID_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
| ************ Advantech Motion Property ID Definition ********************** |
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
*/
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Property ID Define
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define FT_Dev_ID 0
|
||||||
|
#define PAR_Dev_ID 101
|
||||||
|
#define CFG_Dev_ID 201
|
||||||
|
|
||||||
|
#define FT_Ax_ID 301
|
||||||
|
#define PAR_Ax_ID 401
|
||||||
|
#define CFG_Ax_ID 501
|
||||||
|
|
||||||
|
#define FT_Gp_ID 601
|
||||||
|
#define PAR_Gp_ID 701
|
||||||
|
#define CFG_Gp_ID 801
|
||||||
|
|
||||||
|
// [9/24/2013 dan.yang]
|
||||||
|
#define PAR_RB_ID 1000
|
||||||
|
#define CFG_RB_ID 1200
|
||||||
|
|
||||||
|
#define CFG_CH_ID 1500 // [11/18/2014 dan]
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Device Feature
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define FT_DevIpoTypeMap (FT_Dev_ID + 0)
|
||||||
|
#define FT_DevAxesCount (FT_Dev_ID + 1)
|
||||||
|
#define FT_DevFunctionMap (FT_Dev_ID + 2)
|
||||||
|
#define FT_DevOverflowCntr (FT_Dev_ID + 3)
|
||||||
|
//Master device config
|
||||||
|
#define FT_MasCyclicCnt_R0 (FT_Dev_ID + 4)
|
||||||
|
#define FT_MasCyclicCnt_R1 (FT_Dev_ID + 5)
|
||||||
|
#define FT_DevMDAQTypeMap (FT_Dev_ID + 6)// [6/13/2012 dan.yang]
|
||||||
|
#define FT_DevMDAQTrigMap (FT_Dev_ID + 7)// [6/13/2012 dan.yang]
|
||||||
|
#define FT_DevMDAQMaxChan (FT_Dev_ID + 8)// [6/13/2012 dan.yang]
|
||||||
|
#define FT_DevMDAQMaxBufCount (FT_Dev_ID + 9)// [6/13/2012 dan.yang]
|
||||||
|
#define FT_DevLTCBufMaxCount (FT_Dev_ID + 10)
|
||||||
|
#define FT_DevVersion (FT_Dev_ID + 11) // [6/4/2013 dan.yang]
|
||||||
|
#define FT_DevEmgMap (FT_Dev_ID + 12) // [1/8/2014 deng]
|
||||||
|
#define FT_DevSupportAxesCount (FT_Dev_ID + 13) // [9/30/2015 Andy]
|
||||||
|
#define FT_AresVariableCount (FT_Dev_ID + 14) // [1/14/2016 Andy]
|
||||||
|
|
||||||
|
//DAQ function [1/24/2008 Dean]
|
||||||
|
#define FT_DaqDiMaxChan (FT_Dev_ID + 50)
|
||||||
|
#define FT_DaqDoMaxChan (FT_Dev_ID + 51)
|
||||||
|
#define FT_DaqAiRangeMap (FT_Dev_ID + 52)
|
||||||
|
#define FT_DaqAoRangeMap (FT_Dev_ID + 53)
|
||||||
|
#define FT_DaqAiMaxSingleChan (FT_Dev_ID + 54)
|
||||||
|
#define FT_DaqAiMaxDiffChan (FT_Dev_ID + 55)
|
||||||
|
#define FT_DaqAiResolution (FT_Dev_ID + 56)
|
||||||
|
#define FT_DaqAoMaxChan (FT_Dev_ID + 57)
|
||||||
|
#define FT_DaqAoResolution (FT_Dev_ID + 58)
|
||||||
|
#define FT_DaqCntMaxChan (FT_Dev_ID + 59)
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Device Config
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define CFG_DevBoardID (CFG_Dev_ID + 0)
|
||||||
|
#define CFG_DevRingID (CFG_Dev_ID + 1)
|
||||||
|
#define CFG_DevBaseAddress (CFG_Dev_ID + 2)
|
||||||
|
#define CFG_DevInterrupt (CFG_Dev_ID + 3)
|
||||||
|
#define CFG_DevBusNumber (CFG_Dev_ID + 4)
|
||||||
|
#define CFG_DevSlotNumber (CFG_Dev_ID + 5)
|
||||||
|
#define CFG_DevDriverVersion (CFG_Dev_ID + 6)
|
||||||
|
#define CFG_DevDllVersion (CFG_Dev_ID + 7)
|
||||||
|
#define CFG_DevComQualityContiErr (CFG_Dev_ID + 8)
|
||||||
|
#define CFG_DevComQualityErrRate (CFG_Dev_ID + 9)
|
||||||
|
#define CFG_DevComWdgMode (CFG_Dev_ID + 10)
|
||||||
|
#define CFG_DevFwMemory (CFG_Dev_ID + 11)
|
||||||
|
#define CFG_DevEmgReact (CFG_Dev_ID + 12)
|
||||||
|
#define CFG_DevFwVersion (CFG_Dev_ID + 13)
|
||||||
|
#define CFG_DevBelongsTo (CFG_Dev_ID + 14)
|
||||||
|
#define CFG_DevMasterDev (CFG_Dev_ID + 15)
|
||||||
|
#define CFG_DevSlaveDevs (CFG_Dev_ID + 16)
|
||||||
|
#define CFG_DevCPLDVersion (CFG_Dev_ID + 17)
|
||||||
|
#define CFG_DevCPLD_1Version (CFG_Dev_ID + 18)
|
||||||
|
#define CFG_DevEmgLogic (CFG_Dev_ID + 19)
|
||||||
|
#define CFG_DevLatestFwVersion (CFG_Dev_ID + 20) // [5/30/2013 dan.yang]
|
||||||
|
#define CFG_DevEmgFilterTime (CFG_Dev_ID + 21) //20140107 zhaocui add
|
||||||
|
#define CFG_DevMultiCmpAxisEnable (CFG_Dev_ID + 22) // [1/14/2014 deng]
|
||||||
|
#define CFG_DevMultiCmpOutChannel (CFG_Dev_ID + 23) // [1/14/2014 deng]
|
||||||
|
#define CFG_DevMultiCmpPulseLogic (CFG_Dev_ID + 24) // [1/14/2014 deng]
|
||||||
|
#define CFG_DevMultiCmpPulseWidth (CFG_Dev_ID + 25) // [1/14/2014 deng]
|
||||||
|
#define CFG_DevKillDec (CFG_Dev_ID + 26)// [2/28/2014 deng]
|
||||||
|
#define CFG_DevFuncDiFltSmpRate (CFG_Dev_ID + 27) // [10/18/2013 dan.yang]
|
||||||
|
#define CFG_DevLogMsg (CFG_Dev_ID + 28) // [06/26/2015 andy.wang]
|
||||||
|
|
||||||
|
|
||||||
|
//DAQ function [1/24/2008 Dean]
|
||||||
|
#define CFG_DaqAiChanType (CFG_Dev_ID + 50)
|
||||||
|
#define CFG_DaqAiRanges (CFG_Dev_ID + 51)
|
||||||
|
#define CFG_DaqMaiRanges (CFG_Dev_ID + 52)
|
||||||
|
#define CFG_DaqAoRanges_C0 (CFG_Dev_ID + 53)
|
||||||
|
#define CFG_DaqAoRanges_C1 (CFG_Dev_ID + 54)
|
||||||
|
#define CFG_DaqAoRanges_C2 (CFG_Dev_ID + 55)
|
||||||
|
#define CFG_DaqAoRanges_C3 (CFG_Dev_ID + 56)
|
||||||
|
#define CFG_DaqAiGain (CFG_Dev_ID + 57) // [4/19/2012 dan.yang]
|
||||||
|
|
||||||
|
//Master device config
|
||||||
|
#define CFG_MasBaudRate_R0 (CFG_Dev_ID + 31)
|
||||||
|
#define CFG_MasBaudRate_R1 (CFG_Dev_ID + 32)
|
||||||
|
#define CFG_MasComErrRate_R0 (CFG_Dev_ID + 33)
|
||||||
|
#define CFG_MasComErrRate_R1 (CFG_Dev_ID + 34)
|
||||||
|
#define CFG_MasComContiErr_R0 (CFG_Dev_ID + 35)
|
||||||
|
#define CFG_MasComContiErr_R1 (CFG_Dev_ID + 36)
|
||||||
|
#define CFG_MasIoComContiErr_R0 (CFG_Dev_ID + 37)
|
||||||
|
#define CFG_MasIoComContiErr_R1 (CFG_Dev_ID + 38)
|
||||||
|
#define CFG_MasDataComContiErr_R0 (CFG_Dev_ID + 39)
|
||||||
|
#define CFG_MasDataComContiErr_R1 (CFG_Dev_ID + 40)
|
||||||
|
#define CFG_MasCycleTime (CFG_Dev_ID + 60) // [11/10/2014 dan]
|
||||||
|
#define CFG_IoCycleTime (CFG_Dev_ID + 61)
|
||||||
|
#define CFG_DevMultiTrigPulseMode (CFG_Dev_ID + 65)
|
||||||
|
#define CFG_DevMultiTrigAutoEmptyEn (CFG_Dev_ID + 68)
|
||||||
|
#define CFG_DevMultiTrigForcePWMCount (CFG_Dev_ID + 69)
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Axis Feature
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define FT_AxFunctionMap (FT_Ax_ID + 0)
|
||||||
|
#define FT_AxMaxVel (FT_Ax_ID + 1)
|
||||||
|
#define FT_AxMaxAcc (FT_Ax_ID + 2)
|
||||||
|
#define FT_AxMaxDec (FT_Ax_ID + 3)
|
||||||
|
#define FT_AxMaxJerk (FT_Ax_ID + 4)
|
||||||
|
#define FT_AxPulseInMap (FT_Ax_ID + 5)
|
||||||
|
#define FT_AxPulseInModeMap (FT_Ax_ID + 6)
|
||||||
|
#define FT_AxPulseOutMap (FT_Ax_ID + 7)
|
||||||
|
#define FT_AxPulseOutModeMap (FT_Ax_ID + 8)
|
||||||
|
#define FT_AxAlmMap (FT_Ax_ID + 9)
|
||||||
|
#define FT_AxInpMap (FT_Ax_ID + 10)
|
||||||
|
#define FT_AxErcMap (FT_Ax_ID + 11)
|
||||||
|
#define FT_AxErcEnableModeMap (FT_Ax_ID + 12)
|
||||||
|
#define FT_AxErcOnTimeMap (FT_Ax_ID + 13)
|
||||||
|
#define FT_AxErcOffTimeMap (FT_Ax_ID + 14)
|
||||||
|
#define FT_AxSdMap (FT_Ax_ID + 15)
|
||||||
|
#define FT_AxElMap (FT_Ax_ID + 16)
|
||||||
|
#define FT_AxSwMelMap (FT_Ax_ID + 17)
|
||||||
|
#define FT_AxSwPelMap (FT_Ax_ID + 18)
|
||||||
|
#define FT_AxHomeMap (FT_Ax_ID + 19)
|
||||||
|
#define FT_AxBackLashMap (FT_Ax_ID + 20)
|
||||||
|
#define FT_AxVibrationMap (FT_Ax_ID + 21)
|
||||||
|
#define FT_AxAlarmMap (FT_Ax_ID + 22)
|
||||||
|
#define FT_AxCompareMap (FT_Ax_ID + 23) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxLatchMap (FT_Ax_ID + 24) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxCamDOMap (FT_Ax_ID + 25) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxExtDriveMap (FT_Ax_ID + 26) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxExtMasterSrcMap (FT_Ax_ID + 27) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxGenDOMap (FT_Ax_ID + 28) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxGenDIMap (FT_Ax_ID + 29) // [9/14/2011 dan.yang]
|
||||||
|
#define FT_AxSimStartSourceMap (FT_Ax_ID + 30) // [9/19/2011 dan.yang]
|
||||||
|
#define FT_AxHomeModeMap (FT_Ax_ID + 31) // [6/14/2012 dan.yang]
|
||||||
|
#define FT_AxIN1Map (FT_Ax_ID + 32) // [12/15/2012 dan.yang]
|
||||||
|
#define FT_AxIN2Map (FT_Ax_ID + 33) // [12/15/2012 dan.yang]
|
||||||
|
#define FT_AxIN3Map (FT_Ax_ID + 34) // [12/15/2012 dan.yang]
|
||||||
|
#define FT_AxIN4Map (FT_Ax_ID + 35) // [12/15/2012 dan.yang]
|
||||||
|
#define FT_AxIN5Map (FT_Ax_ID + 36) // [12/15/2012 dan.yang]
|
||||||
|
#define FT_AxDIFilterMap (FT_Ax_ID + 37) // [1/8/2014 deng]
|
||||||
|
#define FT_AxJogMap (FT_Ax_ID + 38) // [5/8/2014 dan.yang]
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Axis Parameter
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define PAR_AxVelLow (PAR_Ax_ID + 0)
|
||||||
|
#define PAR_AxVelHigh (PAR_Ax_ID + 1)
|
||||||
|
#define PAR_AxAcc (PAR_Ax_ID + 2)
|
||||||
|
#define PAR_AxDec (PAR_Ax_ID + 3)
|
||||||
|
#define PAR_AxJerk (PAR_Ax_ID + 4)
|
||||||
|
#define PAR_AxHomeExMode (PAR_Ax_ID + 5)
|
||||||
|
#define PAR_AxHomeExSwitchMode (PAR_Ax_ID + 6)
|
||||||
|
//#define PAR_AxHomeExCrossDistance (PAR_Ax_ID + 7)
|
||||||
|
#define PAR_AxHomeCrossDistance (PAR_Ax_ID + 7)
|
||||||
|
#define PAR_AxJerkL (PAR_Ax_ID + 8)
|
||||||
|
|
||||||
|
//#define PAR_AxJogVelLow (PAR_Ax_ID + 9)
|
||||||
|
//#define PAR_AxJogVelHigh (PAR_Ax_ID + 10)
|
||||||
|
//#define PAR_AxJogAcc (PAR_Ax_ID + 11)
|
||||||
|
//#define PAR_AxJogDec (PAR_Ax_ID + 12)
|
||||||
|
//#define PAR_AxJogJerk (PAR_Ax_ID + 13)
|
||||||
|
#define PAR_AxHomeVelLow (PAR_Ax_ID + 14)
|
||||||
|
#define PAR_AxHomeVelHigh (PAR_Ax_ID + 15)
|
||||||
|
#define PAR_AxHomeAcc (PAR_Ax_ID + 16)
|
||||||
|
#define PAR_AxHomeDec (PAR_Ax_ID + 17)
|
||||||
|
#define PAR_AxHomeJerk (PAR_Ax_ID + 18)
|
||||||
|
|
||||||
|
//YDD. 2015.3.6 Add for panasonic driver parameter getting/setting on PCI-1203
|
||||||
|
#define PAR_AxHistoryNumber (PAR_Ax_ID + 20)
|
||||||
|
#define PAR_AxHistoryIndex1 (PAR_Ax_ID + 21)
|
||||||
|
#define PAR_AxHistoryIndex2 (PAR_Ax_ID + 22)
|
||||||
|
#define PAR_AxHistoryIndex3 (PAR_Ax_ID + 23)
|
||||||
|
#define PAR_AxHistoryIndex4 (PAR_Ax_ID + 24)
|
||||||
|
#define PAR_AxHistoryIndex5 (PAR_Ax_ID + 25)
|
||||||
|
#define PAR_AxHistoryIndex6 (PAR_Ax_ID + 26)
|
||||||
|
#define PAR_AxHistoryIndex7 (PAR_Ax_ID + 27)
|
||||||
|
#define PAR_AxHistoryIndex8 (PAR_Ax_ID + 28)
|
||||||
|
#define PAR_AxHistoryIndex9 (PAR_Ax_ID + 29)
|
||||||
|
#define PAR_AxHistoryIndex10 (PAR_Ax_ID + 30)
|
||||||
|
#define PAR_AxHistoryIndex11 (PAR_Ax_ID + 31)
|
||||||
|
#define PAR_AxHistoryIndex12 (PAR_Ax_ID + 32)
|
||||||
|
#define PAR_AxHistoryIndex13 (PAR_Ax_ID + 33)
|
||||||
|
#define PAR_AxHistoryIndex14 (PAR_Ax_ID + 34)
|
||||||
|
#define PAR_AxDriverSWVersion (PAR_Ax_ID + 35)
|
||||||
|
#define PAR_AxDriverStatus (PAR_Ax_ID + 36)
|
||||||
|
#define PAR_AxDriverModelNumber (PAR_Ax_ID + 37)
|
||||||
|
#define PAR_AxDriverSerialNumber (PAR_Ax_ID + 38)
|
||||||
|
#define PAR_AxDriverActualTor (PAR_Ax_ID + 39)
|
||||||
|
#define PAR_AxDriverVendorID (PAR_Ax_ID + 40)
|
||||||
|
#define PAR_AxDriverReserved2 (PAR_Ax_ID + 41)
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Axis Config
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define CFG_AxPPU (CFG_Ax_ID + 50)
|
||||||
|
#define CFG_AxPhyID (CFG_Ax_ID + 51)
|
||||||
|
#define CFG_AxMaxVel (CFG_Ax_ID + 52)
|
||||||
|
#define CFG_AxMaxAcc (CFG_Ax_ID + 53)
|
||||||
|
#define CFG_AxMaxDec (CFG_Ax_ID + 54)
|
||||||
|
#define CFG_AxMaxJerk (CFG_Ax_ID + 55)
|
||||||
|
#define CFG_AxPulseInMode (CFG_Ax_ID + 56)
|
||||||
|
#define CFG_AxPulseInLogic (CFG_Ax_ID + 57)
|
||||||
|
#define CFG_AxPulseInSource (CFG_Ax_ID + 58)
|
||||||
|
#define CFG_AxPulseOutMode (CFG_Ax_ID + 59)
|
||||||
|
#define CFG_AxAlmEnable (CFG_Ax_ID + 60)
|
||||||
|
#define CFG_AxAlmLogic (CFG_Ax_ID + 61)
|
||||||
|
#define CFG_AxAlmReact (CFG_Ax_ID + 62)
|
||||||
|
#define CFG_AxInpEnable (CFG_Ax_ID + 63)
|
||||||
|
#define CFG_AxInpLogic (CFG_Ax_ID + 64)
|
||||||
|
#define CFG_AxErcLogic (CFG_Ax_ID + 65)
|
||||||
|
#define CFG_AxErcOnTime (CFG_Ax_ID + 66)
|
||||||
|
#define CFG_AxErcOffTime (CFG_Ax_ID + 67)
|
||||||
|
#define CFG_AxErcEnableMode (CFG_Ax_ID + 68)
|
||||||
|
#define CFG_AxSdEnable (CFG_Ax_ID + 69)
|
||||||
|
#define CFG_AxSdLogic (CFG_Ax_ID + 70)
|
||||||
|
#define CFG_AxSdReact (CFG_Ax_ID + 71)
|
||||||
|
#define CFG_AxSdLatch (CFG_Ax_ID + 72)
|
||||||
|
#define CFG_AxElEnable (CFG_Ax_ID + 73)
|
||||||
|
#define CFG_AxElLogic (CFG_Ax_ID + 74)
|
||||||
|
#define CFG_AxElReact (CFG_Ax_ID + 75)
|
||||||
|
#define CFG_AxSwMelEnable (CFG_Ax_ID + 76)
|
||||||
|
#define CFG_AxSwPelEnable (CFG_Ax_ID + 77)
|
||||||
|
#define CFG_AxSwMelReact (CFG_Ax_ID + 78)
|
||||||
|
#define CFG_AxSwPelReact (CFG_Ax_ID + 79)
|
||||||
|
#define CFG_AxSwMelValue (CFG_Ax_ID + 80)
|
||||||
|
#define CFG_AxSwPelValue (CFG_Ax_ID + 81)
|
||||||
|
#define CFG_AxHomeMode (CFG_Ax_ID + 82)
|
||||||
|
#define CFG_AxHomeDir (PAR_Ax_ID + 83)
|
||||||
|
#define CFG_AxHomeSwitchMode (PAR_Ax_ID + 84)
|
||||||
|
#define CFG_AxHomePosition (PAR_Ax_ID + 85)
|
||||||
|
#define CFG_AxHomeCrossDistance (PAR_Ax_ID + 86)
|
||||||
|
#define CFG_AxOrgEnable (CFG_Ax_ID + 87)
|
||||||
|
#define CFG_AxOrgLogic (CFG_Ax_ID + 88)
|
||||||
|
#define CFG_AxEzEnable (CFG_Ax_ID + 89)
|
||||||
|
#define CFG_AxEzLogic (CFG_Ax_ID + 90)
|
||||||
|
#define CFG_AxEzCount (CFG_Ax_ID + 91)
|
||||||
|
#define CFG_AxBacklashEnable (CFG_Ax_ID + 92)
|
||||||
|
#define CFG_AxBacklashPulses (CFG_Ax_ID + 93)
|
||||||
|
#define CFG_AxVibrationEnable (CFG_Ax_ID + 94)
|
||||||
|
#define CFG_AxVibrationReverseTime (CFG_Ax_ID + 95)
|
||||||
|
#define CFG_AxVibrationForwardTime (CFG_Ax_ID + 96)
|
||||||
|
#define CFG_AxPositionLagEn (CFG_Ax_ID + 97)
|
||||||
|
#define CFG_AxMaxPositionLag (CFG_Ax_ID + 98)
|
||||||
|
#define CFG_AxEmgReaction (CFG_Ax_ID + 99)
|
||||||
|
#define CFG_AxLatchLogic (CFG_Ax_ID + 100)
|
||||||
|
#define CFG_AxHomeResetEnable (CFG_Ax_ID + 101)
|
||||||
|
#define CFG_AxCmpSrc (CFG_Ax_ID + 102)
|
||||||
|
#define CFG_AxCmpMethod (CFG_Ax_ID + 103)
|
||||||
|
#define CFG_AxCmpPulseMode (CFG_Ax_ID + 104)
|
||||||
|
#define CFG_AxCmpPulseLogic (CFG_Ax_ID + 105)
|
||||||
|
#define CFG_AxCmpPulseWidth (CFG_Ax_ID + 106)
|
||||||
|
#define CFG_AxCmpEnable (CFG_Ax_ID + 107)
|
||||||
|
#define CFG_AxRange (CFG_Ax_ID + 108)
|
||||||
|
#define CFG_AxGenDoEnable (CFG_Ax_ID + 109)
|
||||||
|
#define CFG_AxExtMasterSrc (CFG_Ax_ID + 110)
|
||||||
|
#define CFG_AxExtSelEnable (CFG_Ax_ID + 111)
|
||||||
|
#define CFG_AxExtPulseNum (CFG_Ax_ID + 112)
|
||||||
|
#define CFG_AxOrgLatch (CFG_Ax_ID + 113)
|
||||||
|
#define CFG_AxOutLogic (CFG_Ax_ID + 114)
|
||||||
|
#define CFG_AxDirLogic (CFG_Ax_ID + 115)
|
||||||
|
#define CFG_AxExtPulseInMode (CFG_Ax_ID + 116)
|
||||||
|
#define CFG_AxExtPresetNum (CFG_Ax_ID + 117)
|
||||||
|
#define CFG_AxErcOffTmEnable (CFG_Ax_ID + 118)
|
||||||
|
#define CFG_AxAuxOutEnable (CFG_Ax_ID + 119)
|
||||||
|
#define CFG_AxAuxOutTime (CFG_Ax_ID + 120)
|
||||||
|
|
||||||
|
/*ydd add for pci1245 and pci1265 2011-03-08 */
|
||||||
|
#define CFG_AxCamDOEnable (CFG_Ax_ID + 121)
|
||||||
|
#define CFG_AxCamDOLoLimit (CFG_Ax_ID + 122)
|
||||||
|
#define CFG_AxCamDOHiLimit (CFG_Ax_ID + 123)
|
||||||
|
#define CFG_AxCamDOMode (CFG_Ax_ID + 124)
|
||||||
|
#define CFG_AxCamDODir (CFG_Ax_ID + 125)
|
||||||
|
#define CFG_AxCamDOCmpSrc (CFG_Ax_ID + 126)
|
||||||
|
#define CFG_AxCamDOLogic (CFG_Ax_ID + 127)
|
||||||
|
#define CFG_AxModuleRange (CFG_Ax_ID + 128)
|
||||||
|
#define CFG_AxBacklashVel (CFG_Ax_ID + 129)
|
||||||
|
#define CFG_AxLatchEnable (CFG_Ax_ID + 130)
|
||||||
|
#define CFG_AxPulseInMaxFreq (CFG_Ax_ID + 131) // [6/20/2011 dan.yang]
|
||||||
|
#define CFG_AxSimStartSource (CFG_Ax_ID + 132) // [9/19/2011 dan.yang]
|
||||||
|
#define CFG_AxOrgReact (CFG_Ax_ID + 133) // [12/26/2011 dan.yang]
|
||||||
|
#define CFG_AxIN1StopEnable (CFG_Ax_ID + 134) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN1StopReact (CFG_Ax_ID + 135) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN1StopLogic (CFG_Ax_ID + 136) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN2StopEnable (CFG_Ax_ID + 137) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN2StopReact (CFG_Ax_ID + 138) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN2StopLogic (CFG_Ax_ID + 139) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN4StopEnable (CFG_Ax_ID + 140) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN4StopReact (CFG_Ax_ID + 141) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN4StopLogic (CFG_Ax_ID + 142) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN5StopEnable (CFG_Ax_ID + 143) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN5StopReact (CFG_Ax_ID + 144) // [12/14/2012 dan.yang]
|
||||||
|
#define CFG_AxIN5StopLogic (CFG_Ax_ID + 145) // [12/14/2012 dan.yang]
|
||||||
|
//latch buffer:// [3/6/2013 dan.yang]
|
||||||
|
#define CFG_AxLatchBufEnable (CFG_Ax_ID + 146)
|
||||||
|
#define CFG_AxLatchBufMinDist (CFG_Ax_ID + 147)
|
||||||
|
#define CFG_AxLatchBufEventNum (CFG_Ax_ID + 148)
|
||||||
|
#define CFG_AxLatchBufSource (CFG_Ax_ID + 149)
|
||||||
|
#define CFG_AxLatchBufAxisID (CFG_Ax_ID + 150)
|
||||||
|
#define CFG_AxLatchBufEdge (CFG_Ax_ID + 151)
|
||||||
|
#define CFG_AxHomeOffsetDistance (CFG_Ax_ID + 152)
|
||||||
|
#define CFG_AxHomeOffsetVel (CFG_Ax_ID + 153)
|
||||||
|
//pwm //[7/15/2013]zhaocui add
|
||||||
|
#define CFG_AxPWMFreq (CFG_Ax_ID + 154)
|
||||||
|
#define CFG_AxPWMDuty (CFG_Ax_ID + 155)
|
||||||
|
#define CFG_AxPPUDenominator (CFG_Ax_ID + 156) // [8/31/2013 dan.yang]
|
||||||
|
#define CFG_AxGantryMaxDiffValue (CFG_Ax_ID + 157) // [9/3/2013 dan.yang]
|
||||||
|
// [10/29/2013 dan.yang]:Add channel
|
||||||
|
#define CFG_AxCh1CmpEnable (CFG_Ax_ID + 159)
|
||||||
|
#define CFG_AxCh1CmpPulseLogic (CFG_Ax_ID + 160)
|
||||||
|
|
||||||
|
#define CFG_AxCh2CmpEnable (CFG_Ax_ID + 161)
|
||||||
|
#define CFG_AxCh2CmpPulseLogic (CFG_Ax_ID + 162)
|
||||||
|
|
||||||
|
#define CFG_AxCh3CmpEnable (CFG_Ax_ID + 163)
|
||||||
|
#define CFG_AxCh3CmpPulseLogic (CFG_Ax_ID + 164)
|
||||||
|
|
||||||
|
//20131120 zhaocui add
|
||||||
|
#define CFG_AxPelToleranceEnable (CFG_Ax_ID + 165)
|
||||||
|
#define CFG_AxPelToleranceValue (CFG_Ax_ID + 166)
|
||||||
|
#define CFG_AxSwPelToleranceEnable (CFG_Ax_ID + 167)
|
||||||
|
#define CFG_AxSwPelToleranceValue (CFG_Ax_ID + 168)
|
||||||
|
|
||||||
|
#define CFG_AxCmpPulseWidthEx (CFG_Ax_ID + 169)
|
||||||
|
|
||||||
|
#define CFG_AxMelToleranceEnable (CFG_Ax_ID + 170)
|
||||||
|
#define CFG_AxMelToleranceValue (CFG_Ax_ID + 171)
|
||||||
|
#define CFG_AxSwMelToleranceEnable (CFG_Ax_ID + 172)
|
||||||
|
#define CFG_AxSwMelToleranceValue (CFG_Ax_ID + 173)
|
||||||
|
|
||||||
|
//20140107 zhaocui add
|
||||||
|
#define CFG_AxALMFilterTime (CFG_Ax_ID + 174)
|
||||||
|
#define CFG_AxLMTPFilterTime (CFG_Ax_ID + 175)
|
||||||
|
#define CFG_AxLMTNFilterTime (CFG_Ax_ID + 176)
|
||||||
|
#define CFG_AxIN1FilterTime (CFG_Ax_ID + 177)
|
||||||
|
#define CFG_AxIN2FilterTime (CFG_Ax_ID + 178)
|
||||||
|
#define CFG_AxORGFilterTime (CFG_Ax_ID + 179)
|
||||||
|
#define CFG_AxIN4FilterTime (CFG_Ax_ID + 180)
|
||||||
|
#define CFG_AxIN5FilterTime (CFG_Ax_ID + 181)
|
||||||
|
|
||||||
|
#define CFG_AxEncoderRatio (CFG_Ax_ID + 182)//20131203 zhaocui add
|
||||||
|
#define CFG_AxMaxErrCount (CFG_Ax_ID + 183)//20131203 zhaocui add
|
||||||
|
#define CFG_AxResponseTime (CFG_Ax_ID + 184)//20131203 zhaocui add
|
||||||
|
#define CFG_AxMaxCorrectTimes (CFG_Ax_ID + 185)//20131203 zhaocui add
|
||||||
|
// [1/16/2014 deng]
|
||||||
|
#define CFG_AxisMultiCmpDeviation (CFG_Ax_ID + 186)
|
||||||
|
#define CFG_AxForcePWMOutTime (CFG_Ax_ID + 187)
|
||||||
|
// [4/29/2014 deng]
|
||||||
|
#define CFG_AxLatchStopEnable (CFG_Ax_ID + 188)
|
||||||
|
#define CFG_AxLatchStopReact (CFG_Ax_ID + 189)
|
||||||
|
#define CFG_AxPulseStopSrc (CFG_Ax_ID + 190)
|
||||||
|
#define CFG_AxJogVLTime (CFG_Ax_ID + 191)
|
||||||
|
|
||||||
|
#define CFG_AxPulseOutReverse (CFG_Ax_ID + 192) // [3/31/2014 dan.yang]: Reverse Pulse/Dir and CW/CCW pulse out mode for fucai
|
||||||
|
#define CFG_AxKillDec (CFG_Ax_ID + 193) // [5/9/2014 kai.yang] added for DIStop dec
|
||||||
|
|
||||||
|
#define CFG_AxJogVelLow (CFG_Ax_ID + 194) //[7/10/2014 kai.yang]
|
||||||
|
#define CFG_AxJogVelHigh (CFG_Ax_ID + 195) //[7/10/2014 kai.yang]
|
||||||
|
#define CFG_AxJogAcc (CFG_Ax_ID + 196) //[7/10/2014 kai.yang]
|
||||||
|
#define CFG_AxJogDec (CFG_Ax_ID + 197) //[7/10/2014 kai.yang]
|
||||||
|
#define CFG_AxJogJerk (CFG_Ax_ID + 198) //[7/10/2014 kai.yang]
|
||||||
|
#define CFG_AxMaxErrorCnt (CFG_Ax_ID + 199) //[10/13/2014 kai.yang]
|
||||||
|
#define CFG_AxCounterMax (CFG_Ax_ID + 200) //[10/15/2014 kai.yang]
|
||||||
|
#define CFG_AxOverflowMode (CFG_Ax_ID + 201) //[10/15/2014 kai.yang]
|
||||||
|
#define CFG_AxGantryActDiffValue (CFG_Ax_ID + 202) //[11/11/2014 kai.yang]
|
||||||
|
#define CFG_AxPelLogic (CFG_Ax_ID + 203)// [11/21/2014 deng]
|
||||||
|
#define CFG_AxMelLogic (CFG_Ax_ID + 204)// [11/21/2014 deng]
|
||||||
|
#define CFG_AxSetCmpDO (CFG_Ax_ID + 205)// [12/2/2014 deng]
|
||||||
|
|
||||||
|
|
||||||
|
#define CFG_AxJogPAssign (CFG_Ax_ID + 220) //[5/8/2015 Andy.Wang]
|
||||||
|
#define CFG_AxJogNAssign (CFG_Ax_ID + 221) //[5/8/2015 Andy.Wang]
|
||||||
|
#define CFG_AxCamDOAssign (CFG_Ax_ID + 222) //[5/8/2015 Andy.Wang]
|
||||||
|
#define CFG_AxIN1StopAssign (CFG_Ax_ID + 223) //[5/12/2015 Andy.Wang]
|
||||||
|
#define CFG_AxCmdErrorProtection (CFG_Ax_ID + 224) //[7/29/2015 Andy.Wang]
|
||||||
|
#define CFG_AxTorqueEnable (CFG_Ax_ID + 225) //[8/6/2015 Andy.Wang]
|
||||||
|
#define CFG_AxJogJerkFactor (CFG_Ax_ID + 226) //[2/22/2016 Andy.Wang]
|
||||||
|
/************************************************************************/
|
||||||
|
/* dan.yang 2014.11.22 Add for etherCAT */
|
||||||
|
/************************************************************************/
|
||||||
|
#define CFG_CH_DaqDiInvertEnable CFG_CH_ID + 0
|
||||||
|
#define CFG_CH_DaqDiLowFilter CFG_CH_ID + 1
|
||||||
|
#define CFG_CH_DaqDiHighFilter CFG_CH_ID + 2
|
||||||
|
#define CFG_CH_DaqDoFsvEnable CFG_CH_ID + 3
|
||||||
|
#define CFG_CH_DaqAoRange CFG_CH_ID + 4
|
||||||
|
#define CFG_CH_DaqAiRange CFG_CH_ID + 5
|
||||||
|
#define CFG_CH_DaqAiEnable CFG_CH_ID + 6
|
||||||
|
#define CFG_CH_DaqAiIntegrationTime CFG_CH_ID + 7
|
||||||
|
#define CFG_CH_DaqAoFsv CFG_CH_ID + 8
|
||||||
|
#define CFG_CH_DaqAoStartup CFG_CH_ID + 9
|
||||||
|
|
||||||
|
/************************************************************************/
|
||||||
|
/* andy.wang 2015.04.21 Add for EtherCAT Counter */
|
||||||
|
/************************************************************************/
|
||||||
|
#define CFG_CH_DaqCntEnable CFG_CH_ID + 10
|
||||||
|
#define CFG_CH_DaqCntPulseInMode CFG_CH_ID + 11
|
||||||
|
#define CFG_CH_DaqCntInitValue CFG_CH_ID + 12
|
||||||
|
#define CFG_CH_DaqCntMaxValue CFG_CH_ID + 13
|
||||||
|
#define CFG_CH_DaqCntOverflowMode CFG_CH_ID + 14
|
||||||
|
#define CFG_CH_DaqCntLatchEnable CFG_CH_ID + 15
|
||||||
|
#define CFG_CH_DaqCntLatchEdge CFG_CH_ID + 16
|
||||||
|
#define CFG_CH_DaqCntCmpEnable CFG_CH_ID + 17
|
||||||
|
#define CFG_CH_DaqCntCmpMethod CFG_CH_ID + 18
|
||||||
|
#define CFG_CH_DaqCntCmpPulseEnable CFG_CH_ID + 19
|
||||||
|
#define CFG_CH_DaqCntCmpPulseMode CFG_CH_ID + 20
|
||||||
|
#define CFG_CH_DaqCntCmpPulseLogic CFG_CH_ID + 21
|
||||||
|
#define CFG_CH_DaqCntCmpPulseWidth CFG_CH_ID + 22
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Group Parameter
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define PAR_GpVelLow (PAR_Gp_ID + 0)
|
||||||
|
#define PAR_GpVelHigh (PAR_Gp_ID + 1)
|
||||||
|
#define PAR_GpAcc (PAR_Gp_ID + 2)
|
||||||
|
#define PAR_GpDec (PAR_Gp_ID + 3)
|
||||||
|
#define PAR_GpJerk (PAR_Gp_ID + 4)
|
||||||
|
#define PAR_GpGroupID (PAR_Gp_ID + 5)
|
||||||
|
#define PAR_GpJerkL (PAR_Gp_ID + 6)
|
||||||
|
#define PAR_GpIsPathDec (PAR_Gp_ID + 7)
|
||||||
|
#define PAR_GpRefPlane (PAR_Gp_ID + 8) // [6/20/2011 dan.yang]
|
||||||
|
#define PAR_GpJerkFactor (PAR_Gp_ID + 9)
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Group Config
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define CFG_GpMaxVel (CFG_Gp_ID + 0)
|
||||||
|
#define CFG_GpMaxAcc (CFG_Gp_ID + 1)
|
||||||
|
#define CFG_GpMaxDec (CFG_Gp_ID + 2)
|
||||||
|
#define CFG_GpMaxJerk (CFG_Gp_ID + 3)
|
||||||
|
#define CFG_GpPPU (CFG_Gp_ID + 4)
|
||||||
|
#define CFG_GpAxesInGroup (CFG_Gp_ID + 5)
|
||||||
|
#define CFG_GpGroupID (CFG_Gp_ID + 6)
|
||||||
|
#define CFG_GpBldTime (CFG_Gp_ID + 7) // [6/2/2011 dan.yang]
|
||||||
|
#define CFG_GpSFEnable (CFG_Gp_ID + 8) // [6/2/2011 dan.yang]
|
||||||
|
#define CFG_GpVectorEnable (CFG_Gp_ID + 13) // [6/5/2013 dan.yang]
|
||||||
|
#define CFG_GpSpdFwdVelEn (CFG_Gp_ID + 14) // [6/22/2013 dan.yang]
|
||||||
|
//by dujunling 2012.11.23
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
GM_PATTERN_ID_RefPlane=1,
|
||||||
|
GM_PATTERN_ID_UNIT,
|
||||||
|
GM_PATTERN_ID_Coordinate,
|
||||||
|
GM_PATTERN_ID_PathControl,
|
||||||
|
GM_PATTERN_ID_DistanceMode
|
||||||
|
}GM_PATTERN_ID;
|
||||||
|
//Robot zhaocui add 201307
|
||||||
|
#define CFG_RbLengthArm1 (CFG_RB_ID + 0)
|
||||||
|
#define CFG_RbLengthArm2 (CFG_RB_ID + 1)
|
||||||
|
#define CFG_RbLengthArm3 (CFG_RB_ID + 2)
|
||||||
|
#define CFG_RbHandMode (CFG_RB_ID + 3)
|
||||||
|
#define CFG_RbSFEnable (CFG_RB_ID + 4)
|
||||||
|
#define CFG_RbLengthArm4 (CFG_RB_ID + 5)
|
||||||
|
#define CFG_RbLengthArm5 (CFG_RB_ID + 6)
|
||||||
|
#define CFG_RbCsys (CFG_RB_ID + 7)
|
||||||
|
#define CFG_RbJogAxis (CFG_RB_ID + 8)
|
||||||
|
#define CFG_RbRZCOUPLING (CFG_RB_ID + 9)
|
||||||
|
#define CFG_RbRZCFNumerator (CFG_RB_ID + 10)
|
||||||
|
#define CFG_RbRZCFDenominator (CFG_RB_ID + 11)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PAR_RbVelLow (PAR_RB_ID + 0)
|
||||||
|
#define PAR_RbVelHigh (PAR_RB_ID + 1)
|
||||||
|
#define PAR_RbAcc (PAR_RB_ID + 2)
|
||||||
|
#define PAR_RbDec (PAR_RB_ID + 3)
|
||||||
|
#define PAR_RbJerk (PAR_RB_ID + 4)
|
||||||
|
#define PAR_RbRefPlane (PAR_RB_ID + 5)
|
||||||
|
#endif // __ADV_MOT_PROP_ID_H__
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "ApplicationPriority.h"
|
||||||
|
#include "PropertieMgr.h"
|
||||||
|
#include "Propertie.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
#include "AuthorityMgr.h"
|
||||||
|
|
||||||
|
CAppPriorityMgr *gAppPriorityMgr = new CAppPriorityMgr;
|
||||||
|
|
||||||
|
CAppPriorityMgr::CAppPriorityMgr(void)
|
||||||
|
{
|
||||||
|
m_bGetHighestPriority = false;//是否在打开软件时获取最高优先级
|
||||||
|
}
|
||||||
|
CAppPriorityMgr::~CAppPriorityMgr(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CMFCPropertyGridProperty *CAppPriorityMgr::CreatGridProperty()
|
||||||
|
{
|
||||||
|
CString PropertyName;//属性名称
|
||||||
|
CString Description;//描述
|
||||||
|
CString Path = _T("AppPriority");//存储路径
|
||||||
|
CString Name;
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
PropertyName = _T("程序优先级");
|
||||||
|
CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName);
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
if(gAuthorityMgr->CheckAuthority(_FACTORY))
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_bGetHighestPriority");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_bGetHighestPriority);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("最高优先级");
|
||||||
|
Description = _T("是否将程序优先级提升致系统最高级别,设置后需要重启软件");
|
||||||
|
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bGetHighestPriority, Description);
|
||||||
|
pGroup->AddSubItem(p);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p, pPropertie);
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
return pGroup;
|
||||||
|
}
|
||||||
|
void CAppPriorityMgr::ExportPar(ofstream *pFile)
|
||||||
|
{
|
||||||
|
(*pFile)<<"[模块] [CAppPriorityMgr]------------------------------------------------"<<endl;
|
||||||
|
(*pFile)<<"[最高优先级][m_bGetHighestPriority] = "<<m_bGetHighestPriority<<endl;
|
||||||
|
}
|
||||||
|
void CAppPriorityMgr::Ini()
|
||||||
|
{
|
||||||
|
if(m_bGetHighestPriority)
|
||||||
|
{
|
||||||
|
//获取最高权限
|
||||||
|
GetHighestPriority();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//获取最高权限
|
||||||
|
void CAppPriorityMgr::GetHighestPriority()
|
||||||
|
{
|
||||||
|
CString str = "[result] [进程获取系统最高优先级OK]";
|
||||||
|
//提升当前程序的优先级
|
||||||
|
if(SetPriorityClass( GetCurrentProcess(), REALTIME_PRIORITY_CLASS ))
|
||||||
|
{
|
||||||
|
str += "成功";
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str += "失败";
|
||||||
|
gLogMgr->WriteDebugLog(str,_LOG_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "module.h"
|
||||||
|
#include "EnumPropertieType.h"
|
||||||
|
|
||||||
|
//程序的优先级管理
|
||||||
|
class CAppPriorityMgr :public CModule
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CAppPriorityMgr(void);
|
||||||
|
~CAppPriorityMgr(void);
|
||||||
|
virtual void Ini();
|
||||||
|
virtual MODULE GetModuleType(){return _APP_PRIORITY_PROP;};
|
||||||
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
||||||
|
virtual void ExportPar(ofstream *pFile);
|
||||||
|
private:
|
||||||
|
void GetHighestPriority();
|
||||||
|
private:
|
||||||
|
bool m_bGetHighestPriority;//是否在打开软件时获取最高优先级
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CAppPriorityMgr *gAppPriorityMgr;
|
||||||
@ -0,0 +1,155 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "ArrayMgr.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "CommandArray.h"
|
||||||
|
#include "CommandMgr.h"
|
||||||
|
|
||||||
|
|
||||||
|
CArrayMgr::CArrayMgr(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CArrayMgr::~CArrayMgr(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CArrayMgr::Creat(SArrayPar &ArrayPar)
|
||||||
|
{
|
||||||
|
//初始化
|
||||||
|
m_ObjContainer.Clear();
|
||||||
|
if(ArrayPar.m_bRectArray)
|
||||||
|
{
|
||||||
|
RectCreat(ArrayPar);
|
||||||
|
}
|
||||||
|
else if(ArrayPar.m_bCircleArray)
|
||||||
|
{
|
||||||
|
CircleCreat(ArrayPar);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FillCreat(ArrayPar);
|
||||||
|
}
|
||||||
|
//创建指令
|
||||||
|
CreatCmd();
|
||||||
|
}
|
||||||
|
//矩形阵列方式
|
||||||
|
void CArrayMgr::RectCreat(SArrayPar &ArrayPar)
|
||||||
|
{
|
||||||
|
//按照指定个数每次克隆一个obj 到m_ObjContainer 中
|
||||||
|
for(int i=0;i<ArrayPar.m_ArrayCntV;i++)
|
||||||
|
{
|
||||||
|
for(int j=0;j<ArrayPar.m_ArrayCntH;j++)
|
||||||
|
{
|
||||||
|
//导入当前选择的obj (此时为选择状态)
|
||||||
|
GetLayerInstance().CloneObj(m_ObjContainer,true);
|
||||||
|
//移动到阵列的位置--------------------------------------
|
||||||
|
SObjOperatePar par;
|
||||||
|
par.OpType = _OP_MOVE;
|
||||||
|
par.MoveX = ArrayPar.m_ArrayOffsetV*i;
|
||||||
|
par.MoveY = ArrayPar.m_ArrayOffsetH*j;
|
||||||
|
m_ObjContainer.OperateObj(par,true);
|
||||||
|
//操作完成后变为非选择状态
|
||||||
|
m_ObjContainer.NotSelAllObj();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//圆形阵列方式
|
||||||
|
void CArrayMgr::CircleCreat(SArrayPar &ArrayPar)
|
||||||
|
{
|
||||||
|
//先X 方向阵列,在偏移旋转成圆形-----------------------------------------------------
|
||||||
|
//计算圆的周长
|
||||||
|
double Perimeter = 2*PI*ArrayPar.m_Radius;
|
||||||
|
//计算阵列间隔
|
||||||
|
ArrayPar.m_ArrayCntH = 1;//1行
|
||||||
|
ArrayPar.m_ArrayCntV = ArrayPar.m_ArrayCnt;//1行
|
||||||
|
ArrayPar.m_ArrayOffsetV = Perimeter*(ArrayPar.m_GapAngle/360);
|
||||||
|
ArrayPar.m_ArrayOffsetH = 0;
|
||||||
|
RectCreat(ArrayPar);
|
||||||
|
|
||||||
|
//计算出圆心点
|
||||||
|
DbRect AllCharRect = m_ObjContainer.GetObjRect(false);//所有obj 的范围
|
||||||
|
//底部中心点
|
||||||
|
Dbxy BottomCenterPt = AllCharRect.GetBottomCenterPt();
|
||||||
|
Dbxy CenterPt;//圆心点
|
||||||
|
CenterPt.x = BottomCenterPt.x;
|
||||||
|
CenterPt.y = BottomCenterPt.y - ArrayPar.m_Radius;
|
||||||
|
|
||||||
|
//依次旋转偏移到合适的位置
|
||||||
|
int size = m_ObjContainer.GetSize();
|
||||||
|
for(int i=0;i<size;i++)
|
||||||
|
{
|
||||||
|
DbRect ObjRect = m_ObjContainer.GetObjRect(i);
|
||||||
|
Dbxy pt = ObjRect.GetBottomCenterPt();
|
||||||
|
//旋转角度(360)
|
||||||
|
double angle = 360*(BottomCenterPt.x-pt.x)/Perimeter;
|
||||||
|
//旋转后的点
|
||||||
|
Dbxy pt2 = RotatoPt(BottomCenterPt,_360ToAngle(angle),CenterPt);
|
||||||
|
//计算偏移量
|
||||||
|
double OffsetX = pt2.x-pt.x;
|
||||||
|
double OffsetY = pt2.y-pt.y;
|
||||||
|
|
||||||
|
//旋转字符
|
||||||
|
SObjOperatePar par;
|
||||||
|
par.OpType = _OP_ROTATO;
|
||||||
|
par.BasePt = ObjRect.GetCenterPt();
|
||||||
|
par.Angle = angle;
|
||||||
|
m_ObjContainer.Operate(par,i);
|
||||||
|
//偏移字符
|
||||||
|
par.OpType = _OP_MOVE;
|
||||||
|
par.MoveX = OffsetX;
|
||||||
|
par.MoveY = OffsetY;
|
||||||
|
m_ObjContainer.Operate(par,i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CArrayMgr::FillCreat(SArrayPar &ArrayPar)
|
||||||
|
{
|
||||||
|
for(int k=0;k<=ArrayPar.m_FillCnt;k++)
|
||||||
|
{
|
||||||
|
bool flg = false;
|
||||||
|
//导入当前选择的obj (此时为选择状态)
|
||||||
|
GetLayerInstance().CloneObj(m_ObjContainer,true);
|
||||||
|
DbRect Rect = m_ObjContainer.GetObjRect(false);//所有obj 的范围
|
||||||
|
double w = Rect.Width();
|
||||||
|
{
|
||||||
|
SObjOperatePar par;
|
||||||
|
par.OpType = _OP_STRETCH;
|
||||||
|
par.BasePt = Rect.GetCenterPt();
|
||||||
|
par.OldSize = Rect.Width();
|
||||||
|
par.Diff = ArrayPar.m_FillOffset*k;
|
||||||
|
par.NewSize = par.OldSize + par.Diff;
|
||||||
|
if(par.NewSize < ArrayPar.m_FillOffset)
|
||||||
|
flg = true;
|
||||||
|
par.xy = _X;
|
||||||
|
m_ObjContainer.OperateObj(par,true);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
SObjOperatePar par;
|
||||||
|
par.OpType = _OP_STRETCH;
|
||||||
|
par.BasePt = Rect.GetCenterPt();
|
||||||
|
par.OldSize = Rect.Height();
|
||||||
|
par.Diff = ArrayPar.m_FillOffset*k;
|
||||||
|
par.NewSize = par.OldSize + par.Diff;
|
||||||
|
if(par.NewSize < ArrayPar.m_FillOffset)
|
||||||
|
flg = true;
|
||||||
|
par.xy = _Y;
|
||||||
|
m_ObjContainer.OperateObj(par,true);
|
||||||
|
}
|
||||||
|
//操作完成后变为非选择状态
|
||||||
|
m_ObjContainer.NotSelAllObj();
|
||||||
|
if(flg)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建指令
|
||||||
|
void CArrayMgr::CreatCmd()
|
||||||
|
{
|
||||||
|
if(!m_ObjContainer.Empty())
|
||||||
|
{
|
||||||
|
//创建撤销指令-------start
|
||||||
|
CCommandArray *pCmd = new CCommandArray;
|
||||||
|
gCommandMgr.AddUndoCommand(pCmd,m_ObjContainer.GetObjVec());
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
pCmd->SaveBaseObj(layer.GetObjContainer());
|
||||||
|
//创建撤销指令-------end
|
||||||
|
pCmd->Excute();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "ObjContainer.h"
|
||||||
|
//阵列用参数
|
||||||
|
struct SArrayPar{
|
||||||
|
public:
|
||||||
|
SArrayPar()
|
||||||
|
{
|
||||||
|
m_bRectArray = true;//是否为矩形阵列
|
||||||
|
m_bCircleArray = false;
|
||||||
|
m_bFillArray = false;
|
||||||
|
m_ArrayCntH = 10;//阵列行数
|
||||||
|
m_ArrayCntV = 10;//阵列行数
|
||||||
|
m_ArrayOffsetH = 1;//横向间距
|
||||||
|
m_ArrayOffsetV = 1;//纵向间距
|
||||||
|
|
||||||
|
m_ArrayCnt = 36;//圆形阵列的数量
|
||||||
|
m_Radius = 10;//阵列半径
|
||||||
|
m_StartAngle = 90;//阵列开始角度
|
||||||
|
m_GapAngle = 10;//阵列间隔角度(360 度角)
|
||||||
|
|
||||||
|
m_FillOffset = -0.1;
|
||||||
|
m_FillCnt = 1000;
|
||||||
|
}
|
||||||
|
public:
|
||||||
|
bool m_bRectArray;//是否为矩形阵列
|
||||||
|
bool m_bCircleArray;
|
||||||
|
bool m_bFillArray;
|
||||||
|
|
||||||
|
int m_ArrayCntH;//阵列行数
|
||||||
|
int m_ArrayCntV;//阵列列数
|
||||||
|
double m_ArrayOffsetH;//横向间距
|
||||||
|
double m_ArrayOffsetV;//纵向间距
|
||||||
|
|
||||||
|
int m_ArrayCnt;//圆形阵列的数量
|
||||||
|
double m_Radius;//阵列半径
|
||||||
|
double m_StartAngle;//阵列开始角度(360 度角)
|
||||||
|
double m_GapAngle;//阵列间隔角度(360 度角)
|
||||||
|
|
||||||
|
double m_FillOffset;
|
||||||
|
int m_FillCnt;
|
||||||
|
};
|
||||||
|
class CArrayMgr
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CArrayMgr(void);
|
||||||
|
~CArrayMgr(void);
|
||||||
|
void Creat(SArrayPar &par);
|
||||||
|
private:
|
||||||
|
void RectCreat(SArrayPar &ArrayPar);
|
||||||
|
void CircleCreat(SArrayPar &ArrayPar);
|
||||||
|
void FillCreat(SArrayPar &ArrayPar);
|
||||||
|
void CreatCmd();
|
||||||
|
private:
|
||||||
|
CObjContainer m_ObjContainer;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,285 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "AuthorityMgr.h"
|
||||||
|
#include "MsgBox.h"
|
||||||
|
#include "FileMgr.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
#include "PropertieMgr.h"
|
||||||
|
#include "Propertie.h"
|
||||||
|
|
||||||
|
#define LAIPU_NAME "laipu"
|
||||||
|
#define LAIPU_PASSWORD "laipu"
|
||||||
|
#define FILE_PATH _T("\\Parameter\\Authority\\Authority.par")
|
||||||
|
|
||||||
|
bool CompareUser(CAccount Account1,CAccount Account2)
|
||||||
|
{
|
||||||
|
return Account1.m_Authority>Account2.m_Authority;
|
||||||
|
}
|
||||||
|
CAuthorityMgr *gAuthorityMgr = new CAuthorityMgr;
|
||||||
|
CAuthorityMgr::CAuthorityMgr(void)
|
||||||
|
{
|
||||||
|
m_CurAuthority = _USER;//当前权限
|
||||||
|
m_AutoFactory = false;//打开软件自动升级到管理员权限
|
||||||
|
}
|
||||||
|
CAuthorityMgr::~CAuthorityMgr(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CMFCPropertyGridProperty *CAuthorityMgr::CreatGridProperty()
|
||||||
|
{
|
||||||
|
CString PropertyName;//属性名称
|
||||||
|
CString Description;//描述
|
||||||
|
CString Path = _T("AuthorityMgr");//存储路径
|
||||||
|
CString Name;
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
PropertyName = _T("程序权限");
|
||||||
|
CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName);
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
if(gAuthorityMgr->CheckAuthority(_FACTORY))
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_AutoFactory");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_AutoFactory);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("厂家权限");
|
||||||
|
Description = _T("打开软件时自动获得厂家权限,调试用");
|
||||||
|
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AutoFactory, Description);
|
||||||
|
pGroup->AddSubItem(p);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p, pPropertie);
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
return pGroup;
|
||||||
|
}
|
||||||
|
void CAuthorityMgr::Ini()
|
||||||
|
{
|
||||||
|
SaveOrLoad(false);//读取文件
|
||||||
|
if(m_AutoFactory)
|
||||||
|
m_CurAuthority = _FACTORY;
|
||||||
|
}
|
||||||
|
//检查当前权限
|
||||||
|
bool CAuthorityMgr::CheckAuthority(AUTHORITY_TYPE authority,bool bShowMsgbox)
|
||||||
|
{
|
||||||
|
if((int)m_CurAuthority >= (int)authority)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(bShowMsgbox)
|
||||||
|
{
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
CString str = "需要["+GetAccountName(authority) + "]权限!";
|
||||||
|
MsgBox.Show(str, true);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//是否登录
|
||||||
|
bool CAuthorityMgr::IsLogin()
|
||||||
|
{
|
||||||
|
return m_CurAuthority != _NO_LOGIN;
|
||||||
|
}
|
||||||
|
//锁定用户,权限变成未登录
|
||||||
|
void CAuthorityMgr::Lock()
|
||||||
|
{
|
||||||
|
SetAuthority(_NO_LOGIN);
|
||||||
|
m_CurUserName = "空";
|
||||||
|
}
|
||||||
|
//登录
|
||||||
|
bool CAuthorityMgr::Login(CString name,CString PassWord)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
AUTHORITY_TYPE authority = GetCurAuthority();
|
||||||
|
if(name == LAIPU_NAME && PassWord == LAIPU_PASSWORD)
|
||||||
|
{
|
||||||
|
ret = true;
|
||||||
|
authority = _FACTORY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vector<CAccount>::iterator iter = m_UserVec.begin();
|
||||||
|
vector<CAccount>::iterator iter_end = m_UserVec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).m_Name == name)
|
||||||
|
{
|
||||||
|
if((*iter).m_PassWord == PassWord)
|
||||||
|
{
|
||||||
|
ret = true;
|
||||||
|
authority = (*iter).m_Authority;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
MsgBox.Show("密码和账号不匹配");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(iter==iter_end)
|
||||||
|
{
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
MsgBox.Show("账号或密码错误!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ret)
|
||||||
|
{
|
||||||
|
SetAuthority(authority);
|
||||||
|
m_CurUserName = name;
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
CString str("登录成功---->");
|
||||||
|
str += ("[Type:") + GetCurAccountName() + "]";
|
||||||
|
str += ("[Name:") + m_CurUserName + "]";
|
||||||
|
MsgBox.Show(str);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
CString CAuthorityMgr::GetAccountName(AUTHORITY_TYPE authority)
|
||||||
|
{
|
||||||
|
if(authority==_FACTORY)
|
||||||
|
return ACCOUNT_FACTORY;
|
||||||
|
if(authority==_ADMIN)
|
||||||
|
return ACCOUNT_ADMIN;
|
||||||
|
if(authority==_USER)
|
||||||
|
return ACCOUNT_USER;
|
||||||
|
return ACCOUNT_NO_LOGIN;
|
||||||
|
}
|
||||||
|
//当前账户类型
|
||||||
|
CString CAuthorityMgr::GetCurAccountName()
|
||||||
|
{
|
||||||
|
return GetAccountName(GetCurAuthority());
|
||||||
|
}
|
||||||
|
//保存或者读取
|
||||||
|
void CAuthorityMgr::SaveOrLoad(bool bSave)
|
||||||
|
{
|
||||||
|
CFileMgr FileMgr;
|
||||||
|
char filepath[1024];
|
||||||
|
FileMgr.GetFullFilePath(filepath,FILE_PATH);//获取完整路径
|
||||||
|
|
||||||
|
if(bSave)
|
||||||
|
{
|
||||||
|
CFile file(filepath,CFile::modeReadWrite|CFile::modeCreate);
|
||||||
|
CArchive ar(&file,CArchive::store);
|
||||||
|
SaveOrLoadExt(ar);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CFile file;
|
||||||
|
if(file.Open(filepath,CFile::modeRead))
|
||||||
|
{
|
||||||
|
CArchive ar(&file,CArchive::load);
|
||||||
|
SaveOrLoadExt(ar);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gLogMgr->WriteDebugLog("权限文件读取失败", _LOG_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CAuthorityMgr::SaveOrLoadExt(CArchive &ar)
|
||||||
|
{
|
||||||
|
int size = 0;
|
||||||
|
if(ar.IsStoring())
|
||||||
|
{
|
||||||
|
size = m_UserVec.size();//area 的数量
|
||||||
|
ar<<size;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ar>>size;
|
||||||
|
for(int i=0;i<size;i++)
|
||||||
|
{
|
||||||
|
CAccount Area;
|
||||||
|
m_UserVec.push_back(Area);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i=0;i<size;i++)
|
||||||
|
{
|
||||||
|
m_UserVec[i].Serialize(ar);
|
||||||
|
}
|
||||||
|
if(!ar.IsStoring())
|
||||||
|
{
|
||||||
|
//重新排序
|
||||||
|
SortUserVec();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CAuthorityMgr::AddAccount(CAccount Account)
|
||||||
|
{
|
||||||
|
//检查是否有重复的用户名
|
||||||
|
vector<CAccount>::iterator iter = m_UserVec.begin();
|
||||||
|
vector<CAccount>::iterator iter_end = m_UserVec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).m_Name == Account.m_Name)
|
||||||
|
{
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
CString str(_T("用户:"));
|
||||||
|
str += Account.m_Name + "已存在!";
|
||||||
|
MsgBox.Show(str);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_UserVec.push_back(Account);
|
||||||
|
//重新排序
|
||||||
|
SortUserVec();
|
||||||
|
SaveOrLoad(true);
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
MsgBox.Show("创建成功!");
|
||||||
|
}
|
||||||
|
//删除指定的用户
|
||||||
|
void CAuthorityMgr::DelUser(int idx)
|
||||||
|
{
|
||||||
|
if(gAuthorityMgr->CheckAuthority(_ADMIN,true)==false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
vector<CAccount>::iterator iter = m_UserVec.begin();
|
||||||
|
vector<CAccount>::iterator iter_end = m_UserVec.end();
|
||||||
|
for(int i=0;iter!=iter_end;iter++,i++)
|
||||||
|
{
|
||||||
|
if(i==idx)
|
||||||
|
{
|
||||||
|
CMsgBox MsgBox;
|
||||||
|
|
||||||
|
if((*iter).m_Authority>m_CurAuthority)
|
||||||
|
{
|
||||||
|
MsgBox.Show(_T("不能删除更高级的用户!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CString str(_T("删除"));
|
||||||
|
str += (*iter).m_Name + "?";
|
||||||
|
if(MsgBox.ConfirmOkCancel(str))
|
||||||
|
{
|
||||||
|
m_UserVec.erase(iter);
|
||||||
|
SortUserVec();
|
||||||
|
SaveOrLoad(true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CAuthorityMgr::InsertToList(CListCtrl &List)
|
||||||
|
{
|
||||||
|
int size = m_UserVec.size();
|
||||||
|
for(int i=0;i<size;i++)
|
||||||
|
{
|
||||||
|
int idx = 0;
|
||||||
|
List.InsertItem(i," ");//插入一行
|
||||||
|
List.SetItemText(i,idx++,GetAccountName(m_UserVec[i].m_Authority));//权限类型
|
||||||
|
List.SetItemText(i,idx++,(m_UserVec[i].m_Name));//用户名
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//重新排序
|
||||||
|
void CAuthorityMgr::SortUserVec()
|
||||||
|
{
|
||||||
|
sort(m_UserVec.begin(),m_UserVec.end(),CompareUser);
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
#include "module.h"
|
||||||
|
|
||||||
|
#define ACCOUNT_NO_LOGIN "未登录"
|
||||||
|
#define ACCOUNT_USER "操作员"
|
||||||
|
#define ACCOUNT_ADMIN "管理员"
|
||||||
|
#define ACCOUNT_FACTORY "厂家"
|
||||||
|
|
||||||
|
enum AUTHORITY_TYPE
|
||||||
|
{
|
||||||
|
_NO_LOGIN = 0,//未登录
|
||||||
|
_USER,//操作员
|
||||||
|
_ADMIN,//管理员
|
||||||
|
_FACTORY,//厂家
|
||||||
|
};
|
||||||
|
|
||||||
|
//账号
|
||||||
|
class CAccount
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CAccount()
|
||||||
|
{
|
||||||
|
m_Authority = _NO_LOGIN;
|
||||||
|
}
|
||||||
|
void Serialize(CArchive& ar)
|
||||||
|
{
|
||||||
|
if(ar.IsStoring())
|
||||||
|
{
|
||||||
|
ar<<(int)m_Authority;
|
||||||
|
ar<<m_Name;
|
||||||
|
ar<<m_PassWord;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int tmp;
|
||||||
|
ar>>tmp;
|
||||||
|
m_Authority = (AUTHORITY_TYPE)tmp;
|
||||||
|
ar>>m_Name;
|
||||||
|
ar>>m_PassWord;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public:
|
||||||
|
AUTHORITY_TYPE m_Authority;//权限
|
||||||
|
CString m_Name;//用户名
|
||||||
|
CString m_PassWord;//密码
|
||||||
|
};
|
||||||
|
//权限管理
|
||||||
|
class CAuthorityMgr:public CModule
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CAuthorityMgr(void);
|
||||||
|
~CAuthorityMgr(void);
|
||||||
|
virtual void Ini();
|
||||||
|
virtual MODULE GetModuleType(){return _AUTHORITY_PROP;};
|
||||||
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
||||||
|
|
||||||
|
void SetAuthority(AUTHORITY_TYPE authority){m_CurAuthority = authority;};//设置当前权限
|
||||||
|
bool CheckAuthority(AUTHORITY_TYPE authority,bool bShowMsgbox = false);//检查当前权限
|
||||||
|
AUTHORITY_TYPE GetCurAuthority(){return m_CurAuthority;};
|
||||||
|
void AddAccount(CAccount Account);
|
||||||
|
bool Login(CString name,CString PassWord);
|
||||||
|
CString GetAccountName(AUTHORITY_TYPE authority);
|
||||||
|
void SaveOrLoad(bool bSave);
|
||||||
|
void InsertToList(CListCtrl &List);
|
||||||
|
void DelUser(int idx);
|
||||||
|
CString GetCurAccountName();
|
||||||
|
CString GetCurUserName(){return m_CurUserName;};
|
||||||
|
bool IsAutoFactory(){return m_AutoFactory;};
|
||||||
|
void Lock();
|
||||||
|
bool IsLogin();
|
||||||
|
private:
|
||||||
|
void SaveOrLoadExt(CArchive &ar);
|
||||||
|
void SortUserVec();
|
||||||
|
private:
|
||||||
|
AUTHORITY_TYPE m_CurAuthority;//当前权限
|
||||||
|
CString m_CurUserName;//当前用户名
|
||||||
|
vector<CAccount> m_UserVec;//所有的用户
|
||||||
|
bool m_AutoFactory;//打开软件自动升级到管理员权限
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CAuthorityMgr *gAuthorityMgr;
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "BarCodeModule.h"
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
//管理条码或者二位码的一个小块
|
||||||
|
class CBarCodeModule{
|
||||||
|
public:
|
||||||
|
CBarCodeModule(bool bBlack)
|
||||||
|
{
|
||||||
|
m_bBlack = bBlack;//是否是黑色的
|
||||||
|
}
|
||||||
|
bool IsBlack(){return m_bBlack;};
|
||||||
|
private:
|
||||||
|
bool m_bBlack;//是否是黑色的
|
||||||
|
};
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
#pragma once
|
||||||
|
//位运算函数
|
||||||
|
|
||||||
|
//PortVal 的PortIdx 位设置为1
|
||||||
|
inline long SetBitOn(long PortVal,int PortIdx)
|
||||||
|
{
|
||||||
|
PortVal= PortVal |(1<<PortIdx);
|
||||||
|
return PortVal;
|
||||||
|
}
|
||||||
|
//PortVal 的PortIdx 位设置为0
|
||||||
|
inline BYTE SetBitOff(BYTE PortVal,int PortIdx)
|
||||||
|
{
|
||||||
|
PortVal = (PortVal)&(~(1<<PortIdx));
|
||||||
|
return PortVal;
|
||||||
|
}
|
||||||
|
//判断某位是否为1,PortIdx 从右到左
|
||||||
|
inline BOOL IsBitOn(BYTE PortVal,int PortIdx)
|
||||||
|
{
|
||||||
|
if((PortVal>>PortIdx)&1)
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline long SetBitByBool(BYTE PortVal,int PortIdx,bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
return SetBitOn(PortVal,PortIdx);
|
||||||
|
return SetBitOff(PortVal,PortIdx);
|
||||||
|
}
|
||||||
@ -0,0 +1,558 @@
|
|||||||
|
// 2003.09.10
|
||||||
|
// 2003.12.08 V1.2
|
||||||
|
// 2004.05.08 V1.3
|
||||||
|
// 2004.12.10 V1.5
|
||||||
|
//****************************************
|
||||||
|
//** Copyright (C) W.ch 1999-2004 **
|
||||||
|
//** Web: http://www.winchiphead.com **
|
||||||
|
//****************************************
|
||||||
|
//** DLL for PCI interface chip CH365 **
|
||||||
|
//** C, VC5.0 **
|
||||||
|
//****************************************
|
||||||
|
//
|
||||||
|
// PCI总线接口芯片CH365的应用层接口库 V1.5
|
||||||
|
// 南京沁恒电子有限公司 作者: W.ch 2004.12
|
||||||
|
// CH365-DLL V1.5 , Support: IO/MEM/INT
|
||||||
|
// 运行环境: Windows 98/ME, Windows 2000/XP
|
||||||
|
|
||||||
|
#ifndef _CH365_DLL_H
|
||||||
|
#define _CH365_DLL_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define mOFFSET( s, m ) ( (ULONG) & ( ( ( s * ) 0 ) -> m ) ) // 定义获取结构成员相对偏移地址的宏
|
||||||
|
|
||||||
|
#ifndef max
|
||||||
|
#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) // 较大值
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef min
|
||||||
|
#define min( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) // 较小值
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ExAllocatePool
|
||||||
|
#undef ExAllocatePool // 删除带TAG的内存分配
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NTSTATUS
|
||||||
|
typedef LONG NTSTATUS; // 返回状态
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _PCI_CONFIG { // 定义PCI配置空间数据结构
|
||||||
|
USHORT mPcVendorId; // 00H 供应商标识
|
||||||
|
USHORT mPcDeviceId; // 02H 设备标识
|
||||||
|
USHORT mPcCommandReg; // 04H 命令寄存器
|
||||||
|
USHORT mPcStatusReg; // 06H 状态寄存器
|
||||||
|
UCHAR mPcRevisionId; // 08H 修改标识
|
||||||
|
UCHAR mPcProgramIf; // 09H 寄存器级编程接口
|
||||||
|
UCHAR mPcSubClass; // 0AH 子类代码
|
||||||
|
UCHAR mPcBaseClass; // 0BH 基本分类代码
|
||||||
|
UCHAR mPcCacheLine; // 0CH 缓存行长度
|
||||||
|
UCHAR mPcLatenTimer; // 0DH 延迟计数器
|
||||||
|
UCHAR mPcHeaderType; // 0EH 头标类型
|
||||||
|
UCHAR mPcBistReg; // 0FH 内含自测试寄存器
|
||||||
|
ULONG mPcBaseAddr0; // 10H 基址寄存器0
|
||||||
|
ULONG mPcBaseAddr1; // 14H 基址寄存器1
|
||||||
|
ULONG mPcBaseAddr2; // 18H 基址寄存器2
|
||||||
|
ULONG mPcBaseAddr3; // 1CH 基址寄存器3
|
||||||
|
ULONG mPcBaseAddr4; // 20H 基址寄存器4
|
||||||
|
ULONG mPcBaseAddr5; // 24H 基址寄存器5
|
||||||
|
ULONG mPcCardCis; // 28H
|
||||||
|
USHORT mPcSubSysVen; // 2CH 子系统供应商标识
|
||||||
|
USHORT mPcSubSysDev; // 2EH 子系统设备标识
|
||||||
|
ULONG mPcExpansRom; // 30H 扩展ROM基址寄存器
|
||||||
|
UCHAR mPcCapPtr; // 34H
|
||||||
|
UCHAR mPcReserved1[3]; // 35H
|
||||||
|
ULONG mPcReserved2; // 38H
|
||||||
|
UCHAR mPcInterLine; // 3CH 中断线寄存器
|
||||||
|
UCHAR mPcInterPin; // 3DH 中断引脚寄存器
|
||||||
|
UCHAR mPcMinGrant; // 3EH
|
||||||
|
UCHAR mPcMaxLatency; // 3FH
|
||||||
|
} mPCI_CONFIG, *mPPCI_CONFIG;
|
||||||
|
|
||||||
|
typedef struct _PCI_EXP_ROM { // PCI扩展ROM的数据结构
|
||||||
|
UCHAR mPerRomSig[4]; // 00H PCI扩展ROM签名字符串'PCIR'
|
||||||
|
USHORT mPerVendorId; // 04H 供应商标识
|
||||||
|
USHORT mPerDeviceId; // 06H 设备标识
|
||||||
|
USHORT mPerVpdPtr; // 08H 重要产品数据指针
|
||||||
|
USHORT mPerStrucLen; // 0AH PCI扩展ROM数据结构的长度
|
||||||
|
UCHAR mPerRevision; // 0CH PCI扩展ROM数据结构的修改版本
|
||||||
|
UCHAR mPerProgramIf; // 0DH 寄存器级编程接口
|
||||||
|
UCHAR mPerSubClass; // 0EH 子类代码
|
||||||
|
UCHAR mPerBaseClass; // 0FH 基本分类代码
|
||||||
|
USHORT mPerImageLen; // 10H 映像长度
|
||||||
|
USHORT mPerImageRev; // 12H 映像中代码/数据的修改版本
|
||||||
|
UCHAR mPerCodeType; // 14H 代码类型
|
||||||
|
UCHAR mPerIndicator; // 15H 映像指示标志
|
||||||
|
USHORT mPerReserved; // 16H
|
||||||
|
} mPCI_EXP_ROM, *mPPCI_EXP_ROM;
|
||||||
|
|
||||||
|
typedef struct _CH365_CFG_REG { // CH365芯片的配置寄存器
|
||||||
|
mPCI_CONFIG mCh365CfgPci; // 00H-3FH,共64字节为标准PCI配置空间
|
||||||
|
UCHAR mCh365CfgCtrl; // 40H 芯片控制寄存器,高5位只读
|
||||||
|
UCHAR mCh365CfgDin; // 41H 8位总线输入端口,只读
|
||||||
|
UCHAR mCh365CfgState; // 42H 芯片状态寄存器,只读
|
||||||
|
UCHAR mCh365CfgResv; // 43H
|
||||||
|
} mCH365_CFG_REG, *mPCH365_CFG_REG;
|
||||||
|
|
||||||
|
typedef struct _CH365_IO_REG { // CH365芯片的I/O空间
|
||||||
|
UCHAR mCh365IoPort[0xf0]; // 00H-EFH,共240字节为标准的I/O端口
|
||||||
|
union { // 以字或者以字节为单位进行存取
|
||||||
|
USHORT mCh365MemAddr; // F0H 存储器接口: A15-A0地址设定寄存器
|
||||||
|
struct { // 以字节为单位进行存取
|
||||||
|
UCHAR mCh365MemAddrL; // F0H 存储器接口: A7-A0地址设定寄存器
|
||||||
|
UCHAR mCh365MemAddrH; // F1H 存储器接口: A15-A8地址设定寄存器
|
||||||
|
};
|
||||||
|
};
|
||||||
|
UCHAR mCh365IoResv2; // F2H
|
||||||
|
UCHAR mCh365MemData; // F3H 存储器接口: 存储器数据存取寄存器
|
||||||
|
UCHAR mCh365I2cData; // F4H I2C串行接口: I2C数据存取寄存器
|
||||||
|
UCHAR mCh365I2cCtrl; // F5H I2C串行接口: I2C控制和状态寄存器
|
||||||
|
UCHAR mCh365I2cAddr; // F6H I2C串行接口: I2C地址设定寄存器
|
||||||
|
UCHAR mCh365I2cDev; // F7H I2C串行接口: I2C设备地址和命令寄存器
|
||||||
|
UCHAR mCh365IoCtrl; // F8H 芯片控制寄存器,高5位只读
|
||||||
|
UCHAR mCh365IoBuf; // F9H 本地数据输入缓存寄存器
|
||||||
|
UCHAR mCh365Speed; // FAH 芯片速度控制寄存器
|
||||||
|
UCHAR mCh365IoResv3; // FBH
|
||||||
|
UCHAR mCh365IoTime; // FCH 硬件循环计数寄存器
|
||||||
|
UCHAR mCh365IoResv4[3]; // FDH
|
||||||
|
} mCH365_IO_REG, *mPCH365_IO_REG;
|
||||||
|
|
||||||
|
typedef struct _CH365_MEM_REG { // CH365芯片的存储器空间
|
||||||
|
UCHAR mCh365MemPort[0x8000]; // 0000H-7FFFH,共32768字节为标准的存储器单元
|
||||||
|
} mCH365_MEM_REG, *mPCH365_MEM_REG;
|
||||||
|
|
||||||
|
typedef struct _WIN32_COMMAND { // 定义WIN32命令接口结构
|
||||||
|
union {
|
||||||
|
ULONG mFunction; // 输入时指定功能代码
|
||||||
|
NTSTATUS mStatus; // 输出时返回操作状态
|
||||||
|
};
|
||||||
|
PVOID mAddress; // 起始地址,返回地址
|
||||||
|
ULONG mLength; // 存取长度,返回后续数据的长度
|
||||||
|
UCHAR mBuffer[4]; // 数据缓冲区,长度为0至32KB
|
||||||
|
} mWIN32_COMMAND, *mPWIN32_COMMAND;
|
||||||
|
|
||||||
|
// WIN32应用层接口命令
|
||||||
|
#define IOCTL_CH365_COMMAND ( FILE_DEVICE_UNKNOWN << 16 | FILE_ANY_ACCESS << 14 | 0x0f36 << 2 | METHOD_BUFFERED ) // 专用接口
|
||||||
|
|
||||||
|
#define mWIN32_COMMAND_HEAD mOFFSET( mWIN32_COMMAND, mBuffer ) // WIN32命令接口的头长度
|
||||||
|
|
||||||
|
#define mCH365_MAX_NUMBER 16 // 最多同时连接的CH365数
|
||||||
|
|
||||||
|
#define mMAX_BUFFER_LENGTH max( sizeof( mCH365_IO_REG ), sizeof( mCH365_MEM_REG ) ) // 数据缓冲区最大长度
|
||||||
|
|
||||||
|
#define mMAX_COMMAND_LENGTH ( mWIN32_COMMAND_HEAD + mMAX_BUFFER_LENGTH ) // 最大数据长度加上命令结构头的长度
|
||||||
|
|
||||||
|
#define mCH365_MEM_BASE_AUTO ( (PVOID)0xffffffff ) // 自动设定CH365的存储器基址
|
||||||
|
|
||||||
|
#define mCH365_INT_TOOL_LINE_AUTO 0xffffffff // 自动检测CH365的中断号
|
||||||
|
|
||||||
|
|
||||||
|
// 寄存器的位定义
|
||||||
|
#define mBitAddr15Out 0x01 // 设定A15输出值,1*:high,0:low
|
||||||
|
#define mBitSysExtOut 0x02 // 设定SYS_EX输出值,1:high,0*:low
|
||||||
|
#define mBitIntAction 0x04 // 设定中断激活状态,1:action,0*:inaction
|
||||||
|
#define mBitPciIdDef 0x01 // 只读,PCI设备标识的当前选择,1*:default,0:external
|
||||||
|
#define mBitPortHit 0x04 // 只读,本地硬件定址功能的启用状态,1:启用,0*:禁用
|
||||||
|
#define mBitInterRom 0x10 // 只读,内部Mini-ROM功能的启用状态,1:启用,0*:禁用
|
||||||
|
#define mBitSysExtOe 0x40 // 只读,SYS_EX输出三态控制/输出使能,1*:启用,0:禁用
|
||||||
|
#define mBitIntEnable 0x80 // 只读,中断功能的启用状态,1:启用,0*:禁用
|
||||||
|
#define mBitI2cStatus 0x01 // I2C接口的操作控制和状态,1:开始/正在操作,0*:空闲/操作完成
|
||||||
|
#define mBitI2cSclOut 0x80 // 选择I2C接口的SCL输出,1:SYS_EX,0*:A15
|
||||||
|
#define mBitSpeedAct 0x07 // 速度控制,激活状态的脉冲宽度,实际宽度为该值乘以30nS
|
||||||
|
#define mBitSpeedInact 0x10 // 速度控制,非激活状态的空闲宽度,1:前45nS/后15nS,0:前15nS/后15nS
|
||||||
|
#define mBitSpeedPreft 0x80 // 速度控制,预取状态控制位,1:预取位有效,0:预取位无效
|
||||||
|
|
||||||
|
|
||||||
|
// 应用层接口的功能代码
|
||||||
|
#define mFuncNoOperation 0x00000000 // 无操作
|
||||||
|
#define mFuncGetVersion 0x00000001 // 获取驱动程序版本号
|
||||||
|
#define mFuncGetIoBaseAddr 0x00000004 // 读取I/O端口基址
|
||||||
|
#define mFuncSetIoBaseAddr 0x00000005 // 设置I/O端口基址
|
||||||
|
#define mFuncGetMemBaseAddr 0x00000006 // 读取存储器基址
|
||||||
|
#define mFuncSetMemBaseAddr 0x00000007 // 设置存储器基址,自动设定存储器基址
|
||||||
|
#define mFuncGetInterLine 0x00000008 // 读取中断号
|
||||||
|
#define mFuncSetInterLine 0x00000009 // 设置中断号,自动检测中断号
|
||||||
|
#define mFuncWaitInterrupt 0x0000000a // 等待中断,直到CH365产生中断
|
||||||
|
#define mFuncAbortWaitInter 0x0000000b // 放弃等待中断,终止等待
|
||||||
|
#define mFuncSetExclusive 0x0000000c // 设置独占使用
|
||||||
|
#define mFuncReadIoByte 0x00000010 // 读取输入输出端口,在同一个端口地址以字节为单位连续读取
|
||||||
|
#define mFuncReadIoWord 0x00000011 // 读取输入输出端口,在同一个端口地址以字为单位连续读取
|
||||||
|
#define mFuncReadIoDword 0x00000012 // 读取输入输出端口,在同一个端口地址以双字为单位连续读取
|
||||||
|
#define mFuncReadIoBlock 0x00000013 // 读取输入输出端口,每读取一个字节,端口地址加一
|
||||||
|
#define mFuncWriteIoByte 0x00000014 // 写入输入输出端口,在同一个端口地址以字节为单位连续写入
|
||||||
|
#define mFuncWriteIoWord 0x00000015 // 写入输入输出端口,在同一个端口地址以字为单位连续写入
|
||||||
|
#define mFuncWriteIoDword 0x00000016 // 写入输入输出端口,在同一个端口地址以双字为单位连续写入
|
||||||
|
#define mFuncWriteIoBlock 0x00000017 // 写入输入输出端口,每写入一个字节,端口地址加一
|
||||||
|
#define mFuncReadMemByte 0x00000018 // 读取存储器/寄存器
|
||||||
|
#define mFuncReadMemWord 0x00000019 // 读取存储器/寄存器
|
||||||
|
#define mFuncReadMemDword 0x0000001a // 读取存储器/寄存器
|
||||||
|
#define mFuncWriteMemByte 0x0000001c // 写入存储器/寄存器
|
||||||
|
#define mFuncWriteMemWord 0x0000001d // 写入存储器/寄存器
|
||||||
|
#define mFuncWriteMemDword 0x0000001e // 写入存储器/寄存器
|
||||||
|
#define mFuncReadConfig 0x00000020 // 读取PCI配置空间
|
||||||
|
#define mFuncWriteConfig 0x00000021 // 写入PCI配置空间
|
||||||
|
#define mFuncReadBuffer1 0x00000024 // 读取中断命令缓冲区1
|
||||||
|
#define mFuncWriteBuffer1 0x00000025 // 写入中断命令缓冲区1
|
||||||
|
#define mFuncReadBuffer2 0x00000026 // 读取中断命令缓冲区2
|
||||||
|
#define mFuncWriteBuffer2 0x00000027 // 写入中断命令缓冲区2
|
||||||
|
|
||||||
|
|
||||||
|
typedef VOID ( CALLBACK * mPCH365_INT_ROUTINE ) ( VOID ); // 中断服务程序
|
||||||
|
|
||||||
|
|
||||||
|
HANDLE WINAPI CH365OpenDevice( // 打开CH365设备,返回句柄,出错则无效
|
||||||
|
BOOL iEnableMemory, // 是否需要支持存储器
|
||||||
|
BOOL iEnableInterrupt ); // 是否需要支持中断
|
||||||
|
|
||||||
|
|
||||||
|
VOID WINAPI CH365CloseDevice( ); // 关闭CH365设备
|
||||||
|
|
||||||
|
|
||||||
|
ULONG WINAPI CH365GetVersion( ); // 获得DLL版本号,返回版本号
|
||||||
|
|
||||||
|
|
||||||
|
ULONG WINAPI CH365DriverCommand( // 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
|
||||||
|
mPWIN32_COMMAND ioCommand ); // 命令结构的指针
|
||||||
|
// 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
|
||||||
|
// 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
|
||||||
|
// 命令结构在调用前,分别提供:命令功能代码,起始地址(可选),存取数据的长度(可选),
|
||||||
|
// 命令结构在调用后,分别返回:操作状态代码,返回的基址(可选),后续数据的长度(可选),
|
||||||
|
// 操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
|
||||||
|
// 返回的基址只适用于下列命令:获取I/O基址,获取存储器基址,获取中断号,对于其它命令则保持输入时的起始地址
|
||||||
|
// 后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
|
||||||
|
|
||||||
|
|
||||||
|
ULONG WINAPI CH365GetDrvVersion( ); // 获得驱动程序版本号,返回版本号,出错则返回0
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365GetIoBaseAddr( // 获取I/O端口的基址
|
||||||
|
mPCH365_IO_REG *oIoBaseAddr ); // 保存I/O端口基址的单元地址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365SetIoBaseAddr( // 设定I/O端口的基址
|
||||||
|
mPCH365_IO_REG iIoBaseAddr ); // 指定I/O端口基址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365GetMemBaseAddr( // 获取存储器的基址
|
||||||
|
mPCH365_MEM_REG *oMemBaseAddr ); // 保存存储器基址的单元地址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365SetMemBaseAddr( // 设定存储器的基址
|
||||||
|
mPCH365_MEM_REG iMemBaseAddr ); // 指定存储器基址,为0则关闭存储器,为-1则自动设定
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365GetIntLine( // 获取中断号
|
||||||
|
PULONG oIntLine ); // 保存中断号的单元地址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365SetIntLine( // 设定中断号
|
||||||
|
ULONG iIntLine ); // 指定中断号,为0则关闭中断,为-1则自动检测并设定
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WaitInterrupt( ); // 等待中断事件
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365AbortWaitInt( ); // 放弃等待中断
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365SetIntRoutine( // 设定中断服务程序
|
||||||
|
mPCH365_INT_ROUTINE iIntRoutine ); // 指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadIntCommand( // 读取中断命令缓冲区
|
||||||
|
mPWIN32_COMMAND oCommand, // 指向一个足够大的缓冲区,用于保存读取的命令结构
|
||||||
|
ULONG iCmdIndex ); // 中断命令序号,为1或者2
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteIntCommand( // 写入中断命令缓冲区
|
||||||
|
mPWIN32_COMMAND iCommand, // 指向作为中断命令的命令结构
|
||||||
|
ULONG iCmdIndex ); // 中断命令序号,为1或者2
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadIoByte( // 从I/O端口读取一个字节
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadIoWord( // 从I/O端口读取一个字
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
PUSHORT oWord ); // 指向一个字单元,用于保存读取的字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadIoDword( // 从I/O端口读取一个双字
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteIoByte( // 向I/O端口写入一个字节
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteIoWord( // 向I/O端口写入一个字
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
USHORT iWord ); // 待写入的字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteIoDword( // 向I/O端口写入一个双字
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
ULONG iDword ); // 待写入的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadMemByte( // 从存储器读取一个字节
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadMemDword( // 从存储器读取一个双字
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteMemByte( // 向存储器写入一个字节
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteMemDword( // 向存储器写入一个双字
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
ULONG iDword ); // 待写入的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadConfig( // 从配置空间读取一个字节数据
|
||||||
|
PVOID iOffset, // 指定偏移地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteConfig( // 向配置空间写入一个字节数据
|
||||||
|
PVOID iOffset, // 指定偏移地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365SetA15_A8( // 设置高地址,即设置A15-A8的输出
|
||||||
|
UCHAR iA15_A8 ); // 位7-位0对应A15-A8的输出,1为高电平,0为低电平
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365ReadI2C( // 从I2C接口读取一个字节数据
|
||||||
|
UCHAR iDevice, // 低7位指定I2C设备地址
|
||||||
|
UCHAR iAddr, // 指定数据单元的地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365WriteI2C( // 向I2C接口写入一个字节数据
|
||||||
|
UCHAR iDevice, // 低7位指定I2C设备地址
|
||||||
|
UCHAR iAddr, // 指定数据单元的地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
HANDLE WINAPI CH365mOpenDevice( // 打开CH365设备,返回句柄,出错则无效
|
||||||
|
ULONG iIndex, // 指定CH365设备序号,0对应第一个设备
|
||||||
|
BOOL iEnableMemory, // 是否需要支持存储器
|
||||||
|
BOOL iEnableInterrupt ); // 是否需要支持中断
|
||||||
|
|
||||||
|
|
||||||
|
VOID WINAPI CH365mCloseDevice( // 关闭CH365设备
|
||||||
|
ULONG iIndex ); // 指定CH365设备序号
|
||||||
|
|
||||||
|
|
||||||
|
ULONG WINAPI CH365mDriverCommand( // 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPWIN32_COMMAND ioCommand ); // 命令结构的指针
|
||||||
|
// 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
|
||||||
|
// 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
|
||||||
|
// 命令结构在调用前,分别提供:命令功能代码,起始地址(可选),存取数据的长度(可选),
|
||||||
|
// 命令结构在调用后,分别返回:操作状态代码,返回的基址(可选),后续数据的长度(可选),
|
||||||
|
// 操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
|
||||||
|
// 返回的基址只适用于下列命令:获取I/O基址,获取存储器基址,获取中断号,对于其它命令则保持输入时的起始地址
|
||||||
|
// 后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mGetIoBaseAddr( // 获取I/O端口的基址
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPCH365_IO_REG *oIoBaseAddr ); // 保存I/O端口基址的单元地址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mSetIoBaseAddr( // 设定I/O端口的基址
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPCH365_IO_REG iIoBaseAddr ); // 指定I/O端口基址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mGetMemBaseAddr( // 获取存储器的基址
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPCH365_MEM_REG *oMemBaseAddr ); // 保存存储器基址的单元地址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mSetMemBaseAddr( // 设定存储器的基址
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPCH365_MEM_REG iMemBaseAddr ); // 指定存储器基址,为0则关闭存储器,为-1则自动设定
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mGetIntLine( // 获取中断号
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PULONG oIntLine ); // 保存中断号的单元地址
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mSetIntLine( // 设定中断号
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
ULONG iIntLine ); // 指定中断号,为0则关闭中断,为-1则自动检测并设定
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWaitInterrupt( // 等待中断事件
|
||||||
|
ULONG iIndex ); // 指定CH365设备序号
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mAbortWaitInt( // 放弃等待中断
|
||||||
|
ULONG iIndex ); // 指定CH365设备序号
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mSetIntRoutine( // 设定中断服务程序
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPCH365_INT_ROUTINE iIntRoutine ); // 指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadIntCommand( // 读取中断命令缓冲区
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPWIN32_COMMAND oCommand, // 指向一个足够大的缓冲区,用于保存读取的命令结构
|
||||||
|
ULONG iCmdIndex ); // 中断命令序号,为1或者2
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteIntCommand( // 写入中断命令缓冲区
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
mPWIN32_COMMAND iCommand, // 指向作为中断命令的命令结构
|
||||||
|
ULONG iCmdIndex ); // 中断命令序号,为1或者2
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadIoByte( // 从I/O端口读取一个字节
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadIoWord( // 从I/O端口读取一个字
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
PUSHORT oWord ); // 指向一个字单元,用于保存读取的字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadIoDword( // 从I/O端口读取一个双字
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteIoByte( // 向I/O端口写入一个字节
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteIoWord( // 向I/O端口写入一个字
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
USHORT iWord ); // 待写入的字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteIoDword( // 向I/O端口写入一个双字
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定I/O端口的地址
|
||||||
|
ULONG iDword ); // 待写入的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadMemByte( // 从存储器读取一个字节
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadMemDword( // 从存储器读取一个双字
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteMemByte( // 向存储器写入一个字节
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteMemDword( // 向存储器写入一个双字
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iAddr, // 指定存储器的地址,虚拟地址
|
||||||
|
ULONG iDword ); // 待写入的双字数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadConfig( // 从配置空间读取一个字节数据
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iOffset, // 指定偏移地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteConfig( // 向配置空间写入一个字节数据
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
PVOID iOffset, // 指定偏移地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mSetA15_A8( // 设置高地址,即设置A15-A8的输出
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
UCHAR iA15_A8 ); // 位7-位0对应A15-A8的输出,1为高电平,0为低电平
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mReadI2C( // 从I2C接口读取一个字节数据
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
UCHAR iDevice, // 低7位指定I2C设备地址
|
||||||
|
UCHAR iAddr, // 指定数据单元的地址
|
||||||
|
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mWriteI2C( // 向I2C接口写入一个字节数据
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
UCHAR iDevice, // 低7位指定I2C设备地址
|
||||||
|
UCHAR iAddr, // 指定数据单元的地址
|
||||||
|
UCHAR iByte ); // 待写入的字节数据
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365DelayUS( // 延时指定微秒
|
||||||
|
ULONG iDelay ); // 指定要延时的微秒数,如果延时小于10则误差较大
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mAccessBlock( // 读取或者写入数据块
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
ULONG iAccessMode, // 参考下面的说明
|
||||||
|
PVOID iAddr, // 指定I/O端口或者存储器的地址
|
||||||
|
PVOID ioBuffer, // 指向输入或者输出的缓冲区
|
||||||
|
ULONG iLength ); // 数据块长度,也就是读取或者写入的字节数,长度不超过32KB
|
||||||
|
// iAccessMode 定义如下
|
||||||
|
// #define mFuncReadIoByte 0x00000010 // 读取输入输出端口,在同一个端口地址以字节为单位连续读取,最大长度32KB
|
||||||
|
// #define mFuncReadIoWord 0x00000011 // 读取输入输出端口,在同一个端口地址以字为单位连续读取,最大长度32KB
|
||||||
|
// #define mFuncReadIoDword 0x00000012 // 读取输入输出端口,在同一个端口地址以双字为单位连续读取,最大长度32KB
|
||||||
|
// #define mFuncReadIoBlock 0x00000013 // 读取输入输出端口,每读取一个字节,端口地址加一,最大长度240B(从偏移地址00H读到EFH)
|
||||||
|
// #define mFuncWriteIoByte 0x00000014 // 写入输入输出端口,在同一个端口地址以字节为单位连续写入,最大长度32KB
|
||||||
|
// #define mFuncWriteIoWord 0x00000015 // 写入输入输出端口,在同一个端口地址以字为单位连续写入,最大长度32KB
|
||||||
|
// #define mFuncWriteIoDword 0x00000016 // 写入输入输出端口,在同一个端口地址以双字为单位连续写入,最大长度32KB
|
||||||
|
// #define mFuncWriteIoBlock 0x00000017 // 写入输入输出端口,每写入一个字节,端口地址加一,最大长度240B(从偏移地址00H写到EFH)
|
||||||
|
// #define mFuncReadMemByte 0x00000018 // 读取存储器/寄存器,以字节为单位连续读,每读取一个字节,地址加一,最大长度32KB(从偏移地址0000H读到7FFFH)
|
||||||
|
// #define mFuncReadMemWord 0x00000019 // 读取存储器/寄存器,以字为单位连续读,每读取一个字,地址加二,最大长度32KB(从偏移地址0000H读到7FFFH)
|
||||||
|
// #define mFuncReadMemDword 0x0000001a // 读取存储器/寄存器,以双字为单位连续读,每读取一个字节,地址加四,最大长度32KB(从偏移地址0000H读到7FFFH)
|
||||||
|
// #define mFuncWriteMemByte 0x0000001c // 写入存储器/寄存器,以字节为单位连续写,每读取一个字节,地址加一,最大长度32KB(从偏移地址0000H写到7FFFH)
|
||||||
|
// #define mFuncWriteMemWord 0x0000001d // 写入存储器/寄存器,以字为单位连续写,每读取一个字,地址加二,最大长度32KB(从偏移地址0000H写到7FFFH)
|
||||||
|
// #define mFuncWriteMemDword 0x0000001e // 写入存储器/寄存器,以双字为单位连续写,每读取一个双字,地址加四,最大长度32KB(从偏移地址0000H写到7FFFH)
|
||||||
|
// 其它方式不支持,上述定义在文件CH365DLL.H中
|
||||||
|
|
||||||
|
|
||||||
|
BOOL WINAPI CH365mSetExclusive( // 设置独占使用当前CH365设备
|
||||||
|
ULONG iIndex, // 指定CH365设备序号
|
||||||
|
ULONG iExclusive ); // 为0则设备可以共享使用,非0则独占使用
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _CH365_DLL_H
|
||||||
@ -0,0 +1,99 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
|
||||||
|
#define TRUE_STR _T("TRUE")
|
||||||
|
#define FALSE_STR _T("FALSE")
|
||||||
|
//和MFC CString 相关的一些函数
|
||||||
|
|
||||||
|
//去掉小数点后面不要的0
|
||||||
|
inline void DeleteZero(CString &s)
|
||||||
|
{
|
||||||
|
int nIndex;
|
||||||
|
nIndex=s.Find('.');
|
||||||
|
if (nIndex>=0)
|
||||||
|
{
|
||||||
|
s.TrimRight('0');
|
||||||
|
if (s.GetLength()==nIndex+1)
|
||||||
|
{
|
||||||
|
s=s.Left(nIndex);
|
||||||
|
if (s.IsEmpty())
|
||||||
|
s='0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//double 转换为CString
|
||||||
|
inline CString Db2CString(double n)
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
s.Format("%lf",n);
|
||||||
|
DeleteZero(s);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
//int 转换为CString
|
||||||
|
inline CString Int2CString(int n)
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
s.Format("%ld",n);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
//获取bool 类型的str
|
||||||
|
inline CString GetBoolValStr(bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
return TRUE_STR;
|
||||||
|
else
|
||||||
|
return FALSE_STR;
|
||||||
|
}
|
||||||
|
//在str 中查找SubStr ,找到返回true
|
||||||
|
inline bool FindSubStr(CString &str,CString &SubStr)
|
||||||
|
{
|
||||||
|
return (str.Find(SubStr) != -1);
|
||||||
|
}
|
||||||
|
//删除子串,并返回剩余右边的部分
|
||||||
|
inline CString DelSubStr(CString str,CString &SubStr)
|
||||||
|
{
|
||||||
|
int pos = str.Find(SubStr);
|
||||||
|
if(pos != -1)
|
||||||
|
{
|
||||||
|
str = str.Right(str.GetLength()-(pos+SubStr.GetLength()));
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
inline int CStringToInt(CString &str)
|
||||||
|
{
|
||||||
|
return _tstoi(LPCTSTR(str));
|
||||||
|
}
|
||||||
|
inline double CStringToDouble(CString &str)
|
||||||
|
{
|
||||||
|
return _tstof(LPCTSTR(str));
|
||||||
|
}
|
||||||
|
inline bool CStringToBool(CString &str)
|
||||||
|
{
|
||||||
|
if(str == TRUE_STR)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
inline CString Bool2Str(bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
return "TRUE";
|
||||||
|
else
|
||||||
|
return "FALSE";
|
||||||
|
}
|
||||||
|
inline bool Str2Bool(CString &str)
|
||||||
|
{
|
||||||
|
if(str == _T("TRUE"))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
inline CString Time2Str(int n)
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
if(n<10)
|
||||||
|
s.Format("0%ld",n);//左边补0
|
||||||
|
else
|
||||||
|
s.Format("%ld",n);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
@ -0,0 +1,422 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "Camera.h"
|
||||||
|
#include "Propertie.h"
|
||||||
|
#include "PropertieMgr.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
#include "AuthorityMgr.h"
|
||||||
|
#include "GlobalDrawMgr.h"
|
||||||
|
#include "DrawSimpleShape.h"
|
||||||
|
#include "PlatformXY.h"
|
||||||
|
#include "ExceptionMsg.h"
|
||||||
|
|
||||||
|
CCamera::CCamera(void)
|
||||||
|
{
|
||||||
|
m_OnePixDis = 1;//一个像素对应的实际尺寸(mm/pix)
|
||||||
|
m_bIni = false;//是否初始化成功
|
||||||
|
m_bRotatoPtByAngle = false;//是否根据相机的安装角度修正抓取结果
|
||||||
|
m_Angle = 0;
|
||||||
|
m_bUse = true;//是否使用
|
||||||
|
m_bLeftTop = true;//基准点是否为左上角(false 为左下角)
|
||||||
|
m_bPixCoord = true;//相机抓取的是否为像素坐标(基恩士返回的是mm 单位的值)
|
||||||
|
m_bCatch = true;//实际抓取
|
||||||
|
m_CatchFrontDelay = 100;//抓取前延时ms
|
||||||
|
m_CatchWaitDelay = 200;//抓取等待延时ms
|
||||||
|
}
|
||||||
|
CCamera::~CCamera(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CMFCPropertyGridProperty *CCamera::CreatGridProperty()
|
||||||
|
{
|
||||||
|
CString PropertyName;//属性名称
|
||||||
|
CString Description;//描述
|
||||||
|
CString Path = _T("Camera");;//存储路径
|
||||||
|
CString Name;
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
PropertyName = _T("共通设定");
|
||||||
|
CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName);
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
if(gAuthorityMgr->CheckAuthority(_FACTORY))
|
||||||
|
{
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_bUse");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_bUse);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL );
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("是否使用");
|
||||||
|
Description = _T("是否使用camera");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUse, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_bCatch");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_bCatch);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL );
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("是否抓取");
|
||||||
|
Description = _T("FALSE 的时候返回0,但是不报错");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bCatch, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_CatchFrontDelay");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_CatchFrontDelay);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_INT);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("抓取前延时");
|
||||||
|
Description = _T("相机抓取前的延时ms");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CatchFrontDelay, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_CatchWaitDelay");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_CatchWaitDelay);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_INT);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("抓取等待延时");
|
||||||
|
Description = _T("识别触发后等待数据传到ocx 的延时ms");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_CatchWaitDelay, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_bRotatoPtByAngle");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_bRotatoPtByAngle);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL );
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("角度修正");
|
||||||
|
Description = _T("是否根据相机的安装角度修正抓取结果");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bRotatoPtByAngle, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_Angle");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_Angle);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_DOUBLE);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("安装角度");
|
||||||
|
Description = _T("CCD X 方向相对于电机X 轴的角度");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Angle, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_bLeftTop");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_bLeftTop);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL );
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("左上角基准");
|
||||||
|
Description = _T("基准点是否为左上角(false 为左下角)");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bLeftTop, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_bPixCoord");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_bPixCoord);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_BOOL );
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("像素坐标");
|
||||||
|
Description = _T("相机抓取的是否为像素坐标");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bPixCoord, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_OnePixDis");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_OnePixDis);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_DOUBLE);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("像素尺寸");
|
||||||
|
Description = _T("一个像素对应的实际尺寸单位是(mm/像素)");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_OnePixDis, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_Coord_x");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_Coord.x);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_DOUBLE);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("视场基准坐标x");
|
||||||
|
Description = _T("CCD 的视场基准点相对于平台原点的坐标(单位:mm)");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Coord.x, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_Coord_y");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_Coord.y);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_DOUBLE);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("视场基准坐标y");
|
||||||
|
Description = _T("CCD 的视场基准点相对于平台原点的坐标(单位:mm)");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Coord.y, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_Size_w");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_Size.w);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_DOUBLE);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("视场宽度");
|
||||||
|
Description = _T("CCD 视场的实际宽度(单位:mm)");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Size.w, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_Size_h");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_Size.h);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_DOUBLE);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("视场高度");
|
||||||
|
Description = _T("CCD 视场的实际高度(单位:mm)");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_Size.h, Description);
|
||||||
|
pGroup->AddSubItem(p1);
|
||||||
|
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
return pGroup;
|
||||||
|
}
|
||||||
|
void CCamera::ExportPar(ofstream *pFile)
|
||||||
|
{
|
||||||
|
(*pFile)<<"[模块] [Camera]------------------------------------------------"<<endl;
|
||||||
|
(*pFile)<<"[CCD 坐标x][m_Coord.x] = "<<m_Coord.x<<endl;
|
||||||
|
(*pFile)<<"[CCD 坐标y][m_Coord.y] = "<<m_Coord.y<<endl;
|
||||||
|
(*pFile)<<"[像素尺寸(mm/pix) ][m_OnePixDis] = "<<m_OnePixDis<<endl;
|
||||||
|
|
||||||
|
}
|
||||||
|
void CCamera::Draw(CDC* pDC)
|
||||||
|
{
|
||||||
|
if(gDraw->IsShowPlatformPos())
|
||||||
|
{
|
||||||
|
DbRect Rect(m_Coord,gDraw->GetCatchNodeSize());
|
||||||
|
DrawCrossX(pDC,gDraw->GetMarkPointPen(),Rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//设置CCD 的坐标
|
||||||
|
void CCamera::SetCoord(Dbxy pt)
|
||||||
|
{
|
||||||
|
m_Coord = pt;
|
||||||
|
//强制保存所有的属性到文件
|
||||||
|
gDevicePropertieMgr.SaveAllPropertie();
|
||||||
|
}
|
||||||
|
//获取CCD 的中心点坐标(一般用来移动到CCD 观察)
|
||||||
|
Dbxy CCamera::GetCenterPt()
|
||||||
|
{
|
||||||
|
Dbxy CenterPt;
|
||||||
|
CenterPt.x = m_Coord.x + m_Size.w/2;
|
||||||
|
if(m_bLeftTop)
|
||||||
|
{
|
||||||
|
CenterPt.y = m_Coord.y - m_Size.h/2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CenterPt.y = m_Coord.y + m_Size.h/2;
|
||||||
|
}
|
||||||
|
return CenterPt;
|
||||||
|
}
|
||||||
|
Dbxy CCamera::CCDpt2Platcoord(Dbxy CCDpt)
|
||||||
|
{
|
||||||
|
Dbxy pt;
|
||||||
|
pt.x = m_Coord.x + CCDpt.x;
|
||||||
|
|
||||||
|
if(m_bLeftTop)//根据CCD 的基准点,y 值不一样
|
||||||
|
pt.y = m_Coord.y - CCDpt.y;
|
||||||
|
else
|
||||||
|
pt.y = m_Coord.y + CCDpt.y;
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
//将CCD 抓取坐标转换为相对于平台原点的坐标
|
||||||
|
//CCDpt 是CCD 抓取的坐标(相对于CCD 原点的值)
|
||||||
|
Dbxy CCamera::CCDcoord2Platformcoord(Dbxy CCDpt)
|
||||||
|
{
|
||||||
|
CString LogStr;
|
||||||
|
LogStr.Format(_T("CCDcoord2Platformcoord : CCD 返回值[x] = [%0.3f] ,[y] = [%0.3f]"),CCDpt.x,CCDpt.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
|
||||||
|
//像素坐标转换为mm 单位坐标-----------------------
|
||||||
|
if(m_bPixCoord)
|
||||||
|
{
|
||||||
|
CCDpt.x *= m_OnePixDis;
|
||||||
|
CCDpt.y *= m_OnePixDis;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(((CCDpt.x<0)||(CCDpt.x>m_Size.w))||((CCDpt.y<0)||(CCDpt.y>m_Size.h)))//避免错误的返回值
|
||||||
|
{
|
||||||
|
CString str = _T("定位抓取失败");
|
||||||
|
CExceptionMsg Msg;
|
||||||
|
Msg.SetMsg(str);
|
||||||
|
throw Msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogStr.Format(_T("[MM_Coordx] = [%0.3f] ,[MM_Coordy] = [%0.3f]"),CCDpt.x,CCDpt.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
|
||||||
|
//换算为平台 坐标-------------------------------------------
|
||||||
|
#if 0
|
||||||
|
Dbxy pt = CCDpt2Platcoord(CCDpt);
|
||||||
|
|
||||||
|
LogStr.Format(_T("[m_Coordx] = [%0.3f] ,[m_Coordy] = [%0.3f]"),m_Coord.x,m_Coord.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
|
||||||
|
|
||||||
|
//结果抵消平台当前的移动量,才是实际测量点的坐标
|
||||||
|
Dbxy PlatformPt = gPlatformXY->GetCoord();
|
||||||
|
LogStr.Format(_T("[PlatformPtx] = [%0.3f] ,[PlatformPty] = [%0.3f]"),PlatformPt.x,PlatformPt.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
|
||||||
|
pt.x -= PlatformPt.x;
|
||||||
|
pt.y -= PlatformPt.y;
|
||||||
|
#else
|
||||||
|
Dbxy CameraCoord = m_Coord;
|
||||||
|
LogStr.Format(_T("[CameraCoord.x] = [%0.3f] ,[CameraCoord.y] = [%0.3f]"),CameraCoord.x,CameraCoord.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
Dbxy PlatformPt = gPlatformXY->GetCoord();
|
||||||
|
LogStr.Format(_T("[PlatformCoord.x] = [%0.3f] ,[PlatformCoord.y] = [%0.3f]"),PlatformPt.x,PlatformPt.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
CameraCoord.x = CameraCoord.x - PlatformPt.x;
|
||||||
|
CameraCoord.y = CameraCoord.y + PlatformPt.y;
|
||||||
|
LogStr.Format(_T("[CameraCoord_Now.x] = [%0.3f] ,[CameraCoord_Now.y] = [%0.3f]"),CameraCoord.x,CameraCoord.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
|
||||||
|
Dbxy pt;
|
||||||
|
pt.x = CameraCoord.x + CCDpt.x;
|
||||||
|
pt.y = CameraCoord.y - CCDpt.y;
|
||||||
|
|
||||||
|
LogStr.Format(_T("[CatchPt.x] = [%0.3f] ,[CatchPt.y] = [%0.3f]"),pt.x,pt.y);
|
||||||
|
gLogMgr->WriteDebugLog(LogStr);
|
||||||
|
#endif
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
//抓取点, 并转换为平台坐标(pt 保存抓取的结果)
|
||||||
|
bool CCamera::CatchPtToPlatformcoord(Dbxy &pt)
|
||||||
|
{
|
||||||
|
Dbxy CatchPt;
|
||||||
|
bool ret;
|
||||||
|
if(!m_bCatch)//不实际抓取
|
||||||
|
{
|
||||||
|
ret = true;
|
||||||
|
CatchPt.x = CatchPt.y = 10;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = CatchPoint(CatchPt);
|
||||||
|
}
|
||||||
|
if(IsDbxyZero(CatchPt))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
{
|
||||||
|
pt = CCDcoord2Platformcoord(CatchPt);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
#include "module.h"
|
||||||
|
|
||||||
|
class CCamera:public CModule
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCamera(void);
|
||||||
|
virtual ~CCamera(void);
|
||||||
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
||||||
|
virtual void ExportPar(ofstream *pFile);
|
||||||
|
virtual void Draw(CDC* pDC);
|
||||||
|
virtual bool CatchPoint(Dbxy &pt){return false;};
|
||||||
|
virtual Dbxy GetCoord(){return m_Coord;};
|
||||||
|
virtual Dbxy CCDpt2Platcoord(Dbxy CCDpt);
|
||||||
|
virtual Dbxy GetCenterPt();
|
||||||
|
void SetCoord(Dbxy pt);
|
||||||
|
Dbxy CCDcoord2Platformcoord(Dbxy CCDpt);
|
||||||
|
bool CatchPtToPlatformcoord(Dbxy &pt);
|
||||||
|
double GetOnePixDis(){return m_OnePixDis;};
|
||||||
|
double GetAngle(){return m_Angle;};
|
||||||
|
int GetCatchFrontDelay(){return m_CatchFrontDelay;};
|
||||||
|
protected:
|
||||||
|
bool m_bUse;//是否使用
|
||||||
|
bool m_bIni;//是否初始化成功
|
||||||
|
double m_OnePixDis;//一个像素对应的实际尺寸(mm/pix) ,通常需要定标得到这个值,不是所有的CCD 都会使用这个值,像基恩士的就是在其内部处理的
|
||||||
|
|
||||||
|
bool m_bLeftTop;//基准点是否为左上角(false 为左下角)
|
||||||
|
bool m_bPixCoord;//相机抓取的是否为像素坐标(基恩士返回的是mm 单位的值)
|
||||||
|
Dbxy m_Coord;//CCD 视场基准点相对于平台原点的坐标值(一般是左上角,或者左下角)
|
||||||
|
DbSize m_Size;//CCD 视场范围的实际尺寸(用来计算抓取定位的坐标值)
|
||||||
|
|
||||||
|
bool m_bRotatoPtByAngle;//是否根据相机的安装角度修正抓取结果
|
||||||
|
double m_Angle;//安装角度,相对于电机的X 轴(360 度角)
|
||||||
|
|
||||||
|
bool m_bCatch;//实际抓取
|
||||||
|
|
||||||
|
int m_CatchFrontDelay;//抓取前延时ms
|
||||||
|
int m_CatchWaitDelay;//抓取等待延时ms
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Camera.h"
|
||||||
|
#include "EnumPropertieType.h"
|
||||||
|
#include "hawkvisctrlctrl1.h"
|
||||||
|
|
||||||
|
//霍克视觉(CCD 坐标的基准点是左上角)
|
||||||
|
class CCameraHawkvis :public CCamera
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCameraHawkvis(void);
|
||||||
|
~CCameraHawkvis(void);
|
||||||
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
||||||
|
virtual MODULE GetModuleType(){return _HAWKVIS_CCD_PROP;};
|
||||||
|
virtual void Ini();
|
||||||
|
virtual void ExportPar(ofstream *pFile);
|
||||||
|
virtual bool CatchPoint(Dbxy &pt);
|
||||||
|
//virtual Dbxy CCDpt2Platcoord(Dbxy CCDpt);
|
||||||
|
bool OpenCamera();
|
||||||
|
void OpenTemp();
|
||||||
|
private:
|
||||||
|
CHawkvisctrlctrl1 *m_HawkvisCtrl;//霍克视觉的ocx 控件
|
||||||
|
int m_nExpore;//曝光值
|
||||||
|
bool m_bOpen;//相机是否打开
|
||||||
|
bool m_bRotate180;//画面是否旋转180度
|
||||||
|
bool m_bMirrorH;//水平镜像
|
||||||
|
bool m_bMirrorV;//垂直镜像
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CCameraHawkvis *gCameraHawkvis;
|
||||||
@ -0,0 +1,213 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CameraKeyence.h"
|
||||||
|
#include "SocketMgr.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
#include "Propertie.h"
|
||||||
|
#include "PropertieMgr.h"
|
||||||
|
#include "AuthorityMgr.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define SEND_MASSAGE_TO_CCD_DELAYE_TIME 500//发送消息给CCD ,接收反馈的等待延时
|
||||||
|
|
||||||
|
CCameraKeyence *gCameraKeyence = new CCameraKeyence;
|
||||||
|
CCameraKeyence::CCameraKeyence(void)
|
||||||
|
:m_IPAddrStr("192.168.0.10")//CCD 主机的IP地址
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CCameraKeyence::~CCameraKeyence(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#if 1
|
||||||
|
CMFCPropertyGridProperty *CCameraKeyence::CreatGridProperty()
|
||||||
|
{
|
||||||
|
CString PropertyName;//属性名称
|
||||||
|
CString Description;//描述
|
||||||
|
CString Path = _T("DaHenCCD");;//存储路径
|
||||||
|
CString Name;
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
PropertyName = _T("CCD ");
|
||||||
|
CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName);
|
||||||
|
|
||||||
|
//先把共同设定加进来
|
||||||
|
CMFCPropertyGridProperty* pBase = CCamera::CreatGridProperty();
|
||||||
|
pGroup->AddSubItem(pBase);
|
||||||
|
//-------------------------------------------------------------------------------//
|
||||||
|
PropertyName = _T("特殊设定");
|
||||||
|
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName);
|
||||||
|
if(gAuthorityMgr->CheckAuthority(_FACTORY))
|
||||||
|
{
|
||||||
|
//添加属性变量映射
|
||||||
|
Name = _T("m_IPAddrStr");//变量名字
|
||||||
|
CPropertie *pPropertie = new CPropertie;
|
||||||
|
pPropertie->SetpVal((void*)&m_IPAddrStr);
|
||||||
|
pPropertie->SetType(_PROP_TYPE_STRING);
|
||||||
|
pPropertie->SetpModule(this);
|
||||||
|
pPropertie->SetPath(Path);
|
||||||
|
pPropertie->SetName(Name);
|
||||||
|
pPropertie->WriteRead(true);//读取保存的属性
|
||||||
|
|
||||||
|
//添加属性显示
|
||||||
|
PropertyName = _T("CCD 主机IP 地址");
|
||||||
|
Description = _T("CCD 主机的IP 地址,用来和电脑通信");
|
||||||
|
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_IPAddrStr, Description);
|
||||||
|
pGroup1->AddSubItem(p1);
|
||||||
|
gDevicePropertieMgr.Insert(p1, pPropertie);
|
||||||
|
}
|
||||||
|
|
||||||
|
pGroup->AddSubItem(pGroup1);
|
||||||
|
return pGroup;
|
||||||
|
}
|
||||||
|
void CCameraKeyence::ExportPar(ofstream *pFile)
|
||||||
|
{
|
||||||
|
CCamera::ExportPar(pFile);
|
||||||
|
|
||||||
|
(*pFile)<<"[模块] [CCameraKeyence]------------------------------------------------"<<endl;
|
||||||
|
(*pFile)<<"[CCD 主机IP 地址][m_IPAddrStr] = "<<m_IPAddrStr<<endl;
|
||||||
|
}
|
||||||
|
//返回视场中心
|
||||||
|
Dbxy CCameraKeyence::GetCoord()
|
||||||
|
{
|
||||||
|
Dbxy pt;
|
||||||
|
pt.x = m_Coord.x + m_Size.w/2;
|
||||||
|
pt.y = m_Coord.y - m_Size.h/2;
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#if 1
|
||||||
|
bool CCameraKeyence::CatchPoint(Dbxy &pt)
|
||||||
|
{
|
||||||
|
if(gSocketMgr->Connect(m_IPAddrStr,8500))
|
||||||
|
{
|
||||||
|
gSocketMgr->Send("T1\r",strlen("T1\r")+1);
|
||||||
|
Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME);
|
||||||
|
char recvBuf[100];//返回结果
|
||||||
|
gSocketMgr->Receive(recvBuf,sizeof(recvBuf));
|
||||||
|
CString str = recvBuf;
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
gSocketMgr->Close();
|
||||||
|
//提取CCD 返回结果中的数值
|
||||||
|
double arr[20];
|
||||||
|
if(GetNumFromRecvBuf(recvBuf,arr))
|
||||||
|
{
|
||||||
|
Dbxy CCDpt(arr[0],arr[1]);
|
||||||
|
if(IsDbxyZero(CCDpt))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//提取CCD 返回结果中的数值
|
||||||
|
BOOL CCameraKeyence::GetNumFromRecvBuf(char* recvBuf,double *arr)
|
||||||
|
{
|
||||||
|
CString Str = recvBuf;
|
||||||
|
int CommaPosPer;//第一个逗号的位置
|
||||||
|
CommaPosPer = Str.Find(",",0);
|
||||||
|
if(CommaPosPer == -1)//没找到直接返回
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int idx = 0;
|
||||||
|
int CommaPosNext = CommaPosPer;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
CommaPosNext = Str.Find(",",CommaPosPer+1);//下一个逗号的位置
|
||||||
|
if(CommaPosNext==-1)//最后一个
|
||||||
|
{
|
||||||
|
CString Str1(recvBuf+CommaPosPer+1);
|
||||||
|
arr[idx] = atof(Str1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CString Str1(recvBuf+CommaPosPer+1,CommaPosNext-CommaPosPer);
|
||||||
|
arr[idx] = atof(Str1);
|
||||||
|
}
|
||||||
|
CommaPosPer = CommaPosNext;
|
||||||
|
idx++;
|
||||||
|
}while(CommaPosNext!=-1);
|
||||||
|
|
||||||
|
//未检测到mark 点
|
||||||
|
if((Str[0]!= 'T' && Str[1]!='1'))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
//打开CCD 光源
|
||||||
|
void CCameraKeyence::OpenCCDLight()
|
||||||
|
{
|
||||||
|
if(gSocketMgr->Connect(m_IPAddrStr,8500))
|
||||||
|
{
|
||||||
|
gSocketMgr->Send("CLV,2,100\r",strlen("CLV,1,100\r")+1);
|
||||||
|
Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME);
|
||||||
|
gSocketMgr->Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//关闭CCD 光源
|
||||||
|
void CCameraKeyence::CloseCCDLight()
|
||||||
|
{
|
||||||
|
if(gSocketMgr->Connect(m_IPAddrStr,8500))
|
||||||
|
{
|
||||||
|
gSocketMgr->Send("CLV,2,0\r",strlen("CLV,1,0\r")+1);
|
||||||
|
Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME);
|
||||||
|
gSocketMgr->Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//切换CCD 的场景"PW," & CStr(sd) & "," & nnn & Chr(13) & Chr(10)
|
||||||
|
void CCameraKeyence::ChangeCCDScene()
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
CGraphSoftView* pView= m_pView;
|
||||||
|
if(pView->GetDocument()->m_CurrOpenFileName=="")
|
||||||
|
return;
|
||||||
|
DEBUG_LOG_START
|
||||||
|
pView->m_DebugLogFile<< "Function :[ChangeCCDScene][自动切换CCD 场景]"<<endl;
|
||||||
|
DEBUG_LOG_END
|
||||||
|
|
||||||
|
pView->m_CommunicationManager.SocketConnect();
|
||||||
|
CString str1 = "PW,1,";
|
||||||
|
CString str2 = str1 + pView->GetDocument()->m_CurrOpenFileName+"\r";
|
||||||
|
pView->m_CommunicationManager.m_SocketClient.Send(str2,str2.GetLength()+1,0);
|
||||||
|
DEBUG_LOG_START
|
||||||
|
pView->m_DebugLogFile<< "发送命令: "<<str2<<endl;
|
||||||
|
DEBUG_LOG_END
|
||||||
|
Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME);
|
||||||
|
pView->m_CommunicationManager.SocketClose();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//切换当前显示的CCD 画面idx(1~4) 为0 表示显示全部
|
||||||
|
bool CCameraKeyence::ChangeCCDScreen(int idx)
|
||||||
|
{
|
||||||
|
if(gSocketMgr->Connect(m_IPAddrStr,8500))
|
||||||
|
{
|
||||||
|
if(idx == 1)
|
||||||
|
{
|
||||||
|
gLogMgr->WriteDebugLog("ChangeCCDScreen id = 1");
|
||||||
|
gSocketMgr->Send("VW,0,1\r",strlen("VW,0,1\r")+1);
|
||||||
|
}
|
||||||
|
if(idx == 2)
|
||||||
|
{
|
||||||
|
gLogMgr->WriteDebugLog("ChangeCCDScreen id = 2");
|
||||||
|
gSocketMgr->Send("VW,0,2\r",strlen("VW,0,1\r")+1);
|
||||||
|
}
|
||||||
|
Sleep(SEND_MASSAGE_TO_CCD_DELAYE_TIME);
|
||||||
|
char recvBuf[100];//返回结果
|
||||||
|
gSocketMgr->Receive(recvBuf,sizeof(recvBuf));
|
||||||
|
CString str = recvBuf;
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
gSocketMgr->Close();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Camera.h"
|
||||||
|
|
||||||
|
|
||||||
|
//基恩士CCD 的管理类
|
||||||
|
class CCameraKeyence:public CCamera
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCameraKeyence(void);
|
||||||
|
~CCameraKeyence(void);
|
||||||
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
||||||
|
virtual MODULE GetModuleType(){return _KEYENCE_CCD_PROP;};
|
||||||
|
virtual void ExportPar(ofstream *pFile);
|
||||||
|
virtual bool CatchPoint(Dbxy &pt);
|
||||||
|
virtual Dbxy GetCoord();
|
||||||
|
void OpenCCDLight();
|
||||||
|
void CloseCCDLight();
|
||||||
|
void ChangeCCDScene();
|
||||||
|
BOOL GetNumFromRecvBuf(char* recvBuf,double *arr);
|
||||||
|
bool ChangeCCDScreen(int idx);
|
||||||
|
private:
|
||||||
|
CString m_IPAddrStr;//CCD 主机的IP地址
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CCameraKeyence *gCameraKeyence;
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
#include "ObjBase.h"
|
||||||
|
#include "SmartPtr.h"
|
||||||
|
|
||||||
|
//鼠标捕捉管理
|
||||||
|
class CCatchMgr
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCatchMgr(void);
|
||||||
|
~CCatchMgr(void);
|
||||||
|
void Clear();
|
||||||
|
void Catch(Dbxy DownPt,Dbxy pt,CDC* pDC,bool bCatchTemp);
|
||||||
|
void ResetCatchPoint(CDC* pDC);
|
||||||
|
bool GetCatchPoint(CPoint &pt);
|
||||||
|
private:
|
||||||
|
void CatchNode(DbRect rect);
|
||||||
|
void CatchIntersectPointOfLines(DbRect rect);
|
||||||
|
void CatchIntersectPointWithMouse(DbRect rect);
|
||||||
|
void ResetCatchNode();
|
||||||
|
bool HasCatchPoint();
|
||||||
|
void DrawCatchPoint(CCatchPoint pt,CDC* pDC);
|
||||||
|
void DrawCatchPointExt(CCatchPoint pt,CDC* pDC);
|
||||||
|
CCatchPoint GetNearestCatchPt(Dbxy pt);
|
||||||
|
void GetLineInRect(DbRect &rect,bool bCatchTemp);
|
||||||
|
void CatchOrthoPoint(Dbxy DownPt,Dbxy MousePt,DbRect rect);
|
||||||
|
void CatchCutTrack(DbRect rect);
|
||||||
|
private:
|
||||||
|
vector<DbLine> m_DataPtLineVec;//保存rect 范围内所有的线段
|
||||||
|
vector<CCatchPoint> m_CatchPointVec;//在鼠标范围内的捕获点的容器
|
||||||
|
CCatchPoint m_CatchNode;//之前抓取的点
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CCatchMgr gCatchMgr;
|
||||||
@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
// ChildFrm.cpp : CChildFrame 类的实现
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "LaiPuLaser.h"
|
||||||
|
|
||||||
|
#include "ChildFrm.h"
|
||||||
|
#include "GlobalDrawMgr.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define new DEBUG_NEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// CChildFrame
|
||||||
|
|
||||||
|
IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWndEx)
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWndEx)
|
||||||
|
ON_WM_SYSCOMMAND()
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
// CChildFrame 构造/析构
|
||||||
|
|
||||||
|
CChildFrame::CChildFrame()
|
||||||
|
{
|
||||||
|
// TODO: 在此添加成员初始化代码
|
||||||
|
}
|
||||||
|
|
||||||
|
CChildFrame::~CChildFrame()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
|
||||||
|
{
|
||||||
|
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
|
||||||
|
|
||||||
|
if( !CMDIChildWndEx::PreCreateWindow(cs) )
|
||||||
|
return FALSE;
|
||||||
|
cs.style |= WS_MAXIMIZE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// CChildFrame 诊断
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
void CChildFrame::AssertValid() const
|
||||||
|
{
|
||||||
|
CMDIChildWndEx::AssertValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CChildFrame::Dump(CDumpContext& dc) const
|
||||||
|
{
|
||||||
|
CMDIChildWndEx::Dump(dc);
|
||||||
|
}
|
||||||
|
#endif //_DEBUG
|
||||||
|
|
||||||
|
// CChildFrame 消息处理程序
|
||||||
|
void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam)
|
||||||
|
{
|
||||||
|
if(nID == SC_CLOSE)
|
||||||
|
return;
|
||||||
|
CMDIChildWndEx::OnSysCommand(nID, lParam);
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
// ChildFrm.h : CChildFrame 类的接口
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class CChildFrame : public CMDIChildWndEx
|
||||||
|
{
|
||||||
|
DECLARE_DYNCREATE(CChildFrame)
|
||||||
|
public:
|
||||||
|
CChildFrame();
|
||||||
|
|
||||||
|
// 特性
|
||||||
|
public:
|
||||||
|
|
||||||
|
// 操作
|
||||||
|
public:
|
||||||
|
|
||||||
|
// 重写
|
||||||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||||
|
|
||||||
|
// 实现
|
||||||
|
public:
|
||||||
|
virtual ~CChildFrame();
|
||||||
|
#ifdef _DEBUG
|
||||||
|
virtual void AssertValid() const;
|
||||||
|
virtual void Dump(CDumpContext& dc) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// 生成的消息映射函数
|
||||||
|
protected:
|
||||||
|
afx_msg void OnSysCommand( UINT nID, LPARAM lParam );
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
@ -0,0 +1 @@
|
|||||||
|
|
||||||
@ -0,0 +1 @@
|
|||||||
|
|
||||||
@ -0,0 +1,138 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommPortMgr.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
|
||||||
|
CCommPortMgr::CCommPortMgr(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
CCommPortMgr::~CCommPortMgr(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
//打开com 口(dwBaudRate 是波特率)
|
||||||
|
bool CCommPortMgr::Open(DWORD dwPort, DWORD dwBaudRate)
|
||||||
|
{
|
||||||
|
if(IsOpen())//打开状态直接返回
|
||||||
|
return true;
|
||||||
|
|
||||||
|
CString str = "Function :[CCommPortMgr::Open][打开com 口]";
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",dwPort);
|
||||||
|
|
||||||
|
str = "Result :[com 口<"+str1+">打开]";
|
||||||
|
bool ret;
|
||||||
|
if(m_Com.Open(dwPort,dwBaudRate) == false)
|
||||||
|
{
|
||||||
|
gLogMgr->WriteDebugLog(str,_LOG_ERROR);
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str += "[OK]";
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
//打开串口, 使用类似"9600, n, 8, 1"的设置字符串设置串口
|
||||||
|
bool CCommPortMgr::Open(DWORD dwPort, char *szSetStr)
|
||||||
|
{
|
||||||
|
CString str = "Function :[CCommPortMgr::Open][打开com 口]";
|
||||||
|
//gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",dwPort);
|
||||||
|
|
||||||
|
str = "Result :[com 口<"+str1+">打开]";
|
||||||
|
bool ret;
|
||||||
|
if(m_Com.Open(dwPort,szSetStr) == false)
|
||||||
|
{
|
||||||
|
//gLogMgr->WriteDebugLog(str,_LOG_ERROR);
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str += "[OK]";
|
||||||
|
//gLogMgr->WriteDebugLog(str);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
//绑定串口消息的窗口ID
|
||||||
|
void CCommPortMgr::SetWnd(HWND hWnd)
|
||||||
|
{
|
||||||
|
CString str = "Function :[SetWnd][绑定串口消息的响应窗口ID]";
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
m_Com.SetWnd(hWnd);
|
||||||
|
}
|
||||||
|
//读取串口消息到szBuffer
|
||||||
|
CString CCommPortMgr::ReadBuf(char *szBuffer,DWORD dwBufferLength)
|
||||||
|
{
|
||||||
|
CString str = "Function :[ReadString][读取串口消息]";
|
||||||
|
//gLogMgr->WriteDebugLog(str);
|
||||||
|
m_Com.ReadString(szBuffer,dwBufferLength);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
CString CCommPortMgr::ReadStr()
|
||||||
|
{
|
||||||
|
CString str = "Function :[ReadString][读取串口消息]";
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
const int dwBufferLength = 500;
|
||||||
|
char szBuffer[dwBufferLength];
|
||||||
|
memset(szBuffer,'0',dwBufferLength);
|
||||||
|
|
||||||
|
m_Com.ReadString(szBuffer,dwBufferLength);
|
||||||
|
//转化为CString
|
||||||
|
str = szBuffer;
|
||||||
|
|
||||||
|
//gLogMgr->WriteDebugLog(str);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CCommPortMgr::Read(LPVOID Buffer, DWORD dwBufferLength)
|
||||||
|
{
|
||||||
|
//CString str = "Function :[ReadString][读取串口消息]";
|
||||||
|
//gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
return m_Com.Read(Buffer,dwBufferLength);
|
||||||
|
}
|
||||||
|
//发送消息到串口
|
||||||
|
void CCommPortMgr::Write(const char *szBuffer)
|
||||||
|
{
|
||||||
|
//CString str = "Function :[Write][发送消息到串口]";
|
||||||
|
//gLogMgr->WriteDebugLog(str+szBuffer);
|
||||||
|
|
||||||
|
m_Com.Write(szBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCommPortMgr::WriteBuf(LPVOID Buffer, DWORD dwBufferLength)
|
||||||
|
{
|
||||||
|
//CString str = "Function :[Write][发送消息到串口]";
|
||||||
|
//gLogMgr->WriteDebugLog(str);
|
||||||
|
m_Com.Write(Buffer,dwBufferLength);
|
||||||
|
}
|
||||||
|
//关闭串口
|
||||||
|
void CCommPortMgr::Close()
|
||||||
|
{
|
||||||
|
CString str = "Function :[Close][关闭串口]";
|
||||||
|
gLogMgr->WriteDebugLog(str);
|
||||||
|
|
||||||
|
m_Com.Close();
|
||||||
|
}
|
||||||
|
void CCommPortMgr::SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize)
|
||||||
|
{
|
||||||
|
m_Com.SetBufferSize(dwInputSize,dwOutputSize);
|
||||||
|
}
|
||||||
|
int CCommPortMgr::GetInputSize()
|
||||||
|
{
|
||||||
|
gLogMgr->WriteDebugLog("BufferSize","",m_Com.GetInputSize());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CommPortClass.h"
|
||||||
|
//对第三方com 再封装一次
|
||||||
|
class CCommPortMgr
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommPortMgr(void);
|
||||||
|
~CCommPortMgr(void);
|
||||||
|
bool Open(DWORD dwPort, DWORD dwBaudRate = 9600);
|
||||||
|
bool Open(DWORD dwPort, char *szSetStr);
|
||||||
|
void Close();
|
||||||
|
void SetWnd(HWND hWnd);
|
||||||
|
void Write(const char *szBuffer);
|
||||||
|
void WriteBuf(LPVOID Buffer, DWORD dwBufferLength);
|
||||||
|
CString ReadStr();
|
||||||
|
CString ReadBuf(char *szBuffer,DWORD dwBufferLength);
|
||||||
|
int Read(LPVOID Buffer, DWORD dwBufferLength);
|
||||||
|
bool IsOpen(){return m_Com.IsOpen();};
|
||||||
|
void SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize);
|
||||||
|
int GetInputSize();
|
||||||
|
private:
|
||||||
|
cnComm m_Com;//PLC 串口管理对象
|
||||||
|
};
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandAddNode.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandAddNode::CCommandAddNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CCommandAddNode::~CCommandAddNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCommandAddNode::ExcuteExt()
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->InsertNode(m_idx,m_pt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandAddNode::UndoExt()
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->DelNodePtByIdx(m_idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CString CCommandAddNode::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_add_node Ìí¼Ó½Úµã-----";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
void CCommandAddNode::SetPar(int idx,Dbxy pt)
|
||||||
|
{
|
||||||
|
m_idx = idx;
|
||||||
|
m_pt = pt;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
//添加节点
|
||||||
|
class CCommandAddNode :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandAddNode(void);
|
||||||
|
~CCommandAddNode(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetPar(int idx,Dbxy pt);
|
||||||
|
private:
|
||||||
|
int m_idx;//节点的索引值
|
||||||
|
Dbxy m_pt;//节点的坐标
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandArray.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandArray::CCommandArray(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandArray::~CCommandArray(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCommandArray::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
//先删除阵列基准obj
|
||||||
|
layer.DelObj(m_BaseObjContainer);
|
||||||
|
//再导入阵列对象
|
||||||
|
layer.AddObject(m_ObjContainer);
|
||||||
|
}
|
||||||
|
void CCommandArray::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
//删除阵列对象
|
||||||
|
layer.DelObj(m_ObjContainer);
|
||||||
|
//导入基准对象
|
||||||
|
layer.AddObject(m_BaseObjContainer);
|
||||||
|
}
|
||||||
|
CString CCommandArray::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_array 阵列-----";
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
if(vec.size()>1)
|
||||||
|
{
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",vec.size());
|
||||||
|
str +="[数量] : <"+str1+">";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
//保存基准obj
|
||||||
|
void CCommandArray::SaveBaseObj(CObjContainer &ObjContainer)
|
||||||
|
{
|
||||||
|
ObjContainer.AllObjAddToContainer(m_BaseObjContainer,true);
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
class CCommandArray :
|
||||||
|
public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandArray(void);
|
||||||
|
~CCommandArray(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SaveBaseObj(CObjContainer &ObjContainer);
|
||||||
|
private:
|
||||||
|
CObjContainer m_BaseObjContainer;//基准对象的容器
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandBase.h"
|
||||||
|
#include "EasyOperationMgr.h"
|
||||||
|
|
||||||
|
CCommandBase::CCommandBase(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandBase::~CCommandBase(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//添加操作对象
|
||||||
|
void CCommandBase::AddOpObj(Sptr<CObjBase> p)
|
||||||
|
{
|
||||||
|
m_ObjContainer.AddObject(p);
|
||||||
|
}
|
||||||
|
void CCommandBase::AddOpObj(CObjBase *p)
|
||||||
|
{
|
||||||
|
//保存到智能指针
|
||||||
|
Sptr<CObjBase> sPtr(p);
|
||||||
|
AddOpObj(sPtr);
|
||||||
|
}
|
||||||
|
//是否有操作对象
|
||||||
|
bool CCommandBase::HasOpObj()
|
||||||
|
{
|
||||||
|
return !m_ObjContainer.Empty();
|
||||||
|
}
|
||||||
|
void CCommandBase::Excute()
|
||||||
|
{
|
||||||
|
ExcuteExt();
|
||||||
|
gEasyOperationMgr->Refresh();
|
||||||
|
}
|
||||||
|
void CCommandBase::Undo()
|
||||||
|
{
|
||||||
|
UndoExt();
|
||||||
|
gEasyOperationMgr->Refresh();
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
#include "SmartPtr.h"
|
||||||
|
#include "ObjContainer.h"
|
||||||
|
#include "ObjBase.h"
|
||||||
|
|
||||||
|
class CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandBase(void);
|
||||||
|
virtual ~CCommandBase(void);
|
||||||
|
virtual CString GetStr() = 0;
|
||||||
|
virtual void ExcuteExt(){};
|
||||||
|
virtual void UndoExt(){};
|
||||||
|
void Excute();
|
||||||
|
void Undo();
|
||||||
|
void AddOpObj(CObjBase *p);
|
||||||
|
void AddOpObj(Sptr<CObjBase>);
|
||||||
|
bool HasOpObj();
|
||||||
|
void SetOperatePar(SObjOperatePar par){m_Par = par;};
|
||||||
|
protected:
|
||||||
|
CObjContainer m_ObjContainer;//obj 对象容器管理对象
|
||||||
|
SObjOperatePar m_Par;//操作参数
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandBreakNode.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandBreakNode::CCommandBreakNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandBreakNode::~CCommandBreakNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//第一个是打断之前的obj
|
||||||
|
void CCommandBreakNode::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->SetSelected(true);
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
if(iter == vec.begin())
|
||||||
|
{
|
||||||
|
layer.DelObj((*iter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer.AddObject((*iter));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandBreakNode::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->SetSelected(true);
|
||||||
|
if(iter == vec.begin())
|
||||||
|
{
|
||||||
|
layer.AddObject((*iter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer.DelObj((*iter));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CString CCommandBreakNode::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_break 打断节点-----";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
class CCommandBreakNode :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandBreakNode(void);
|
||||||
|
~CCommandBreakNode(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandCopy.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandCopy::CCommandCopy(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandCopy::~CCommandCopy(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCommandCopy::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
layer.AddObject(m_ObjContainer);
|
||||||
|
}
|
||||||
|
void CCommandCopy::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
layer.DelObj(m_ObjContainer);
|
||||||
|
}
|
||||||
|
CString CCommandCopy::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_copy ¸´ÖÆ-----";
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
if(vec.size()>1)
|
||||||
|
{
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",vec.size());
|
||||||
|
str +="[ÊýÁ¿] : <"+str1+">";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
class CCommandCopy :
|
||||||
|
public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandCopy(void);
|
||||||
|
~CCommandCopy(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandCreat.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandCreat::CCommandCreat(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandCreat::~CCommandCreat(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CString CCommandCreat::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_creat ´´½¨-----";
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
str += ((*iter)->GetStr()+" ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(vec.size()>1)
|
||||||
|
{
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",vec.size());
|
||||||
|
str +="[ÊýÁ¿] : <"+str1+">";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
void CCommandCreat::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
layer.AddObject(m_ObjContainer);
|
||||||
|
}
|
||||||
|
void CCommandCreat::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
layer.DelObj(m_ObjContainer);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "CommandBase.h"
|
||||||
|
class CCommandCreat :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandCreat(void);
|
||||||
|
~CCommandCreat(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandCut.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandCut::CCommandCut(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandCut::~CCommandCut(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//m_ObjContainer 的第一个为剪切的obj
|
||||||
|
//剪切后的obj 可能为0~2 个
|
||||||
|
void CCommandCut::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->SetSelected(false);
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
if(iter == vec.begin())
|
||||||
|
{
|
||||||
|
layer.DelObj((*iter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer.AddObject((*iter));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandCut::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
if(iter == vec.begin())
|
||||||
|
{
|
||||||
|
layer.AddObject((*iter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer.DelObj((*iter));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CString CCommandCut::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_cut 修剪-----";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
class CCommandCut :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandCut(void);
|
||||||
|
~CCommandCut(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandDelNode.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandDelNode::CCommandDelNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandDelNode::~CCommandDelNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCommandDelNode::ExcuteExt()
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->DelNodePtByIdx(m_idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandDelNode::UndoExt()
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->InsertNode(m_idx,m_pt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CString CCommandDelNode::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_del_node ɾ³ý½Úµã-----";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
void CCommandDelNode::SetPar(int idx,Dbxy pt)
|
||||||
|
{
|
||||||
|
m_idx = idx;
|
||||||
|
m_pt = pt;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
class CCommandDelNode :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandDelNode(void);
|
||||||
|
~CCommandDelNode(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetPar(int idx,Dbxy pt);
|
||||||
|
private:
|
||||||
|
int m_idx;
|
||||||
|
Dbxy m_pt;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandDelete.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandDelete::CCommandDelete(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CCommandDelete::~CCommandDelete(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCommandDelete::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
layer.DelObj(m_ObjContainer);
|
||||||
|
|
||||||
|
}
|
||||||
|
void CCommandDelete::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
layer.AddObject(m_ObjContainer);
|
||||||
|
}
|
||||||
|
CString CCommandDelete::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_erase ɾ³ý-----";
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
if(vec.empty()==false)
|
||||||
|
{
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",vec.size());
|
||||||
|
str +="[ÊýÁ¿] : <"+str1+">";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "CommandBase.h"
|
||||||
|
class CCommandDelete :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandDelete(void);
|
||||||
|
~CCommandDelete(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandJion.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandJion::CCommandJion(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandJion::~CCommandJion(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//最后一个是合并后的obj
|
||||||
|
void CCommandJion::ExcuteExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->SetSelected(true);
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
if(iter == vec.end()-1)
|
||||||
|
{
|
||||||
|
layer.AddObject((*iter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer.DelObj((*iter));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandJion::UndoExt()
|
||||||
|
{
|
||||||
|
CLayer &layer = GetLayerInstance();
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->SetSelected(true);
|
||||||
|
if(iter == vec.end()-1)
|
||||||
|
{
|
||||||
|
layer.DelObj((*iter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer.AddObject((*iter));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CString CCommandJion::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_jion 合并-----";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
//ºÏ²¢
|
||||||
|
class CCommandJion :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandJion(void);
|
||||||
|
~CCommandJion(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandMgr.h"
|
||||||
|
#include "LogMgr.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_UNDO_CNT 100//最大撤销次数
|
||||||
|
|
||||||
|
CCommandMgr gCommandMgr;
|
||||||
|
CCommandMgr::CCommandMgr(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandMgr::~CCommandMgr(void)
|
||||||
|
{
|
||||||
|
DelAllCmd();
|
||||||
|
}
|
||||||
|
void CCommandMgr::DelAllCmd()
|
||||||
|
{
|
||||||
|
m_UndoQueue.clear();
|
||||||
|
m_RedoQueue.clear();
|
||||||
|
}
|
||||||
|
//p 是指令特定的操作对象
|
||||||
|
void CCommandMgr::AddUndoCommand(CCommandBase *p)
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>> Vec;
|
||||||
|
AddUndoCommand(p,Vec);
|
||||||
|
}
|
||||||
|
void CCommandMgr::AddUndoCommand(CCommandBase *p,vector<Sptr<CObjBase>> &pMarkObjectVec)
|
||||||
|
{
|
||||||
|
if(p->HasOpObj()==false)
|
||||||
|
{
|
||||||
|
//加入指定的
|
||||||
|
if(pMarkObjectVec.empty()==false)
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = pMarkObjectVec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = pMarkObjectVec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
p->AddOpObj((*iter));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else//没有指定就加入当前选择的obj
|
||||||
|
{
|
||||||
|
GetLayerInstance().GetObjContainer().AddObjToCmd(p,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(p->HasOpObj()==false)//没有操作对象时不要添加指令
|
||||||
|
{
|
||||||
|
delete p;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gCommandMgr.AddUndoCommandExt(p);
|
||||||
|
}
|
||||||
|
//添加指令
|
||||||
|
void CCommandMgr::AddUndoCommandExt(CCommandBase *p)
|
||||||
|
{
|
||||||
|
//------------------------------------日志start
|
||||||
|
CLog log;
|
||||||
|
log.AddCmdLog();
|
||||||
|
log.str = p->GetStr();
|
||||||
|
gLogMgr->WriteLog(log);
|
||||||
|
//------------------------------------日志end
|
||||||
|
//保存到智能指针
|
||||||
|
Sptr<CCommandBase> sPtr(p);
|
||||||
|
|
||||||
|
m_UndoQueue.push_back(sPtr);
|
||||||
|
if(m_UndoQueue.size()>MAX_UNDO_CNT)
|
||||||
|
{
|
||||||
|
m_UndoQueue.pop_front();
|
||||||
|
}
|
||||||
|
//之前的redo 全部清除
|
||||||
|
m_RedoQueue.clear();
|
||||||
|
}
|
||||||
|
bool CCommandMgr::HasUndoCmd()
|
||||||
|
{
|
||||||
|
return !m_UndoQueue.empty();
|
||||||
|
}
|
||||||
|
bool CCommandMgr::HasRedoCmd()
|
||||||
|
{
|
||||||
|
return !m_RedoQueue.empty();
|
||||||
|
}
|
||||||
|
void CCommandMgr::Undo()
|
||||||
|
{
|
||||||
|
if(!m_UndoQueue.empty())
|
||||||
|
{
|
||||||
|
Sptr<CCommandBase> p = m_UndoQueue[m_UndoQueue.size()-1];
|
||||||
|
p->Undo();
|
||||||
|
m_RedoQueue.push_back(p);
|
||||||
|
m_UndoQueue.pop_back();
|
||||||
|
//------------------------------------日志start
|
||||||
|
CLog log;
|
||||||
|
log.AddCmdLog();
|
||||||
|
{
|
||||||
|
CString str = p->GetStr();
|
||||||
|
log.str = "_undo 撤销"+str;
|
||||||
|
}
|
||||||
|
gLogMgr->WriteLog(log);
|
||||||
|
//------------------------------------日志end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandMgr::Redo()
|
||||||
|
{
|
||||||
|
if(!m_RedoQueue.empty())
|
||||||
|
{
|
||||||
|
Sptr<CCommandBase> p = m_RedoQueue[m_RedoQueue.size()-1];
|
||||||
|
p->Excute();
|
||||||
|
m_UndoQueue.push_back(p);
|
||||||
|
m_RedoQueue.pop_back();
|
||||||
|
//------------------------------------日志start
|
||||||
|
CLog log;
|
||||||
|
log.AddCmdLog();
|
||||||
|
{
|
||||||
|
CString str = p->GetStr();
|
||||||
|
log.str = "_redo 重做"+str;
|
||||||
|
}
|
||||||
|
gLogMgr->WriteLog(log);
|
||||||
|
//------------------------------------日志end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//重置回撤指令状态
|
||||||
|
void CCommandMgr::Reset()
|
||||||
|
{
|
||||||
|
m_UndoQueue.clear();
|
||||||
|
m_RedoQueue.clear();
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CommandBase.h"
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
|
||||||
|
//³·ÏúÖ¸Áî¹ÜÀí
|
||||||
|
class CCommandMgr
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandMgr(void);
|
||||||
|
~CCommandMgr(void);
|
||||||
|
void AddUndoCommand(CCommandBase *p);
|
||||||
|
void AddUndoCommand(CCommandBase *p,vector<Sptr<CObjBase>> &pMarkObjectVec);
|
||||||
|
void AddUndoCommandExt(CCommandBase *p);
|
||||||
|
bool HasUndoCmd();
|
||||||
|
bool HasRedoCmd();
|
||||||
|
void Undo();
|
||||||
|
void Redo();
|
||||||
|
void Reset();
|
||||||
|
void DelAllCmd();
|
||||||
|
private:
|
||||||
|
deque<Sptr<CCommandBase>> m_UndoQueue;
|
||||||
|
deque<Sptr<CCommandBase>> m_RedoQueue;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CCommandMgr gCommandMgr;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandMirror.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandMirror::CCommandMirror(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandMirror::~CCommandMirror(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCommandMirror::ExcuteExt()
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(m_Par,false);
|
||||||
|
}
|
||||||
|
void CCommandMirror::UndoExt()
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(m_Par,false);
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "CommandBase.h"
|
||||||
|
class CCommandMirror :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandMirror(void);
|
||||||
|
~CCommandMirror(void);
|
||||||
|
virtual CString GetStr(){return "¾µÏñ";};
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandModifiCircle.h"
|
||||||
|
#include "ObjCircle.h"
|
||||||
|
|
||||||
|
CCommandModifiCircle::CCommandModifiCircle(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandModifiCircle::~CCommandModifiCircle(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//b 为true 时设置旧参数
|
||||||
|
void CCommandModifiCircle::SetPar(double Radius,int EdgeCnt,bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
m_OldRadius = Radius;//半径
|
||||||
|
m_OldEdgeCnt = EdgeCnt;//边数
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_Radius = Radius;//半径
|
||||||
|
m_EdgeCnt = EdgeCnt;//边数
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandModifiCircle::ExcuteExt()
|
||||||
|
{
|
||||||
|
ReCreatObj(true);
|
||||||
|
}
|
||||||
|
void CCommandModifiCircle::UndoExt()
|
||||||
|
{
|
||||||
|
ReCreatObj(false);
|
||||||
|
}
|
||||||
|
void CCommandModifiCircle::ReCreatObj(bool bExcute)
|
||||||
|
{
|
||||||
|
CObjBase *pBase = m_ObjContainer.GetCurOpObj();
|
||||||
|
if(pBase)
|
||||||
|
{
|
||||||
|
CObjCircle *p = dynamic_cast<CObjCircle*>(pBase);
|
||||||
|
if(bExcute)
|
||||||
|
{
|
||||||
|
p->ReCreat(m_Radius,m_EdgeCnt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p->ReCreat(m_OldRadius,m_OldEdgeCnt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
|
||||||
|
//修改圆
|
||||||
|
class CCommandModifiCircle :
|
||||||
|
public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandModifiCircle(void);
|
||||||
|
~CCommandModifiCircle(void);
|
||||||
|
virtual CString GetStr(){return "修改circle";};
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetPar(double Radius,int EdgeCnt,bool b);
|
||||||
|
private:
|
||||||
|
void ReCreatObj(bool bExcute);
|
||||||
|
private:
|
||||||
|
double m_OldRadius;//半径
|
||||||
|
int m_OldEdgeCnt;//边数
|
||||||
|
|
||||||
|
double m_Radius;//半径
|
||||||
|
int m_EdgeCnt;//边数
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandModifiFill.h"
|
||||||
|
|
||||||
|
CCommandModifiFill::CCommandModifiFill(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CCommandModifiFill::~CCommandModifiFill(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//b 为true 时设置旧参数
|
||||||
|
void CCommandModifiFill::SetPar(SFillPar par,bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
m_OldPar = par;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_NewPar = par;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandModifiFill::ExcuteExt()
|
||||||
|
{
|
||||||
|
m_ObjContainer.FillObj(m_NewPar,false);
|
||||||
|
}
|
||||||
|
void CCommandModifiFill::UndoExt()
|
||||||
|
{
|
||||||
|
m_ObjContainer.FillObj(m_OldPar,false);
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
#include "SFillPar.h"
|
||||||
|
|
||||||
|
//填充
|
||||||
|
class CCommandModifiFill :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandModifiFill(void);
|
||||||
|
~CCommandModifiFill(void);
|
||||||
|
virtual CString GetStr(){return "修改fill";};
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetPar(SFillPar par,bool b);
|
||||||
|
private:
|
||||||
|
//字体参数
|
||||||
|
SFillPar m_OldPar;
|
||||||
|
SFillPar m_NewPar;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandModifiFont.h"
|
||||||
|
#include "ObjTxt.h"
|
||||||
|
|
||||||
|
CCommandModifiFont::CCommandModifiFont(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CCommandModifiFont::~CCommandModifiFont(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//b Ϊtrue ʱÉèÖþɲÎÊý
|
||||||
|
void CCommandModifiFont::SetStringPar(SFontPar &par,bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
m_OldFontPar = par;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_NewFontPar = par;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandModifiFont::ExcuteExt()
|
||||||
|
{
|
||||||
|
ReCreatObj(true);
|
||||||
|
}
|
||||||
|
void CCommandModifiFont::UndoExt()
|
||||||
|
{
|
||||||
|
ReCreatObj(false);
|
||||||
|
}
|
||||||
|
void CCommandModifiFont::ReCreatObj(bool bExcute)
|
||||||
|
{
|
||||||
|
CObjBase *pBase = m_ObjContainer.GetCurOpObj();
|
||||||
|
if(pBase)
|
||||||
|
{
|
||||||
|
CObjTxt *p = dynamic_cast<CObjTxt*>(pBase);
|
||||||
|
if(bExcute)
|
||||||
|
{
|
||||||
|
p->SetFontPar(m_NewFontPar);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p->SetFontPar(m_OldFontPar);
|
||||||
|
}
|
||||||
|
p->Creat();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
#include "SFontPar.h"
|
||||||
|
|
||||||
|
class CCommandModifiFont :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandModifiFont(void);
|
||||||
|
~CCommandModifiFont(void);
|
||||||
|
virtual CString GetStr(){return "修改font";};
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetStringPar(SFontPar &par,bool b);
|
||||||
|
private:
|
||||||
|
void ReCreatObj(bool bExcute);
|
||||||
|
private:
|
||||||
|
//字体参数
|
||||||
|
SFontPar m_OldFontPar;
|
||||||
|
SFontPar m_NewFontPar;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandModifiString.h"
|
||||||
|
#include "ObjTxt.h"
|
||||||
|
|
||||||
|
CCommandModifiString::CCommandModifiString()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandModifiString::~CCommandModifiString(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//b 为true 时设置旧参数
|
||||||
|
void CCommandModifiString::SetStringPar(SStringPar &par,bool b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
m_OldStringPar.Copy(par);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_NewStringPar.Copy(par);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandModifiString::ExcuteExt()
|
||||||
|
{
|
||||||
|
ReCreatObj(true);
|
||||||
|
}
|
||||||
|
void CCommandModifiString::UndoExt()
|
||||||
|
{
|
||||||
|
ReCreatObj(false);
|
||||||
|
}
|
||||||
|
void CCommandModifiString::ReCreatObj(bool bExcute)
|
||||||
|
{
|
||||||
|
CObjBase *pBase = m_ObjContainer.GetCurOpObj();
|
||||||
|
if(pBase)
|
||||||
|
{
|
||||||
|
CObjString *p = dynamic_cast<CObjString*>(pBase);
|
||||||
|
if(bExcute)
|
||||||
|
{
|
||||||
|
//可变文本
|
||||||
|
p->SetValStr(m_NewStringPar.m_ValString);
|
||||||
|
//字体
|
||||||
|
p->SetFontTypeName(m_NewStringPar.m_FontTypeName);
|
||||||
|
p->SetFontName(m_NewStringPar.m_FontName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//可变文本
|
||||||
|
p->SetValStr(m_OldStringPar.m_ValString);
|
||||||
|
//字体
|
||||||
|
p->SetFontTypeName(m_OldStringPar.m_FontTypeName);
|
||||||
|
p->SetFontName(m_OldStringPar.m_FontName);
|
||||||
|
}
|
||||||
|
p->Creat();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
#include "SStringPar.h"
|
||||||
|
|
||||||
|
//修改合成对象
|
||||||
|
class CCommandModifiString :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandModifiString();
|
||||||
|
~CCommandModifiString(void);
|
||||||
|
virtual CString GetStr(){return "修改string";};
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetStringPar(SStringPar &par,bool b);
|
||||||
|
private:
|
||||||
|
void ReCreatObj(bool bExcute);
|
||||||
|
private:
|
||||||
|
SStringPar m_OldStringPar;
|
||||||
|
SStringPar m_NewStringPar;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandMove.h"
|
||||||
|
|
||||||
|
CCommandMove::CCommandMove(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandMove::~CCommandMove(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CString CCommandMove::GetStr()
|
||||||
|
{
|
||||||
|
CString str1 = "_move ÒÆ¶¯--------[¾àÀëx ] : <";
|
||||||
|
CString str2;
|
||||||
|
str2.Format("%lf",m_Par.MoveX);
|
||||||
|
CString str3 = "> [¾àÀëy ] : <";
|
||||||
|
CString str4;
|
||||||
|
str4.Format("%lf",m_Par.MoveY);
|
||||||
|
CString str5 = ">";
|
||||||
|
return str1+str2+str3+str4+str5;
|
||||||
|
}
|
||||||
|
void CCommandMove::ExcuteExt()
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(m_Par,false);
|
||||||
|
}
|
||||||
|
void CCommandMove::UndoExt()
|
||||||
|
{
|
||||||
|
//·´ÏòÒÆ¶¯
|
||||||
|
SObjOperatePar par = m_Par;
|
||||||
|
par.MoveX = par.MoveX*(-1);
|
||||||
|
par.MoveY = par.MoveY*(-1);
|
||||||
|
m_ObjContainer.OperateObj(par,false);
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "CommandBase.h"
|
||||||
|
|
||||||
|
class CCommandMove :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandMove(void);
|
||||||
|
~CCommandMove(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandMoveNode.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandMoveNode::CCommandMoveNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandMoveNode::~CCommandMoveNode(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CString CCommandMoveNode::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_moveNode 移动节点";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
void CCommandMoveNode::SetPar(int idx,Dbxy OldPt,Dbxy NewPt)
|
||||||
|
{
|
||||||
|
m_NodeIdx = idx;//操作node 节点的索引值
|
||||||
|
m_OldPt = OldPt;//旧的坐标
|
||||||
|
m_NewPt = NewPt;//新的坐标
|
||||||
|
}
|
||||||
|
void CCommandMoveNode::ExcuteExt()
|
||||||
|
{
|
||||||
|
SetNode(true);
|
||||||
|
}
|
||||||
|
void CCommandMoveNode::UndoExt()
|
||||||
|
{
|
||||||
|
SetNode(false);
|
||||||
|
}
|
||||||
|
void CCommandMoveNode::SetNode(bool bExcute)
|
||||||
|
{
|
||||||
|
CObjBase *pBase = m_ObjContainer.GetCurOpObj();
|
||||||
|
if(pBase)
|
||||||
|
{
|
||||||
|
if(bExcute)
|
||||||
|
{
|
||||||
|
pBase->SetNodePtByIdx(m_NodeIdx,m_NewPt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pBase->SetNodePtByIdx(m_NodeIdx,m_OldPt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
class CCommandMoveNode :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandMoveNode(void);
|
||||||
|
~CCommandMoveNode(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetPar(int idx,Dbxy OldPt,Dbxy NewPt);
|
||||||
|
private:
|
||||||
|
void SetNode(bool bExcute);
|
||||||
|
private:
|
||||||
|
int m_NodeIdx;//操作node 节点的索引值
|
||||||
|
Dbxy m_OldPt;//旧的坐标
|
||||||
|
Dbxy m_NewPt;//新的坐标
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandReverse.h"
|
||||||
|
#include "Layer.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandReverse::CCommandReverse(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandReverse::~CCommandReverse(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCommandReverse::ExcuteExt()
|
||||||
|
{
|
||||||
|
Operater();
|
||||||
|
}
|
||||||
|
void CCommandReverse::UndoExt()
|
||||||
|
{
|
||||||
|
Operater();
|
||||||
|
}
|
||||||
|
CString CCommandReverse::GetStr()
|
||||||
|
{
|
||||||
|
CString str = "_reverse ·´×ª½áµã˳Ðò-----";
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
if(vec.empty()==false)
|
||||||
|
{
|
||||||
|
CString str1;
|
||||||
|
str1.Format("%ld",vec.size());
|
||||||
|
str +="[¶ÔÏóÊýÁ¿] : <"+str1+">";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
void CCommandReverse::Operater()
|
||||||
|
{
|
||||||
|
vector<Sptr<CObjBase>> &vec = m_ObjContainer.GetObjVec();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter = vec.begin();
|
||||||
|
vector<Sptr<CObjBase>>::iterator iter_end = vec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsNull()==false)
|
||||||
|
{
|
||||||
|
(*iter)->Operate(m_Par);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandbase.h"
|
||||||
|
//反转节点顺序
|
||||||
|
class CCommandReverse :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandReverse(void);
|
||||||
|
~CCommandReverse(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
private:
|
||||||
|
void Operater();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandRotato.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandRotato::CCommandRotato(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCommandRotato::~CCommandRotato(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CString CCommandRotato::GetStr()
|
||||||
|
{
|
||||||
|
CString str1 = "_rotato Ðýת-------- [½Ç¶È] : <";
|
||||||
|
double angle = m_Par.Angle;
|
||||||
|
if(angle>180)
|
||||||
|
{
|
||||||
|
angle = (360-angle)*(-1);
|
||||||
|
}
|
||||||
|
CString str2;
|
||||||
|
str2.Format("%lf",angle);
|
||||||
|
CString str3 = ">";
|
||||||
|
return str1+str2+str3;
|
||||||
|
}
|
||||||
|
void CCommandRotato::ExcuteExt()
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(m_Par,false);
|
||||||
|
}
|
||||||
|
void CCommandRotato::UndoExt()
|
||||||
|
{
|
||||||
|
SObjOperatePar par = m_Par;
|
||||||
|
par.Angle = par.Angle*(-1);
|
||||||
|
m_ObjContainer.OperateObj(par,false);
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "CommandBase.h"
|
||||||
|
class CCommandRotato :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandRotato(void);
|
||||||
|
~CCommandRotato(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CommandStretch.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCommandStretch::CCommandStretch(void)
|
||||||
|
{
|
||||||
|
m_bSetXY = false;//是否同时设置XY 方向
|
||||||
|
}
|
||||||
|
CCommandStretch::~CCommandStretch(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CString CCommandStretch::GetStr()
|
||||||
|
{
|
||||||
|
CString str1 = "_stretch 拉伸-------- [方向] : <";
|
||||||
|
CString str2;
|
||||||
|
if(m_Par.xy == _X)
|
||||||
|
str2 = "X> [旧尺寸] : <";
|
||||||
|
else
|
||||||
|
str2 = "Y> [旧尺寸] : <";
|
||||||
|
CString str3;
|
||||||
|
str3.Format("%lf",m_Par.OldSize);
|
||||||
|
CString str4 = "> [新尺寸] : <";
|
||||||
|
CString str5;
|
||||||
|
str5.Format("%lf",m_Par.NewSize);
|
||||||
|
CString str6 = ">";
|
||||||
|
return str1+str2+str3+str4+str5+str6;
|
||||||
|
};
|
||||||
|
void CCommandStretch::SetOperateParY(SObjOperatePar par)
|
||||||
|
{
|
||||||
|
m_bSetXY = true;//是否同时设置XY 方向
|
||||||
|
m_ParY = par;
|
||||||
|
};
|
||||||
|
void CCommandStretch::ExcuteExt()
|
||||||
|
{
|
||||||
|
if(m_bSetXY)
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(m_Par,true);
|
||||||
|
m_ObjContainer.OperateObj(m_ParY,true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(m_Par,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCommandStretch::UndoExt()
|
||||||
|
{
|
||||||
|
SObjOperatePar par = m_Par;
|
||||||
|
par.OpType = _OP_STRETCH;
|
||||||
|
par.BasePt = m_Par.BasePt;
|
||||||
|
par.OldSize = m_Par.NewSize;
|
||||||
|
par.Diff = m_Par.Diff*(-1);
|
||||||
|
par.xy = m_Par.xy;
|
||||||
|
|
||||||
|
SObjOperatePar parY = m_ParY;
|
||||||
|
parY.OpType = _OP_STRETCH;
|
||||||
|
parY.BasePt = m_ParY.BasePt;
|
||||||
|
parY.OldSize = m_ParY.NewSize;
|
||||||
|
parY.Diff = m_ParY.Diff*(-1);
|
||||||
|
parY.xy = m_ParY.xy;
|
||||||
|
|
||||||
|
if(m_bSetXY)
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(par,true);
|
||||||
|
m_ObjContainer.OperateObj(parY,true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_ObjContainer.OperateObj(par,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "commandBase.h"
|
||||||
|
class CCommandStretch :public CCommandBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCommandStretch(void);
|
||||||
|
~CCommandStretch(void);
|
||||||
|
virtual CString GetStr();
|
||||||
|
virtual void ExcuteExt();
|
||||||
|
virtual void UndoExt();
|
||||||
|
void SetOperateParY(SObjOperatePar par);
|
||||||
|
private:
|
||||||
|
bool m_bSetXY;//是否同时设置XY 方向
|
||||||
|
SObjOperatePar m_ParY;//操作参数
|
||||||
|
};
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
|
||||||
|
//创建抓取定位点的指令
|
||||||
|
class CCreaterCatchMark :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterCatchMark(const CString &str);
|
||||||
|
~CCreaterCatchMark(void);
|
||||||
|
virtual void Creat();
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterCatchMarkFlow.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "WorkCmdMovePlatformXY.h"
|
||||||
|
#include "CameraKeyence.h"
|
||||||
|
#include "WorkCmdCameraCatch.h"
|
||||||
|
#include "ProductMgr.h"
|
||||||
|
#include "ObjComponentMgr.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CCreaterCatchMarkFlow::CCreaterCatchMarkFlow(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterCatchMarkFlow::~CCreaterCatchMarkFlow(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterCatchMarkFlow::Creat()
|
||||||
|
{
|
||||||
|
//×Ô¶¯ÅŲ¼Ê±²»Òª×¥È¡
|
||||||
|
if(gObjComponentMgr->IsAutoArray())
|
||||||
|
return;
|
||||||
|
|
||||||
|
vector<CProduct> &ProductVec = gProductMgr->GetProductVec();
|
||||||
|
vector<CProduct>::iterator iter = ProductVec.begin();
|
||||||
|
vector<CProduct>::iterator iter_end = ProductVec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
CreatExt(*iter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCreaterCatchMarkFlow::CreatExt(CProduct &Product)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
class CProduct;
|
||||||
|
//创建抓取定位点的流程
|
||||||
|
class CCreaterCatchMarkFlow :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterCatchMarkFlow(const CString &str);
|
||||||
|
~CCreaterCatchMarkFlow(void);
|
||||||
|
virtual void Creat();
|
||||||
|
private:
|
||||||
|
void CreatExt(CProduct &Product);
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterCutFlow.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "MarkAreaMgr.h"
|
||||||
|
#include "WorkCmdMovePlatformXY.h"
|
||||||
|
#include "WorkCmdPciPortSwitch.h"
|
||||||
|
#include "Laser.h"
|
||||||
|
#include "PciPortMgr.h"
|
||||||
|
|
||||||
|
#define MARK_ALL "ALL"
|
||||||
|
#define MARK_SEL "SEL"
|
||||||
|
|
||||||
|
CCreaterCutFlow::CCreaterCutFlow(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterCutFlow::~CCreaterCutFlow(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//根据工作区域的数据来创建切割流程
|
||||||
|
void CCreaterCutFlow::Creat()
|
||||||
|
{
|
||||||
|
//参数1 表示是否全部加工
|
||||||
|
CString MarkType = GetPar(1);
|
||||||
|
//搜集工作数据-------------------------------------------------
|
||||||
|
if(MarkType == MARK_SEL)
|
||||||
|
CollectWorkData(true);
|
||||||
|
else
|
||||||
|
CollectWorkData(false);
|
||||||
|
|
||||||
|
//使用数据来创建工作流程
|
||||||
|
vector<CMarkArea> &AreaVec = gMarkAreaMgr->GetAreaVec();
|
||||||
|
vector<CMarkArea>::iterator iter = AreaVec.begin();
|
||||||
|
vector<CMarkArea>::iterator iter_end = AreaVec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
vector<vector<Dbxy>> &Vec = (*iter).GetDataVec();
|
||||||
|
CreatExt(Vec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCreaterCutFlow::CreatExt(vector<vector<Dbxy>> &Vec)
|
||||||
|
{
|
||||||
|
vector<vector<Dbxy>>::iterator iter = Vec.begin();
|
||||||
|
vector<vector<Dbxy>>::iterator iter_end = Vec.end();
|
||||||
|
for(int i=0;iter!=iter_end;i++,iter++)
|
||||||
|
{
|
||||||
|
vector<Dbxy>::iterator iter1 = (*iter).begin();
|
||||||
|
vector<Dbxy>::iterator iter1_end = (*iter).end();
|
||||||
|
for(;iter1!=iter1_end;iter1++)
|
||||||
|
{
|
||||||
|
//移动平台---------------------------------------------
|
||||||
|
{
|
||||||
|
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
|
||||||
|
pCmd->MoveToTargetPt((*iter1),gLaser->GetCoord());
|
||||||
|
if(iter1 != (*iter).begin())//移动到第一个点是空移
|
||||||
|
{
|
||||||
|
pCmd->InWorkState();//其他点是工作点
|
||||||
|
}
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
//开激光-------------------------------------------------
|
||||||
|
if(iter1==(*iter).begin())
|
||||||
|
{
|
||||||
|
CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER,true);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//关激光-------------------------------------------------
|
||||||
|
{
|
||||||
|
CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER,false);
|
||||||
|
pCmd->CanNotCancel();//不能取消
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
//根据workarea 内的obj 数据来创建切割工作流程
|
||||||
|
class CCreaterCutFlow :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterCutFlow(const CString &str);
|
||||||
|
~CCreaterCutFlow(void);
|
||||||
|
virtual void Creat();
|
||||||
|
private:
|
||||||
|
void CreatExt(vector<vector<Dbxy>> &Vec);
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterDeviceParReset.h"
|
||||||
|
#include "WorkCmdDeviceParReset.h"
|
||||||
|
|
||||||
|
CCreaterDeviceParReset::CCreaterDeviceParReset(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterDeviceParReset::~CCreaterDeviceParReset(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterDeviceParReset::Creat()
|
||||||
|
{
|
||||||
|
CWorkCmd *pCmd = new CWorkCmdDeviceParReset;
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
//设备参数复位
|
||||||
|
class CCreaterDeviceParReset :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterDeviceParReset(const CString &str);
|
||||||
|
~CCreaterDeviceParReset(void);
|
||||||
|
virtual void Creat();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterMarkFlow.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "MarkAreaMgr.h"
|
||||||
|
#include "WorkCmdMovePlatformXY.h"
|
||||||
|
#include "Laser.h"
|
||||||
|
#include "WorkCmdMarkArea.h"
|
||||||
|
#include "ProductMgr.h"
|
||||||
|
#include "Motor.h"
|
||||||
|
#include "WorkCmdMoveMotor.h"
|
||||||
|
|
||||||
|
#define MARK_ALL "ALL"
|
||||||
|
#define MARK_SEL "SEL"
|
||||||
|
|
||||||
|
CCreaterMarkFlow::CCreaterMarkFlow(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterMarkFlow::~CCreaterMarkFlow(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//根据工作区域的数据来创建
|
||||||
|
void CCreaterMarkFlow::Creat()
|
||||||
|
{
|
||||||
|
//参数1 表示是否全部加工
|
||||||
|
CString MarkType = GetPar(1);
|
||||||
|
bool bMarkSel = (MarkType == MARK_SEL);
|
||||||
|
|
||||||
|
vector<CProduct> &ProductVec = gProductMgr->GetProductVec();
|
||||||
|
vector<CProduct>::iterator iter = ProductVec.begin();
|
||||||
|
vector<CProduct>::iterator iter_end = ProductVec.end();
|
||||||
|
for(int i=0;iter!=iter_end;i++,iter++)
|
||||||
|
{
|
||||||
|
if((*iter).IsUsed())
|
||||||
|
{
|
||||||
|
//设置当前的工件,用来计算偏移旋转
|
||||||
|
gProductMgr->SetCurProductIdx(i);
|
||||||
|
CreatExt(bMarkSel);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
if(iter!=iter_end-1)//加工完一个先移动回原点
|
||||||
|
{
|
||||||
|
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
|
||||||
|
Dbxy MovePt;
|
||||||
|
Dbxy TargetPt;
|
||||||
|
pCmd->MoveToTargetPt(MovePt,TargetPt);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CCreaterMarkFlow::CreatExt(bool bMarkSel)
|
||||||
|
{
|
||||||
|
//搜集工作数据-------------------------------------------------
|
||||||
|
CollectWorkData(bMarkSel);
|
||||||
|
|
||||||
|
//以area 的中心点转换数据-------------------------------
|
||||||
|
CMarkAreaMgr *MarkAreaMgr = gMarkAreaMgr;
|
||||||
|
//使用数据来创建工作流程----------------------------
|
||||||
|
vector<CMarkArea> &AreaVec = MarkAreaMgr->GetAreaVec();
|
||||||
|
vector<CMarkArea>::iterator iter = AreaVec.begin();
|
||||||
|
vector<CMarkArea>::iterator iter_end = AreaVec.end();
|
||||||
|
for(;iter!=iter_end;iter++)
|
||||||
|
{
|
||||||
|
if((*iter).HasWorkData())
|
||||||
|
{
|
||||||
|
//移动area 实际中心点到振镜中心
|
||||||
|
{
|
||||||
|
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
|
||||||
|
// pCmd->MoveToTargetPt((*iter).GetRealBasePt(),gLaser->GetCoord());
|
||||||
|
pCmd->InWorkState();//工作速度
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
//变焦次数
|
||||||
|
int FocalAdjustCnt = gProductMgr->GetFocalAdjustCnt();
|
||||||
|
double FocalAdjustDis = gProductMgr->GetFocalAdjustDis();
|
||||||
|
|
||||||
|
for(int i=0;i<FocalAdjustCnt+1;++i)
|
||||||
|
{
|
||||||
|
//标刻当前area
|
||||||
|
{
|
||||||
|
CWorkCmdMarkArea *pCmd = new CWorkCmdMarkArea((*iter));
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
//变焦
|
||||||
|
if(FocalAdjustCnt>0 && !IsDbEqualZero(FocalAdjustDis) && i<FocalAdjustCnt)
|
||||||
|
{
|
||||||
|
CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z));
|
||||||
|
CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor,FocalAdjustDis);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//焦距回调
|
||||||
|
if(FocalAdjustCnt>0 && !IsDbEqualZero(FocalAdjustDis))
|
||||||
|
{
|
||||||
|
for(int i=0;i<FocalAdjustCnt;i++)
|
||||||
|
{
|
||||||
|
CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z));
|
||||||
|
CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor,FocalAdjustDis*(-1));
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
//´´½¨Æ½Ãæ±ê¿ÌÁ÷³Ì
|
||||||
|
class CCreaterMarkFlow :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterMarkFlow(const CString &str);
|
||||||
|
~CCreaterMarkFlow(void);
|
||||||
|
virtual void Creat();
|
||||||
|
private:
|
||||||
|
void CreatExt(bool bMarkSel);
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterMotorCheckLimit.h"
|
||||||
|
|
||||||
|
|
||||||
|
CCreaterMotorCheckLimit::CCreaterMotorCheckLimit(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterMotorCheckLimit::~CCreaterMotorCheckLimit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterMotorCheckLimit::Creat()
|
||||||
|
{
|
||||||
|
CWorkCmd *pCmd = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
//检查电机限位
|
||||||
|
class CCreaterMotorCheckLimit :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterMotorCheckLimit(const CString &str);
|
||||||
|
~CCreaterMotorCheckLimit(void);
|
||||||
|
virtual void Creat();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterMotorToMachineOrigin.h"
|
||||||
|
#include "WorkCmdMotorToMachineOrigin.h"
|
||||||
|
|
||||||
|
CCreaterMotorToMachineOrigin::CCreaterMotorToMachineOrigin(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterMotorToMachineOrigin::~CCreaterMotorToMachineOrigin(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterMotorToMachineOrigin::Creat()
|
||||||
|
{
|
||||||
|
CWorkCmd *pCmd = NULL;
|
||||||
|
//参数1 表示那个电机
|
||||||
|
CString Motor = GetPar(1);
|
||||||
|
pCmd = new CWorkCmdMotorToMachineOrigin(*(CMotor::GetMotor(Motor)));
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
//创建电机移动到机械原点的指令
|
||||||
|
class CCreaterMotorToMachineOrigin :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterMotorToMachineOrigin(const CString &str);
|
||||||
|
~CCreaterMotorToMachineOrigin(void);
|
||||||
|
virtual void Creat();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterMotorToOffsetPos.h"
|
||||||
|
#include "WorkCmdMotorToOffsetPos.h"
|
||||||
|
#include "Laser.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CCreaterMotorToOffsetPos::CCreaterMotorToOffsetPos(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterMotorToOffsetPos::~CCreaterMotorToOffsetPos(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterMotorToOffsetPos::Creat()
|
||||||
|
{
|
||||||
|
CWorkCmdMotorToOffsetPos *pCmd = NULL;
|
||||||
|
//参数1 表示那个电机
|
||||||
|
CString Motor = GetPar(1);
|
||||||
|
pCmd = new CWorkCmdMotorToOffsetPos(*(CMotor::GetMotor(Motor)));
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
class CCreaterMotorToOffsetPos :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterMotorToOffsetPos(const CString &str);
|
||||||
|
~CCreaterMotorToOffsetPos(void);
|
||||||
|
virtual void Creat();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterMsg.h"
|
||||||
|
#include "WorkCmdMsg.h"
|
||||||
|
|
||||||
|
CCreaterMsg::CCreaterMsg(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterMsg::~CCreaterMsg(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterMsg::Creat()
|
||||||
|
{
|
||||||
|
//参数1 表示提示内容
|
||||||
|
CString msg = GetPar(1);
|
||||||
|
CWorkCmd *pCmd = NULL;
|
||||||
|
pCmd = new CWorkCmdMsg(msg);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
|
||||||
|
|
||||||
|
//创建提示信息
|
||||||
|
class CCreaterMsg :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterMsg(const CString &str);
|
||||||
|
~CCreaterMsg(void);
|
||||||
|
virtual void Creat();
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterPciPortCheck.h"
|
||||||
|
#include "WorkCmdPciPortCheck.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "CStringFuc.h"
|
||||||
|
|
||||||
|
CCreaterPciPortCheck::CCreaterPciPortCheck(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterPciPortCheck::~CCreaterPciPortCheck(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterPciPortCheck::Creat()
|
||||||
|
{
|
||||||
|
|
||||||
|
//参数1 表示端口控制的内容
|
||||||
|
CString CtrlContent = GetPar(1);
|
||||||
|
//参数2 表示希望这个端口是开还是关
|
||||||
|
bool NeedState = Str2Bool(GetPar(2));
|
||||||
|
//最大检测时间
|
||||||
|
int MaxDelay = CStringToInt(GetPar(3));
|
||||||
|
|
||||||
|
CWorkCmdPciPortCheck *pCmd = new CWorkCmdPciPortCheck(CtrlContent,NeedState);
|
||||||
|
if(MaxDelay>0)
|
||||||
|
{
|
||||||
|
pCmd->SetMaxCheckDelay(MaxDelay);
|
||||||
|
}
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
class CCreaterPciPortCheck :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterPciPortCheck(const CString &str);
|
||||||
|
~CCreaterPciPortCheck(void);
|
||||||
|
virtual void Creat();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterPciPortSwitch.h"
|
||||||
|
#include "WorkCmdPciPortSwitch.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "CStringFuc.h"
|
||||||
|
|
||||||
|
CCreaterPciPortSwitch::CCreaterPciPortSwitch(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterPciPortSwitch::~CCreaterPciPortSwitch(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterPciPortSwitch::Creat()
|
||||||
|
{
|
||||||
|
//参数1 表示端口控制的内容
|
||||||
|
CString CtrlContent = GetPar(1);
|
||||||
|
//参数2 表示打开还是关闭
|
||||||
|
bool bOpen = Str2Bool(GetPar(2));
|
||||||
|
CWorkCmd *pCmd = NULL;
|
||||||
|
pCmd = new CWorkCmdPciPortSwitch(CtrlContent,bOpen);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "createrworkcmd.h"
|
||||||
|
class CCreaterPciPortSwitch :public CCreaterWorkCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CCreaterPciPortSwitch(const CString &str);
|
||||||
|
~CCreaterPciPortSwitch(void);
|
||||||
|
virtual void Creat();
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
#include "StdAfx.h"
|
||||||
|
#include "CreaterPlatformMove.h"
|
||||||
|
#include "WorkCmdPciPortCheck.h"
|
||||||
|
#include "GlobalFunction.h"
|
||||||
|
#include "WorkCmdMovePlatformXY.h"
|
||||||
|
|
||||||
|
|
||||||
|
//移动到原点
|
||||||
|
#define TO_ORIGIN _T("TO_ORIGIN")
|
||||||
|
//移动到取料点
|
||||||
|
#define TO_WORK_PT _T("TO_WORK_PT")
|
||||||
|
|
||||||
|
|
||||||
|
CCreaterPlatformMove::CCreaterPlatformMove(const CString &str)
|
||||||
|
:CCreaterWorkCmd(str)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
CCreaterPlatformMove::~CCreaterPlatformMove(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CCreaterPlatformMove::Creat()
|
||||||
|
{
|
||||||
|
//参数1 表示端口控制的内容
|
||||||
|
CString MoveMode = GetPar(1);
|
||||||
|
if(MoveMode == TO_ORIGIN)//返回工作原点
|
||||||
|
{
|
||||||
|
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
|
||||||
|
Dbxy MovePt;
|
||||||
|
Dbxy TargetPt;
|
||||||
|
#ifdef __PROGRAM_SHILAN_TUIHUO__
|
||||||
|
pCmd->SetMoveOrder(2);//Y 轴先动
|
||||||
|
#endif
|
||||||
|
pCmd->MoveToTargetPt(MovePt,TargetPt);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
else if(MoveMode == TO_WORK_PT)//取料点
|
||||||
|
{
|
||||||
|
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
|
||||||
|
Dbxy MovePt;
|
||||||
|
Dbxy TargetPt(gPlatformXY->GetProductPoint());
|
||||||
|
|
||||||
|
#ifdef __LPS_IS3000__
|
||||||
|
pCmd->SetMoveOrder(2);//X 轴先动
|
||||||
|
#endif
|
||||||
|
pCmd->MoveToTargetPt(MovePt,TargetPt);
|
||||||
|
AddCmd(pCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue