mirror of
http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
synced 2025-10-18 03:19:43 +08:00
147 lines
5.4 KiB
C++
147 lines
5.4 KiB
C++
#pragma once
|
||
#include "pch.h"
|
||
#include "AbstractPort.h"
|
||
using namespace std;
|
||
// #ifdef IRIS_API_EXPORTS
|
||
//
|
||
// #ifdef __cplusplus
|
||
// #define IRIS_API_FUNC extern "C" __declspec(dllexport)
|
||
// #else
|
||
// #define IRIS_API_FUNC __declspec(dllexport)
|
||
// #endif
|
||
//
|
||
// #else
|
||
//
|
||
// #ifdef __cplusplus
|
||
// #define IRIS_API_FUNC extern "C" __declspec(dllimport)
|
||
// #else
|
||
// #define IRIS_API_FUNC __declspec(dllimport)
|
||
// #endif
|
||
//
|
||
// #endif
|
||
//
|
||
//
|
||
// #ifdef IRIS_API_EXPORTS
|
||
// #define IRIS_API_CLASS __declspec(dllexport)
|
||
// #else
|
||
// #define IRIS_API_CLASS __declspec(dllimport)
|
||
// #endif
|
||
#define MAXDISTANCE 1265000
|
||
class /*IRIS_API_CLASS*/ CVSMD12XControl
|
||
{
|
||
public:
|
||
CVSMD12XControl();
|
||
~CVSMD12XControl();
|
||
private:
|
||
int *m_piPositionInPulses;
|
||
|
||
CAbstractPort *m_pAbsPort;
|
||
unValue m_unValue;
|
||
MSInfo m_stuMSInfo;
|
||
ControllerParams m_stuControllerParams;
|
||
int m_iProtocolType;
|
||
int m_iCID;
|
||
std::string m_strCID;
|
||
public:
|
||
bool m_bIsSyncMove;
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//for IRIS Linear Motor - Electric Shutter
|
||
//Initialize communication setup iPortType(0:RS232 1:RS485) iCID(For RS485 device) bSyncMove(move mode)
|
||
bool ILMES_InitializeComm(QString portName,int bandrate=9600, int iPortType = 1, int iCID = 1, bool bSyncMove = true);
|
||
//Initialize communication setup iPortType(0:RS232 1:RS485) iCID(For RS485 device) bSyncMove(move mode)
|
||
bool ILMES_InitializeComm(PortInfo portinfo,int iPortType = 1,int iCID = 1, bool bSyncMove = true);
|
||
|
||
//Initialize Controller params
|
||
bool ILMES_InitializeParams(ControllerParams cpParams);
|
||
|
||
//Set the light hole position(pulses)
|
||
void ILMES_SetPosition(int *piPositionInPulse,size_t szSize);
|
||
|
||
bool ILMES_MoveToPos(int iPositionIndex);
|
||
|
||
public:
|
||
int waitetime;
|
||
////init port
|
||
void SetProtocolType(int iProtocolType = 0);//0:RS232 1:RS485 call before send any command
|
||
void SetCID(int iID);//set device id when using RS485 protocol call before send any command
|
||
void SetSyncMode(bool bSyncMove = false);
|
||
bool InitAndOpenPort(PortInfo portinfo);//Init comport by PortInfo Struct
|
||
|
||
//////////////////////////////////////////////////////////////////////////for debug or unsupported function
|
||
std::string ReadReceive();
|
||
int SendCommand(const std::string strSend); // return indicates how many char has been sent
|
||
//////////////////////////////////////////////////////////////////////////motor control
|
||
////init&misc
|
||
bool InitController(); //Init Motor controller hand shake
|
||
|
||
bool Enable(); //enbale
|
||
bool Disable(); //disable
|
||
|
||
bool GetStatus(MSInfo &stuMotorParam); //load motor status see MSInfo Struct
|
||
////motion control
|
||
bool Move(int iRelPulse); // relative move mode,pulse (-2147483647<34><37>2147483647)
|
||
bool MoveTo(int iAbsPulse);//absolute mode,pulse (-2147483647<34><37>2147483647)
|
||
bool Move_NoSyn(int iRelPulse); // relative move mode,pulse (-2147483647<34><37>2147483647)
|
||
bool MoveTo_NoSyn(int iAbsPulse);//absolute mode,pulse (-2147483647<34><37>2147483647)
|
||
bool SetLogicZero(); //set logic zero
|
||
|
||
bool StartBackZero();//back zero
|
||
bool StopBackZero();// stop back zero & reset register
|
||
////Set&Get
|
||
bool SetBaudRate(int iBaudRate);//set controller baud rates,default B9600 (2400 <20><> 921600)
|
||
int GetBaudRate(); // -1:should retry;
|
||
|
||
bool SetMicroSteps(int iMicroSteps);//set micro steps (0<><30>5)->(1/2/4/8/16/32)
|
||
int GetMicroSteps();
|
||
|
||
bool SetAccSpeed(float fAccSpd);//set acceleration speed in pulse (0 <20><> 192000000)
|
||
float GetAccSpeed();
|
||
|
||
bool SetRunSpeed(float fRunSpeed);//set normal running speed in pulse (0 <20><> 192000000)
|
||
float GetRunSpeed();
|
||
|
||
bool SetDecSpeed(float fDecSpeed);//set deceleration speed in pulse (0 <20><> 192000000)
|
||
float GetDecSpeed();
|
||
|
||
bool SetSpeed(float fRunSpeed, float fAccSpd, float fDecSpeed);//see above three functions
|
||
|
||
bool SetHoldCurrent(float fHoldCurrent);//set hold current ( 0 <20><> 8.0 )Amp? pay attention to your motor specification.
|
||
float GetHoldCurrent();
|
||
|
||
bool SetAccCurrent(float fAccCurrent);//set acceleration current ( 0 <20><> 8.0 )Amp? pay attention to your motor specification.
|
||
float GetAccCurrent();
|
||
|
||
bool SetRunCurrent(float fRunCurrent);//set normal running current ( 0 <20><> 8.0 )Amp? pay attention to your motor specification.
|
||
float GetRunCurrent();
|
||
|
||
bool SetCurrent(float fAccCurrent, float fRunCurrent, float fHoldCurrent);//see above three functions
|
||
|
||
bool SetS1FETE(ZZ_U8 bS1FETE);//S1 register falling edge trigger event,see enum
|
||
ZZ_U8 GetS1FETE();
|
||
|
||
bool SetS1RETE(ZZ_U8 bS1RETE);//S1 register rising edge trigger event
|
||
ZZ_U8 GetS1RETE();
|
||
|
||
bool SetS2FETE(ZZ_U8 bS2FETE);//S2 register falling edge trigger event
|
||
ZZ_U8 GetS2FETE();
|
||
|
||
bool SetS2RETE(ZZ_U8 bS2RETE);//S2 register rising edge trigger event
|
||
ZZ_U8 GetS2RETE();
|
||
|
||
//(ZeroMode 0:off 1:once 2:once + safe position 3:twice 4:twice + safe position) (OpenVoltageLevel 0:Low Level 1:High Level)
|
||
//(ZeroSensor 0:S1 1:S2 2:S3 3:S4 4:S5 5:S6)( ZeroVelocity <20><>-192000) <20><><EFBFBD><EFBFBD>192000<30><30>pulse)(SafePosition <20><>-2147483647) <20><><EFBFBD><EFBFBD>2147483647<34><37>)
|
||
bool SetZeroParams(ZZ_U8 bZeroMode, ZZ_U8 bSwitchOpenVL, ZZ_U8 bZeroSensor, float fZeroVelocity, int iSafePosition);
|
||
ZZ_U8 GetZeroMode();
|
||
ZZ_U8 GetSwitchOpenVoltageLevel();
|
||
ZZ_U8 GetZeroSensor();
|
||
int GetSafePosition();
|
||
float GetZeroVelocity();
|
||
|
||
private:
|
||
bool ParseReturnedString(std::string &strRecv,int iType);
|
||
bool ParseReturnedParam(std::string &strRecv);
|
||
void VSMD_BitShift(ZZ_U8* src, unValue* dst);
|
||
char* VSMD_Split(char* cStr, char cSplit);
|
||
};
|
||
|