#include "StdAfx.h" #include "VcrControl_CodeImageV5111N.h" CVcrControl_CodeImageV5111N::CVcrControl_CodeImageV5111N(int nIndex) : CVcrControl(nIndex) { m_nIndex = nIndex; m_nPortIndex = 1; m_nBaudRate = CBR_9600; m_bConnected = FALSE; } CVcrControl_CodeImageV5111N::~CVcrControl_CodeImageV5111N(void) { Disconnect(); } BOOL CVcrControl_CodeImageV5111N::Connect(const CVcrControlInfo& controlInfo) { m_ControlInfo = controlInfo; if (m_ControlInfo.GetConnectionPort().GetLength()==0) return FALSE; int nPort = _ttoi(controlInfo.GetConnectionPort()); if(nPort < 1) return FALSE; if(IsOpen()) Close(); CString strProt = _T(""); if(nPort > 9) { strProt.Format(_T("\\\\.\\\\COM%d"), nPort); } else { strProt.Format(_T("COM%d"), nPort); } if (Open(strProt,NULL) != ERROR_SUCCESS) { m_bConnected = FALSE; return FALSE; } Setup((EBaudrate)controlInfo.GetBaudRate(), CSerial::EData8, CSerial::EParNone, CSerial::EStop1); SetupHandshaking(CSerial::EHandshakeOff); m_nPortIndex = nPort; m_nBaudRate = controlInfo.GetBaudRate(); m_bConnected = TRUE; return TRUE; } void CVcrControl_CodeImageV5111N::Disconnect() { if (!m_bConnected) return; Close(); m_bConnected = FALSE; } BOOL CVcrControl_CodeImageV5111N::GetDecodeStatus(BOOL &bValue) { if (!m_bConnected) return FALSE; bValue = m_bDecode; return TRUE; } BOOL CVcrControl_CodeImageV5111N::GetDecodeData(CString &strValue) { if (!m_bConnected) return FALSE; strValue = m_strDecodeData.GetString(); return TRUE; } BOOL CVcrControl_CodeImageV5111N::GetReadSize(int &readSize) { if (!m_bConnected) return FALSE; readSize = m_nReadSize; return TRUE; } BOOL CVcrControl_CodeImageV5111N::DecodeTriggerSignal() { if (!m_bConnected) return FALSE; char Data[50]; memset(&Data[0],0x00,sizeof(Data)); sprintf_s(Data, "%c%c%c%c%c", 0x1B, 0x50, 0x00, 0xFF, 0x0D); // ECS P 00 FF CR // Write if (Write(Data, 5)!=0) { return FALSE; } // [2017:1:13]-[WEZASW] : ¼ö½ÅºÎ Thread ó¸® °³¼± ¿¹Á¤(Ing) Sleep(1000); // Reading Time Max 1S Delay DWORD dwBytesRead = 0; char abBuffer[50] = {0,}; TCHAR abwordBuffer[25] = {0,}; int count = 50; CString strTemp; do { // Read data from the COM-port Read(abwordBuffer,sizeof(abwordBuffer),&dwBytesRead); if (dwBytesRead > 0) { for (DWORD i = 0; i< dwBytesRead/2; i++) { abBuffer[i*2] = (char)(abwordBuffer[i] % 256); abBuffer[i*2+1] = (char)(abwordBuffer[i] / 256); } // Only Data Massage switch (abBuffer[0]) // ÆÇÁ¤ ÄÚµå { case 'V': // ÆÇµ¶ ¼º°ø : Return Type¿¡ µû¸¥ ó¸® ÇÊ¿ä. m_strDecodeData.Empty(); m_nReadSize = abBuffer[1]; for (int i = 0; i< m_nReadSize; i++) { strTemp.Format(_T("%c"), abBuffer[i+3]); m_strDecodeData.AppendFormat(strTemp); } //m_strDecodeData = abBuffer m_bDecode = TRUE; break; case 'R': m_bDecode = FALSE; break; } return m_bDecode; } Sleep(1); } while (count-- > 0); if (count == 0) return FALSE; else return TRUE; }