|
#include "stdafx.h"
|
#include "ExternLightControlAKPNV.h"
|
|
#ifdef _DEBUG
|
#undef THIS_FILE
|
static char THIS_FILE[]=__FILE__;
|
#define new DEBUG_NEW
|
#endif
|
|
#define ASCII_LF 0x0A
|
#define ASCII_CR 0x0D
|
//////////////////////////////////////////////////////////////////////
|
// Construction/Destruction
|
//////////////////////////////////////////////////////////////////////
|
|
CExternLightControlAKPNV::CExternLightControlAKPNV()
|
{
|
m_hLightControl = NULL;
|
}
|
|
CExternLightControlAKPNV::~CExternLightControlAKPNV()
|
{
|
CloseControl();
|
}
|
|
BOOL CExternLightControlAKPNV::OpenControl(int nPort)
|
{
|
m_nPort = nPort;
|
|
DCB dcb;
|
|
CString strPort;
|
strPort.Format(_T("COM%d"), nPort);
|
|
m_hLightControl = CreateFile( strPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
|
if (m_hLightControl == INVALID_HANDLE_VALUE)
|
{
|
CloseHandle(m_hLightControl);
|
m_hLightControl = NULL;
|
return FALSE;
|
}
|
|
dcb.DCBlength = sizeof(DCB);
|
if (GetCommState(m_hLightControl,(LPDCB) &dcb))
|
{
|
dcb.DCBlength = sizeof(DCB);
|
dcb.BaudRate = CBR_9600;
|
dcb.ByteSize = 8;
|
dcb.fParity = FALSE;
|
dcb.Parity = NOPARITY;
|
// dcb.StopBits = 1;
|
dcb.fOutxCtsFlow = 0;
|
dcb.fOutxDsrFlow = 0;
|
dcb.fOutX = 0;
|
dcb.fInX = 0;
|
|
if (!SetCommState(m_hLightControl,(LPDCB) &dcb))
|
{
|
CloseHandle(m_hLightControl);
|
m_hLightControl = NULL;
|
return FALSE;
|
}
|
}
|
else
|
{
|
CloseHandle(m_hLightControl);
|
m_hLightControl = NULL;
|
return FALSE;
|
}
|
|
return TRUE;
|
}
|
|
BOOL CExternLightControlAKPNV::CloseControl()
|
{
|
if (m_hLightControl)
|
CloseHandle(m_hLightControl);
|
m_hLightControl = NULL;
|
|
return TRUE;
|
}
|
|
BOOL CExternLightControlAKPNV::SetLightControlValue(int nChannel, int nValue)
|
{
|
if (nChannel < 0 || nChannel > MAX_LAMP_CHANNEL)
|
return FALSE;
|
if (!m_hLightControl)
|
return FALSE;
|
|
int nHigh = nValue / 16;
|
int nLow = nValue % 16;
|
|
CString hex("0123456789ABCDEF");
|
|
char Data[50];
|
memset(&Data[0],0x00,sizeof(Data));
|
|
sprintf_s(Data, "C%c%c%c%c%c", hex.GetAt(nChannel+1), hex.GetAt(nHigh), hex.GetAt(nLow), ASCII_CR, ASCII_LF);
|
|
DWORD NumberOfBytesWritten;
|
|
BOOL bRet = WriteFile( m_hLightControl,(LPCVOID) Data,6,(LPDWORD) &NumberOfBytesWritten,NULL);
|
|
m_nLightValue = nValue;
|
|
return bRet;
|
}
|
|
BOOL CExternLightControlAKPNV::IsTurnOnLamp(int iIdxChannel)
|
{
|
|
return TRUE;
|
}
|
|
BOOL CExternLightControlAKPNV::TurnOnOffLamp(int nChannel,BOOL bOn)
|
{
|
if (nChannel < 0 || nChannel > MAX_LAMP_CHANNEL)
|
return FALSE;
|
if (!m_hLightControl)
|
return FALSE;
|
|
char Data[50];
|
memset(&Data[0],0x00,sizeof(Data));
|
|
if(bOn == TRUE)
|
sprintf_s(Data, "AP11%c%c", ASCII_CR, ASCII_LF);
|
else
|
sprintf_s(Data, "AP00%c%c", ASCII_CR, ASCII_LF);
|
|
DWORD NumberOfBytesWritten;
|
|
BOOL bRet = WriteFile( m_hLightControl,(LPCVOID) Data,6,(LPDWORD) &NumberOfBytesWritten,NULL);
|
|
return bRet;
|
}
|