📄 rs232.h
字号:
/******************************************************************************
BUG-Report
Fehler in "OnComEvent(..)
{
im zweiten Durchlauf gibt GetlastError()
INVALID_PARAMETER zur點k
==>> Enloser Loop bei 100% CPU-Last
gel鰏t durch
if (!IsSignaled)
{
...
//Events neu setzen
SetCommMask(..);
}
}
TODO
{
Einige Events werden noch nicht bearbeitet.
In der DCB-Struktur sind einige Werte vernachl鋝sigt
z.B.
m_dcb.XonChar
m_dcb.XoffChar
m_dcb.ErrorChar
m_dcb.EofChar
m_dcb.EvtChar
Flusskontrolle wird in den Einstellungen nicht angeboten.
(m_FlowControl)
wurde bisher nicht ben鰐igt..
Es werden nur gebr鋟chliche Baudraten bis 38400 BAUD angeboten
}
******************************************************************************/
#include "Defines.h"
#if !defined(RS232_H)
#define RS232_H
typedef struct COMMHANDLE
{
HANDLE hHandle;
char name[MAX_PATH];
}PCOMMHANDLE;
/*****************************************************************************/
static char* tagPARITYSTR[5] =
{
"NO",
"ODD",
"EVEN",
"MARK",
"SPACE"
};
static char* tagCSTATESTR[4] =
{
"The CTS (clear-to-send) signal is on.", //0x0010
"The DSR (data-set-ready) signal is on.", //0x0020
"The ring indicator signal is on.", //0x0040
"The RLSD (receive-line-signal-detect) signal is on." //0x0080
};
/****************************************************************************/
class C_RS232
/****************************************************************************/
{
public:
C_RS232(BYTE* DeviceCount, char* Namen, COMM_SIGNAL OnSignal, COMM_ERROR OnError);
virtual ~C_RS232();
void ReturnLastErrorMsg(unsigned long Code, char* Msg);
DCB GetDataControlBlock(HANDLE hHandle);
BOOL UpdateDataControlBlock(HANDLE hHandle, BYTE Baud, BYTE Size, BYTE StpBits, BYTE Parity);
HANDLE CreateHandle(char* Name, BOOL testmode, DWORD Timeout);
BOOL DestroyHandle(HANDLE* hHandle);
BOOL TerminateOnSignal();
BOOL DisableOnSignal();
BOOL EnableOnSignal();
BOOL Purge(BYTE Kind, HANDLE hHandle);
int GetInOutQueCount(BYTE Que, HANDLE hHandle);
DWORD GetModemState(HANDLE hHandle);
BOOL ComWrite(void* Buffer, DWORD BufferSize);
DWORD ComRead(void* Buffer, DWORD* BufferSize);
void DoOnSignal(DWORD hEvent);
COMMHANDLE m_Handles;
BOOL m_SignalEvents;
EVENT m_ThreadEvent;
DWORD m_Timeout;
COMM_ERROR m_CommError;
COMM_SIGNAL m_Signal;
DCB m_dcb;
protected:
BOOL Assigned(void* Pointer);
BOOL Enabled(HANDLE hHandle);
EVENT m_Read;
EVENT m_Write;
HANDLE m_EventThread;
BYTE m_FlowControl;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -