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

📄 rs232comm.h

📁 用于开发Atmel的AVR系列单片机的GCC集成开发环境
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef RS232CommH
#define RS232CommH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>

typedef void __fastcall (__closure *TCommEvent)(DWORD EvMask);
typedef void __fastcall (__closure *TCommRxEvent)(DWORD Count);
typedef void __fastcall (__closure *TCommErrEvent)(DWORD Error);
enum TFlowControl {fcNone, fcXFlow, fcRTSCTS, fcDTRDSR};
enum TModemStatus {msCTS, msDSR, msRing, msDCD};
typedef Set<TModemStatus, 0, msCTS + msDSR + msRing + msDCD> MODEMSTAT;
//---------------------------------------------------------------------------
class TCommThread : public TThread
{
private:
        OVERLAPPED os;
protected:
        void __fastcall Execute();
        void __fastcall OnCommEvent (void);
public:
        __fastcall TCommThread(bool CreateSuspended);
        void __fastcall StopEventWait (void);
        HANDLE CommHandle;
        DWORD EventMask;
        TCommEvent OnEvent;
};
//---------------------------------------------------------------------------
class PACKAGE TRS232Comm : public TComponent
{
private:
        HANDLE CommHandle;
        bool isOpen;
        int FBaudRate, FDataBits, FStopBits;
        char FParity;
        int FInQSize, FOutQSize;
        void __fastcall HandleEvent (DWORD EvMask);
        OVERLAPPED read_os, write_os;
        TCommThread *CommThread;
        TFlowControl FFlowControl;
        AnsiString FPortName;
        bool FNullStriping;
        void __fastcall SetFlowControl (TFlowControl flow);
        void __fastcall SetNullStriping (bool strip);
        void __fastcall SetBaudRate (int value);
        void __fastcall SetDataBits (int value);
        void __fastcall SetStopBits (int value);
        void __fastcall SetParity (char pari);
        void __fastcall SetPortName (AnsiString name);
        void __fastcall SetInQSize (int value);
        void __fastcall SetOutQSize (int value);
        DCB dcb;
        void __fastcall ErrorMessage (AnsiString message);
        TCommRxEvent FOnRxChar;
        TNotifyEvent FOnBreak;
        TNotifyEvent FOnRing;
        TNotifyEvent FOnCTSChange;
        TNotifyEvent FOnDSRChange;
        TNotifyEvent FOnDCDChange;
        TNotifyEvent FOnTxEmpty;
        TCommErrEvent FOnError;

public:
        __fastcall TRS232Comm(TComponent* Owner);
        __fastcall ~TRS232Comm(void);
        bool __fastcall Open (void);
        void __fastcall Close (void);
        bool __fastcall SetParameters (int baud, int Databits, char parity,
                                       float stopbits);
        bool __fastcall SetQueueSize (int inq, int outq);
        int __fastcall Read (char *buf, DWORD max);
        int __fastcall Write (char *data, int len);
        MODEMSTAT __fastcall GetModemStatus (void);
        HANDLE __fastcall GetHandle (void);
        void __fastcall MakePortList (TStrings *list);
        void __fastcall SetRTSState (bool state);
        void __fastcall SetDTRState (bool state);
        void __fastcall SetBreakState (bool state);

__published:
  __property TFlowControl FlowControl = {read=FFlowControl, write=SetFlowControl,
                                         default=fcNone};
  __property bool NullStriping = {read=FNullStriping, write=SetNullStriping};
  __property int BaudRate = {read=FBaudRate, write=SetBaudRate, default=19200};
  __property int DataBits = {read=FDataBits, write=SetDataBits, default=8};
  __property int StopBits = {read=FStopBits, write=SetStopBits, default=1};
  __property char Parity = {read=FParity, write=SetParity, default='N'};
  __property AnsiString PortName = {read=FPortName, write=SetPortName};
  __property int InQSize = {read=FInQSize, write=SetInQSize, default=1024};
  __property int OutQSize = {read=FOutQSize, write=SetOutQSize, default=1024};
  __property TCommRxEvent OnRxChar = {read=FOnRxChar, write=FOnRxChar};
  __property TNotifyEvent OnBreak = {read=FOnBreak, write=FOnBreak};
  __property TNotifyEvent OnRing = {read=FOnRing, write=FOnRing};
  __property TNotifyEvent OnCTSChange = {read=FOnCTSChange, write=FOnCTSChange};
  __property TNotifyEvent OnDSRChange = {read=FOnDSRChange, write=FOnDSRChange};
  __property TNotifyEvent OnDCDChange = {read=FOnDCDChange, write=FOnDCDChange};
  __property TNotifyEvent OnTxEmpty = {read=FOnTxEmpty, write=FOnTxEmpty};
  __property TCommErrEvent OnError = {read=FOnError, write=FOnError};
  __property bool PortIsOpen = {read=isOpen};
};
//---------------------------------------------------------------------------
#endif
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -