|
|
#include "IOController.h"
|
|
|
|
|
|
IOController::IOController()
|
|
|
{
|
|
|
}
|
|
|
IOController::~IOController()
|
|
|
{
|
|
|
}
|
|
|
bool IOController::controllerInitialization(unsigned int serialNum)
|
|
|
{
|
|
|
return controlCom(serialNum, 1);
|
|
|
}
|
|
|
bool IOController::controlCom(unsigned int IONum, unsigned int state)
|
|
|
{
|
|
|
std::string comName;
|
|
|
switch (IONum)
|
|
|
{
|
|
|
case 1:
|
|
|
comName = "Com1";
|
|
|
break;
|
|
|
case 2:
|
|
|
comName = "Com2";
|
|
|
break;
|
|
|
case 3:
|
|
|
comName = "Com3";
|
|
|
break;
|
|
|
case 4:
|
|
|
comName = "Com4";
|
|
|
break;
|
|
|
case 5:
|
|
|
comName = "Com5";
|
|
|
break;
|
|
|
case 6:
|
|
|
comName = "Com6";
|
|
|
break;
|
|
|
case 7:
|
|
|
comName = "Com7";
|
|
|
break;
|
|
|
case 8:
|
|
|
comName = "Com8";
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
m_comName = comName;
|
|
|
m_mpComsState[comName] = false;
|
|
|
void* handle;
|
|
|
int nRet = MV_IO_CreateHandle(&handle);
|
|
|
if (nRet != MV_OK)
|
|
|
{
|
|
|
//throw nRet;
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
m_mpComsHandle[comName] = handle;
|
|
|
}
|
|
|
if (state == 1)
|
|
|
{
|
|
|
if (!connectCom(m_mpComsHandle[comName], comName))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
else if (state == 0)
|
|
|
{
|
|
|
if (!closeCom(m_mpComsHandle[comName], comName))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
bool IOController::connectCom(void* handle, std::string comName)
|
|
|
{
|
|
|
MV_IO_SERIAL stSerial;
|
|
|
memset(&stSerial, 0, sizeof(MV_IO_SERIAL));
|
|
|
strcpy(stSerial.strComName, comName.c_str());
|
|
|
//m_mpStIOSerial[comName] = stSerial;
|
|
|
int nRet = MV_IO_Open(m_mpComsHandle[comName], &stSerial);
|
|
|
if (nRet != MV_OK)
|
|
|
{
|
|
|
//throw nRet;
|
|
|
return false;
|
|
|
}
|
|
|
m_mpComsState[comName] = true;
|
|
|
return true;
|
|
|
}
|
|
|
bool IOController::closeCom(void* handle, std::string comName)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
bool IOController::controlPort(unsigned int portNum, unsigned int state)
|
|
|
{
|
|
|
MV_IO_PORT_NUMBER stPortNumber;
|
|
|
switch(portNum)
|
|
|
{
|
|
|
case 1:
|
|
|
stPortNumber = MV_IO_PORT_1;
|
|
|
break;
|
|
|
case2:
|
|
|
stPortNumber = MV_IO_PORT_2;
|
|
|
break;
|
|
|
case 3:
|
|
|
stPortNumber = MV_IO_PORT_3;
|
|
|
break;
|
|
|
case 4:
|
|
|
stPortNumber = MV_IO_PORT_4;
|
|
|
break;
|
|
|
case 5:
|
|
|
stPortNumber = MV_IO_PORT_5;
|
|
|
break;
|
|
|
case 6:
|
|
|
stPortNumber = MV_IO_PORT_6;
|
|
|
break;
|
|
|
case 7:
|
|
|
stPortNumber = MV_IO_PORT_7;
|
|
|
break;
|
|
|
case 8:
|
|
|
stPortNumber = MV_IO_PORT_8;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
if (state == 1)
|
|
|
{
|
|
|
if (!openPort(m_comName, stPortNumber))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
else if (state == 0)
|
|
|
{
|
|
|
if (!closePort(m_comName, stPortNumber))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
bool IOController::openPort(std::string comName, MV_IO_PORT_NUMBER portNum)
|
|
|
{
|
|
|
MV_IO_SET_OUTPUT stOutput;
|
|
|
memset(&stOutput, 0, sizeof(MV_IO_SET_OUTPUT));
|
|
|
stOutput.nPort = portNum;
|
|
|
stOutput.nType = MV_IO_PATTERN_SINGLE;
|
|
|
stOutput.nDurationTime = 0;
|
|
|
stOutput.nValidLevel = 1; //<2F>ߵ<EFBFBD>ƽ
|
|
|
if ((m_mpComsHandle.find(comName) == m_mpComsHandle.end())|| (!m_mpComsState[comName]))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
int nRet = MV_IO_SetOutput(m_mpComsHandle[comName], &stOutput);
|
|
|
if (nRet != MV_OK)
|
|
|
{
|
|
|
//throw nRet;
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
bool IOController::closePort(std::string comName, MV_IO_PORT_NUMBER portNum)
|
|
|
{
|
|
|
MV_IO_SET_OUTPUT stOutput;
|
|
|
memset(&stOutput, 0, sizeof(MV_IO_SET_OUTPUT));
|
|
|
stOutput.nPort = portNum;
|
|
|
stOutput.nType = MV_IO_PATTERN_SINGLE;
|
|
|
// stOutput.nDurationTime = 3000;
|
|
|
stOutput.nValidLevel = 0; //<2F>͵<EFBFBD>ƽ
|
|
|
if ((m_mpComsHandle.find(comName) == m_mpComsHandle.end()) || (!m_mpComsState[comName]))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
int nRet = MV_IO_SetOutput(m_mpComsHandle[comName], &stOutput);
|
|
|
if (nRet != MV_OK)
|
|
|
{
|
|
|
//throw nRet;
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
bool IOController::getPortState(unsigned int portNum, unsigned int& state)
|
|
|
{
|
|
|
MV_IO_PORT_NUMBER stPortNumber;
|
|
|
switch (portNum)
|
|
|
{
|
|
|
case 1:
|
|
|
stPortNumber = MV_IO_PORT_1;
|
|
|
break;
|
|
|
case2:
|
|
|
stPortNumber = MV_IO_PORT_2;
|
|
|
break;
|
|
|
case 3:
|
|
|
stPortNumber = MV_IO_PORT_3;
|
|
|
break;
|
|
|
case 4:
|
|
|
stPortNumber = MV_IO_PORT_4;
|
|
|
break;
|
|
|
case 5:
|
|
|
stPortNumber = MV_IO_PORT_5;
|
|
|
break;
|
|
|
case 6:
|
|
|
stPortNumber = MV_IO_PORT_6;
|
|
|
break;
|
|
|
case 7:
|
|
|
stPortNumber = MV_IO_PORT_7;
|
|
|
break;
|
|
|
case 8:
|
|
|
stPortNumber = MV_IO_PORT_8;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
if (m_mpComsHandle.find(m_comName) == m_mpComsHandle.end())
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
MV_IO_SET_OUTPUT stSetOutput;
|
|
|
int nRet = MV_IO_GetPortOutputParam(m_mpComsHandle[m_comName], &stSetOutput);
|
|
|
if (nRet != MV_OK)
|
|
|
{
|
|
|
//throw nRet;
|
|
|
return false;
|
|
|
}
|
|
|
state = stSetOutput.nValidLevel;
|
|
|
return true;
|
|
|
} |