📄 ybcommdevice.h
字号:
//---------------------------------------------------------------------------
#ifndef YbCommDeviceH
#define YbCommDeviceH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include "TCommPkg.h"
//---------------------------------------------------------------------------
class PACKAGE TYbCommFrameSettings: public TPersistent
{
__published:
__property unsigned char FrameHead = { read = fGetFrameHead, write = fSetFrameHead, default = TCommPackage::DefaultFrameHead };
__property unsigned char FrameTail = { read = fGetFrameTail, write = fSetFrameTail, default = TCommPackage::DefaultFrameTail };
__property unsigned char FrameCtrl = { read = fGetFrameCtrl, write = fSetFrameCtrl, default = TCommPackage::DefaultFrameCtrl };
__property bool DoubleFrameMark = { read = fGetDblFrMark, write = fSetDblFrMark, default = true };
public:
__fastcall TYbCommFrameSettings(TCommPackage *lpPkg) { _CommPkg = lpPkg; }
void __fastcall SetValues(TYbCommFrameSettings *lpfs) { FrameHead=lpfs->FrameHead; FrameTail=lpfs->FrameTail; FrameCtrl=lpfs->FrameCtrl; }
private:
TCommPackage *_CommPkg;
bool __fastcall fGetDblFrMark(void) { return _CommPkg->DoubleFrameMark; }
void __fastcall fSetDblFrMark(bool b) { _CommPkg->DoubleFrameMark = b; }
unsigned char __fastcall fGetFrameHead(void) { return _CommPkg->FrameHead; }
unsigned char __fastcall fGetFrameTail(void) { return _CommPkg->FrameTail; }
unsigned char __fastcall fGetFrameCtrl(void) { return _CommPkg->FrameCtrl; }
void __fastcall fSetFrameHead(unsigned char c) { _CommPkg->FrameHead = c; }
void __fastcall fSetFrameTail(unsigned char c) { _CommPkg->FrameTail = c; }
void __fastcall fSetFrameCtrl(unsigned char c) { _CommPkg->FrameCtrl = c; }
};
//---------------------------------------------------------------------------
#pragma pack(push,1) // { //new pack
//---------------------------------------------------------------------------
class PACKAGE TYbCustomCommDevice : public TComponent
{
public:
enum TBaudRate
{
br110 ,//CBR_110
br300 ,//CBR_300
br600 ,//CBR_600
br1200 ,//CBR_1200
br2400 ,//CBR_2400
br4800 ,//CBR_4800
br9600 ,//CBR_9600
br14400 ,//CBR_14400
br19200 ,//CBR_19200
br38400 ,//CBR_38400
br56000 ,//CBR_56000
br57600 ,//CBR_57600
br115200,//CBR_115200
br128000,//CBR_128000
br256000,//CBR_256000
};
enum TParity
{
ptNoParity ,//NOPARITY
ptOddParity ,//ODDPARITY
ptEvenParity ,//EVENPARITY
ptMarkParity ,//MARKPARITY
ptSpaceParity,//SPACEPARITY
};
enum TStopBits
{
sbOneStopBit ,//ONESTOPBIT //1 stop bit
sbOne_5_StopBits,//ONE5STOPBITS //1.5 stop bits
sbTwoStopBit ,//TWOSTOPBITS //2 stop bits
};
enum TFlowControl
{
fcNone ,//AT&K0
fcRtsCts ,//AT&K3
fcXonXoff ,//AT&K4
fcTranXonXoff ,//AT&K5
fcRtsCtsXonXoff,//AT&K6
};
enum TModemStatusItem
{
msCtsOn , //MS_CTS_ON
msDsrOn , //MS_DSR_ON
msRingOn, //MS_RING_ON
msRlsdOn, //MS_RLSD_ON
};
enum TNotifyMsgType
{
nmtCommMsg = WM_USER + 2,
nmtPackage = WM_USER + 3,
};
typedef Set<TModemStatusItem,msCtsOn,msRlsdOn>TModemStatus;
__property bool Active = { read = fGetActive , write = fSetActive };
__property int PortNo = { read = fGetPort , write = fSetPort };
__property TBaudRate Baud = { read = fGetBaud , write = fSetBaud };
__property TParity Parity = { read = fGetParity , write = fSetParity };
__property int ByteSize = { read = fGetByteSize , write = fSetByteSize };
__property TStopBits StopBits = { read = fGetStopBits , write = fSetStopBits };
__property TFlowControl FlowControl = { read = fGetFlCtrl , write = fSetFlCtrl };
__property int AutoAnswer = { read = fGetAutAns , write = fSetAutAns };
__property TModemStatus ModemStatus = { read = fGetModemStatus }; //read only
__property bool DisableWrite = { read = fGetDisableWrite , write = fSetDisableWrite};
__property bool SyncEvents = { read = _bSyncEvents , write = fSetSyncEvents , default = true };
__property long InBufSize = { read = fGetInBufSize , write = fSetInBufSize };
__property long OutBufSize = { read = fGetOutBufSize , write = fSetOutBufSize};
__property long HwInSize = { read = fGetHwInSize , write = fSetHwInSize };
__property long HwOutSize = { read = fGetHwOutSize , write = fSetHwOutSize };
__property long QueueSize = { read = fGetQSize , write = fSetQSize }; //default: 16
__property long PackageSize = { read = fGetPkgSz , write = fSetPkgSz }; //default: 4096
__property TCommPackageType PackageType = { read = fGetPkgType , write = fSetPkgType, default = cptCompatiblePkg };
__property long PackageInterval = { read = fGetPkgInterval, write = fSetPkgInterval, default = 50 };
__property bool DTR = { read = fGetDTR , write = fSetDTR }; //Computer status, read/write
__property bool RTS = { read = fGetRTS , write = fSetRTS }; //Computer status, read/write
__property bool CTS = { read = fGetCTS }; //Modem status, read-only
__property bool DSR = { read = fGetDSR }; //Modem status, read-only
__property bool RING = { read = fGetRING }; //Modem status, read-only
__property bool RLSD = { read = fGetRLSD }; //Modem status, read-only, DCD=RLSD
__property bool DCD = { read = fGetRLSD }; //Modem status, read-only, DCD=RLSD
__property void __fastcall (__closure *OnPackage ) (TObject *Sender, int NotifyType) = { read = _lpfnPackageNotify, write = _lpfnPackageNotify };
__property void __fastcall (__closure *OnCommNotify) (TObject *Sender, int NotifyType) = { read = _lpfnCommNotify , write = _lpfnCommNotify };
__property void __fastcall (__closure *AfterOpen ) (TObject *Sender) = { read = _lpfnAfterOpen , write = _lpfnAfterOpen };
__property void __fastcall (__closure *BeforeClose ) (TObject *Sender) = { read = _lpfnBeforeClose, write = _lpfnBeforeClose };
virtual long __fastcall Read(void far *s, long n);
virtual long __fastcall Write(const void far *s, long n);
virtual long __fastcall Command(const char far *s);
virtual bool __fastcall ReadPackage(void *lpPkg);
virtual bool __fastcall WritePackage(const void *lpPkg);
virtual unsigned long __fastcall ReadPackage(void *lpPkg, unsigned long BufSize);
virtual unsigned long __fastcall WritePackage(const void *lpPkg, unsigned long nBytes);
virtual void __fastcall PurgeRead(bool bAbort=false);
virtual void __fastcall PurgeWrite(bool bAbort=false);
virtual bool __fastcall SettingsDialog(TComponent* AOwner, bool FActive=false); //return true = OK.
virtual void __fastcall ResetModem(void); //reset modem to power-on status
virtual void __fastcall InitModem(void); //init modem using TComm32 properties
virtual BOOL __fastcall EscapeCommFunction(DWORD dwFunc); //dwFunc: one of the following values: CLRDTR,CLRRTS,SETDTR,SETRTS,SETXOFF,SETXON,SETBREAK,CLRBREAK
__property HANDLE Handle = { read = fGetHandle };
__property bool UsePackage = { read = _bUsePackage, write = fSetUsePackage };
__property TYbCommFrameSettings *FrameSettings = { read = _FrameSettings, write = fSetFrameSettings };
__property TCommQueue *InQueue = { read = fGetInQueue };
__property TCommQueue *OutQueue = { read = fGetOutQueue };
__property TComm32 *CommPort = { read = _CommPort };
__property TCommPackage *CommPackage = { read = _CommPackage };
__fastcall TYbCustomCommDevice(TComponent* Owner);
virtual __fastcall ~TYbCustomCommDevice();
protected:
virtual void __fastcall EvCommNotify(TObject *Sender, int NotifyType);
virtual void __fastcall EvPackageNotify(TObject *Sender, int NotifyType);
virtual void __fastcall EvAfterOpen(TObject *Sender);
virtual void __fastcall EvBeforeClose(TObject *Sender);
private:
TComm32 *_CommPort;
TCommPackage *_CommPackage;
TYbCommFrameSettings *_FrameSettings;
bool _bUsePackage, _bSyncEvents;
HWND _hNotifyWindow;
HANDLE __fastcall fGetHandle(void);
void __fastcall fSetUsePackage(bool bup);
void __fastcall fSetFrameSettings(TYbCommFrameSettings *fs) { _FrameSettings->SetValues(fs); }
TCommQueue *__fastcall fGetInQueue(void);
TCommQueue *__fastcall fGetOutQueue(void);
bool __fastcall fGetActive(void);
void __fastcall fSetActive(bool b);
int __fastcall fGetPort(void);
void __fastcall fSetPort(int n);
TBaudRate __fastcall fGetBaud(void);
void __fastcall fSetBaud(TBaudRate br);
TParity __fastcall fGetParity(void);
void __fastcall fSetParity(TParity);
int __fastcall fGetByteSize(void);
void __fastcall fSetByteSize(int);
TStopBits __fastcall fGetStopBits(void);
void __fastcall fSetStopBits(TStopBits);
TFlowControl __fastcall fGetFlCtrl(void);
void __fastcall fSetFlCtrl(TFlowControl);
int __fastcall fGetAutAns(void);
void __fastcall fSetAutAns(int);
TModemStatus __fastcall fGetModemStatus(void);
bool __fastcall fGetDisableWrite(void);
void __fastcall fSetDisableWrite(bool);
void __fastcall fSetSyncEvents(bool);
long __fastcall fGetInBufSize(void);
void __fastcall fSetInBufSize(long);
long __fastcall fGetOutBufSize(void);
void __fastcall fSetOutBufSize(long);
long __fastcall fGetHwInSize(void);
void __fastcall fSetHwInSize(long);
long __fastcall fGetHwOutSize(void);
void __fastcall fSetHwOutSize(long);
long __fastcall fGetQSize(void);
void __fastcall fSetQSize(long);
long __fastcall fGetPkgSz(void);
void __fastcall fSetPkgSz(long);
bool __fastcall fGetDTR(void); //Computer status, read/write
void __fastcall fSetDTR(bool); //Computer status, read/write
bool __fastcall fGetRTS(void); //Computer status, read/write
void __fastcall fSetRTS(bool); //Computer status, read/write
bool __fastcall fGetCTS(void); //Modem status, read-only
bool __fastcall fGetDSR(void); //Modem status, read-only
bool __fastcall fGetRING(void); //Modem status, read-only
bool __fastcall fGetRLSD(void); //Modem status, read-only
TCommPackageType __fastcall fGetPkgType(void);
void __fastcall fSetPkgType(TCommPackageType);
long __fastcall fGetPkgInterval(void);
void __fastcall fSetPkgInterval(long);
void __fastcall _EvNotifyProc(Messages::TMessage &Message);
void __fastcall _EvComm(TObject *Sender, int NotifyType);
void __fastcall _EvPackage(TObject *Sender, int NotifyType);
void __fastcall _EvAfterOpen(TObject *Sender);
void __fastcall _EvBeforeClose(TObject *Sender);
void __fastcall (__closure *_lpfnCommNotify)(TObject *Sender, int NotifyType);
void __fastcall (__closure *_lpfnPackageNotify)(TObject *Sender, int NotifyType);
void __fastcall (__closure *_lpfnAfterOpen) (TObject *Sender);
void __fastcall (__closure *_lpfnBeforeClose) (TObject *Sender);
};
//---------------------------------------------------------------------------
class PACKAGE TYbCommDevice : public TYbCustomCommDevice
{
__published:
__property PortNo;
__property Baud;
__property Parity;
__property ByteSize;
__property StopBits;
__property FlowControl; //for modem flowcontrol
__property AutoAnswer; //0: no answer, >0: answer after # rings
__property SyncEvents = { default = true }; //synchronize events to main thread
__property InBufSize; //software buffer size
__property OutBufSize; //software buffer size
__property HwInSize; //hardware/driver buffer size
__property HwOutSize; //hardware/driver buffer size
__property QueueSize; //default: 16
__property PackageSize; //default: 4096
__property PackageType; //default: cptCompatiblePkg
__property PackageInterval;//default: 50
__property UsePackage; //default: false
__property FrameSettings;//default: eb,ee,ec
__property OnPackage; //EV_RXCHAR|EV_TXEMPTY|EV_CTS|EV_DSR|EV_RLSD|EV_RING|EV_RXFLAG|EV_RX80FULL|EV_ERR
__property OnCommNotify; //EV_RXCHAR|EV_TXEMPTY|EV_CTS|EV_DSR|EV_RLSD|EV_RING|EV_RXFLAG|EV_RX80FULL|EV_ERR
__property AfterOpen;
__property BeforeClose;
public:
__fastcall TYbCommDevice(TComponent* Owner);
};
//---------------------------------------------------------------------------
#pragma pack(pop) // } //end of new pack
//---------------------------------------------------------------------------
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -