#pragma once
|
|
#include "LightControl.h"
|
|
class AFX_EXT_CLASS CLightControl_SP200 : public CLightControl
|
{
|
public:
|
CLightControl_SP200(int nIndex);
|
virtual ~CLightControl_SP200(void);
|
|
virtual BOOL Connect(const CLightControlInfo& controlInfo);
|
virtual LONG ConnectEx(const CLightControlInfo& controlInfo);
|
virtual void Disconnect();
|
virtual void DisconnectEx();
|
|
virtual BOOL GetLightLevel(int &nValue, int nChannel = 0) const;
|
virtual BOOL GetLightLevel(double &dValue, int nChannel = 0) const;
|
virtual BOOL GetLightStatus(int &nValue, int nChannel = 0) const;
|
|
virtual BOOL SetLightLevel(int nValue, int nChannel = 0);
|
virtual BOOL SetLightLevel(double dValue, int nChannel = 0);
|
virtual BOOL SetLightStatus(int nValue, int nChannel = 0);
|
virtual BOOL SetAllLightLevel(int nValue) { return TRUE; }
|
|
virtual BOOL SetLightOn();
|
virtual BOOL SetLightOff();
|
|
virtual BOOL SetLightOn(int nChannel = 0);
|
virtual BOOL SetLightOff(int nChannel = 0);
|
|
virtual BOOL SetLightAllOn();
|
virtual BOOL SetLightAllOff();
|
|
// get status
|
virtual int GetStatus( int& nStatusCode, CString& strStatusMessage );
|
|
|
void SetMappingValue(int nMin, int nMax, int nMinMap, int nMaxMap);
|
|
protected:
|
double m_dLightResolution;
|
int m_nCurrentValue;
|
|
// for sp200
|
private:
|
|
// port initialisation
|
BOOL InitPort(CWnd* pPortOwner, UINT portnr = 1, UINT baud = 19200, char parity = 'N', UINT databits = 8, UINT stopsbits = 1, DWORD dwCommEvents = EV_RXCHAR | EV_CTS, UINT nBufferSize = 512);
|
|
// start/stop comm watching
|
BOOL StartMonitoring();
|
BOOL RestartMonitoring();
|
BOOL StopMonitoring();
|
|
DWORD GetWriteBufferSize();
|
DWORD GetCommEvents();
|
DCB GetDCB();
|
|
void WriteToPort(unsigned char* Data, UINT size);
|
void ClearReadBuff(void);
|
|
// protected memberfunctions
|
void ProcessErrorMessage(CString ErrorText);
|
static UINT CommThread(LPVOID pParam);
|
static void ReceiveChar(CLightControl_SP200* port, COMSTAT comstat);
|
static void WriteChar(CLightControl_SP200* port);
|
|
BOOL m_ReadComplete;
|
unsigned char m_ReadBuff[256];
|
int m_ReadCount;
|
BOOL m_bThreadRun;
|
|
// thread
|
CWinThread* m_Thread;
|
|
// synchronisation objects
|
CRITICAL_SECTION m_csCommunicationSync;
|
BOOL m_bThreadAlive;
|
|
// handles
|
HANDLE m_hShutdownEvent;
|
HANDLE m_hComm;
|
HANDLE m_hWriteEvent;
|
|
// Event array.
|
// One element is used for each event. There are two event handles for each port.
|
// A Write event and a receive character event which is located in the overlapped structure (m_ov.hEvent).
|
// There is a general shutdown when the port is closed.
|
HANDLE m_hEventArray[3];
|
|
// structures
|
OVERLAPPED m_ov;
|
COMMTIMEOUTS m_CommTimeouts;
|
DCB m_dcb;
|
|
// misc
|
UINT m_nPortNr;
|
unsigned char* m_szWriteBuffer;
|
DWORD m_dwCommEvents;
|
DWORD m_nWriteBufferSize;
|
UINT m_WriteDataSize;
|
|
};
|