You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitlib.pub/MITLIB/commdll/RfID_Omron600.h

58 lines
2.2 KiB
C++

// OMRON600.h: interface for the RfID_Omron600 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_OMRON600_H__171653B4_2BE8_4C09_B705_E2DCC061ACE6__INCLUDED_)
#define AFX_OMRON600_H__171653B4_2BE8_4C09_B705_E2DCC061ACE6__INCLUDED_
#pragma once
#include "utility.h"
#include "RfId.h"
#include "RfIdFactory.h"
enum RFID_FORMAT
{
RFID_ASCII,
RFID_HEX,
};
#pragma warning(push)
#pragma warning(disable:4481) // nonstandard extension used: override specifier 'override'
class RfID_Omron600 : public RfIdBase
{
public:
explicit RfID_Omron600(int id);
virtual ~RfID_Omron600();
bool WriteID(const CString &strID) override;
bool ReadID(CString *pResult) override;
bool TestComm() override;
void OnReceiveComm(const char *cpcBuffer, int nSize);
CString GetErrorMessage() const override;
private:
bool Send(const CString &data);
bool ReadID(int unit, int head, CString *pResult);
bool WriteID(int unit, int head, const CString &strID);
private:
CString m_strMsg; /**< String containing error message */
CMutex m_portMutex; /**< Mutex to prevent multiple readers from accessing serialport at the same time */
CEvent m_responseReceived; /**< Set when a response is received */
CString m_strReceived; /**< String containing the response received */
DWORD m_nTimeOut; /**< Timeout for waiting for reply */
int m_head; /**< Read head configuration [1..2] */
int m_unit; /**< Unit number [0..31] */
int m_nDataLength; /**< Data length of RFID, currently fixed at 16 [16 or 32] */
enum RFID_FORMAT m_eDataFormat; /**< Data Format, Hex or ASCII */
CString RestrictStringLength(const CString& strData);
CString CalculateFCSAndFinalizeCmd(const CString& strCmd);
CString GetRFIDErrorCodeString(const CString &strErrorCode);
bool IsReplyError(const CString &strCmd, const CString &strReply);
};
#pragma warning (pop)
#endif // !defined(AFX_OMRON600_H__171653B4_2BE8_4C09_B705_E2DCC061ACE6__INCLUDED_)