#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; }