⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs232.h

📁 简单的 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 + -