#include "StdAfx.h"
|
#include "TriggerControl_Mvsol.h"
|
|
CTriggerControl_Mvsol::CTriggerControl_Mvsol(void)
|
{
|
m_hTriggerControl = NULL;
|
}
|
|
CTriggerControl_Mvsol::~CTriggerControl_Mvsol(void)
|
{
|
DisConnect();
|
}
|
|
BOOL CTriggerControl_Mvsol::Connect(int nComPort)
|
{
|
if(IsConnect() == TRUE)
|
return TRUE;
|
|
DCB dcb;
|
|
CString strPort;
|
|
if(10 <= nComPort)
|
strPort.Format(_T("\\\\.\\COM%d"), nComPort);
|
else
|
strPort.Format(_T("COM%d"), nComPort);
|
|
m_hTriggerControl = CreateFile( strPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
|
if (m_hTriggerControl == INVALID_HANDLE_VALUE)
|
{
|
CloseHandle(m_hTriggerControl);
|
m_hTriggerControl = NULL;
|
return FALSE;
|
}
|
|
dcb.DCBlength = sizeof(DCB);
|
if (GetCommState(m_hTriggerControl,(LPDCB) &dcb))
|
{
|
dcb.DCBlength = sizeof(DCB);
|
dcb.BaudRate = CBR_115200;
|
dcb.ByteSize = 8;
|
//dcb.fParity = FALSE;
|
dcb.Parity = NOPARITY;
|
//dcb.StopBits = 1;
|
//dcb.fOutxCtsFlow = 0;
|
//dcb.fOutxDsrFlow = 0;
|
//dcb.fOutX = 0;
|
//dcb.fInX = 0;
|
|
// Serial Buadrate : 115,200bps
|
// Databit : 8
|
// Parity : None
|
// Stop bit : 1
|
// Flow control : None
|
|
if (!SetCommState(m_hTriggerControl,(LPDCB) &dcb))
|
{
|
CloseHandle(m_hTriggerControl);
|
m_hTriggerControl = NULL;
|
return FALSE;
|
}
|
}
|
else
|
{
|
CloseHandle(m_hTriggerControl);
|
m_hTriggerControl = NULL;
|
return FALSE;
|
}
|
|
return TRUE;
|
}
|
|
BOOL CTriggerControl_Mvsol::DisConnect()
|
{
|
if(IsConnect() == FALSE)
|
return TRUE;
|
|
if (m_hTriggerControl)
|
CloseHandle(m_hTriggerControl);
|
m_hTriggerControl = NULL;
|
|
return TRUE;
|
}
|
|
|
|
BOOL CTriggerControl_Mvsol::IsConnect()
|
{
|
return (m_hTriggerControl == NULL) ? FALSE : TRUE;
|
}
|
|
// 飘府芭0锅 盲澄狼 浚内歹 涝仿阑 0锅栏肺 静扁
|
// SND : 02 57 00 00 00 74 00 80 00 4B 03
|
// ACK : 02 77 00 00 00 74 00 80 00 6B 03
|
// 飘府芭1锅 盲澄狼 浚内歹 涝仿阑 0锅栏肺 静扁
|
// SND : 02 57 00 01 00 74 00 80 00 4C 03
|
// ACK : 02 77 00 01 00 74 00 80 00 6C 03
|
// 飘府芭2锅 盲澄狼 浚内歹 涝仿阑 0锅栏肺 静扁
|
// SND : 02 57 00 7D 22 00 74 00 80 00 4D 03
|
// ACK : 02 77 00 7D 22 00 74 00 80 00 6D 03
|
// 飘府芭3锅 盲澄狼 浚内歹 涝仿阑 0锅栏肺 静扁
|
// SND : 02 57 00 7D 23 00 74 00 80 00 4E 03
|
// ACK : 02 77 00 7D 23 00 74 00 80 00 6E 03
|
|
// 飘府芭0锅 盲澄狼 浚内歹 涝仿阑 1锅栏肺 静扁
|
// SND : 02 57 00 00 10 74 00 80 00 5B 03
|
// ACK : 02 77 00 00 10 74 00 80 00 7B 03
|
// 飘府芭1锅 盲澄狼 浚内歹 涝仿阑 1锅栏肺 静扁
|
// SND : 02 57 00 01 10 74 00 80 00 5C 03
|
// ACK : 02 77 00 00 10 74 00 80 00 7B 03
|
// 飘府芭2锅 盲澄狼 浚内歹 涝仿阑 1锅栏肺 静扁
|
// SND : 02 57 00 7D 22 10 74 00 80 00 5D 03
|
// ACK : 02 77 00 7D 22 10 74 00 80 00 7D 5D 03
|
// 飘府芭3锅 盲澄狼 浚内歹 涝仿阑 1锅栏肺 静扁
|
// SND : 02 57 00 7D 23 10 74 00 80 00 5E 03
|
// ACK : 02 77 00 7D 23 10 74 00 80 00 7E 03
|
|
|
BOOL CTriggerControl_Mvsol::SetSelectEncoder(int nEncoderChanel)
|
{
|
if(IsConnect() == FALSE)
|
return FALSE;
|
|
SetSelectEncoder_Trigger_Out_0(nEncoderChanel);
|
SetSelectEncoder_Trigger_Out_1(nEncoderChanel);
|
SetSelectEncoder_Trigger_Out_2(nEncoderChanel);
|
SetSelectEncoder_Trigger_Out_3(nEncoderChanel);
|
|
return TRUE;
|
}
|
|
BOOL CTriggerControl_Mvsol::SetSelectEncoder_Trigger_Out_0(int nEncoderChanel)
|
{
|
BYTE Data[64];
|
memset(&Data[0],0x00,sizeof(Data));
|
|
DWORD dwIndex = 0;
|
|
switch(nEncoderChanel)
|
{
|
case 0:
|
// 02 57 00 00 00 74 00 80 00 4B 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x4B;
|
Data[dwIndex++] = 0x03;
|
break;
|
case 1:
|
// 02 57 00 00 10 74 00 80 00 5B 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x10;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x5B;
|
Data[dwIndex++] = 0x03;
|
break;
|
default:
|
return FALSE;
|
}
|
|
DWORD NumberOfBytesWritten;
|
|
BOOL bRet = WriteFile( m_hTriggerControl,(LPCVOID) Data, dwIndex,(LPDWORD) &NumberOfBytesWritten, NULL);
|
|
return bRet;
|
}
|
|
BOOL CTriggerControl_Mvsol::SetSelectEncoder_Trigger_Out_1(int nEncoderChanel)
|
{
|
BYTE Data[64];
|
memset(&Data[0],0x00,sizeof(Data));
|
|
DWORD dwIndex = 0;
|
|
switch(nEncoderChanel)
|
{
|
case 0:
|
// 02 57 00 01 00 74 00 80 00 4C 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x01;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x4C;
|
Data[dwIndex++] = 0x03;
|
break;
|
case 1:
|
// 02 57 00 01 10 74 00 80 00 5C 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x01;
|
Data[dwIndex++] = 0x10;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x5C;
|
Data[dwIndex++] = 0x03;
|
break;
|
default:
|
return FALSE;
|
}
|
|
DWORD NumberOfBytesWritten;
|
|
BOOL bRet = WriteFile( m_hTriggerControl,(LPCVOID) Data, dwIndex,(LPDWORD) &NumberOfBytesWritten, NULL);
|
|
return bRet;
|
}
|
|
BOOL CTriggerControl_Mvsol::SetSelectEncoder_Trigger_Out_2(int nEncoderChanel)
|
{
|
BYTE Data[64];
|
memset(&Data[0],0x00,sizeof(Data));
|
|
DWORD dwIndex = 0;
|
|
switch(nEncoderChanel)
|
{
|
case 0:
|
// 02 57 00 7D 22 00 74 00 80 00 4D 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x7D;
|
Data[dwIndex++] = 0x22;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x4D;
|
Data[dwIndex++] = 0x03;
|
break;
|
case 1:
|
// 02 57 00 7D 22 10 74 00 80 00 5D 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x7D;
|
Data[dwIndex++] = 0x22;
|
Data[dwIndex++] = 0x10;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x5D;
|
Data[dwIndex++] = 0x03;
|
break;
|
default:
|
return FALSE;
|
}
|
|
DWORD NumberOfBytesWritten;
|
|
BOOL bRet = WriteFile( m_hTriggerControl,(LPCVOID) Data, dwIndex,(LPDWORD) &NumberOfBytesWritten, NULL);
|
|
return bRet;
|
}
|
|
BOOL CTriggerControl_Mvsol::SetSelectEncoder_Trigger_Out_3(int nEncoderChanel)
|
{
|
BYTE Data[64];
|
memset(&Data[0],0x00,sizeof(Data));
|
|
DWORD dwIndex = 0;
|
|
switch(nEncoderChanel)
|
{
|
case 0:
|
// 02 57 00 7D 23 00 74 00 80 00 4E 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x7D;
|
Data[dwIndex++] = 0x23;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x4E;
|
Data[dwIndex++] = 0x03;
|
break;
|
case 1:
|
// 02 57 00 7D 23 10 74 00 80 00 5E 03
|
Data[dwIndex++] = 0x02;
|
Data[dwIndex++] = 0x57;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x7D;
|
Data[dwIndex++] = 0x23;
|
Data[dwIndex++] = 0x10;
|
Data[dwIndex++] = 0x74;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x80;
|
Data[dwIndex++] = 0x00;
|
Data[dwIndex++] = 0x5E;
|
Data[dwIndex++] = 0x03;
|
break;
|
default:
|
return FALSE;
|
}
|
|
DWORD NumberOfBytesWritten;
|
|
BOOL bRet = WriteFile( m_hTriggerControl,(LPCVOID) Data, dwIndex,(LPDWORD) &NumberOfBytesWritten, NULL);
|
|
return bRet;
|
}
|