//============================================== #ifndef giddioH #define giddioH //============================================== #include "rs232c.h" #pragma hdrstop //============================================== /* (C)Mathematical Assist Design Lab. (C)数理設計研究所 2000/02/23 Yazawa, Hal.T GID-DIO 入出力支援クラス */ //============================================== class GidDIO { public: //=============Data define enum RSSPEED { baud1200, baud115k } baudrate; enum DIOMODE { PcTrigBurst, //PCからデータを送信した瞬間から連続入力 ExtTrigBurst, //外部トリガで連続入力が始まる InputTrigBurst, InputTrigSingle, ExtTrigRiseSingle, ExtTrigFallSingle, PcTrigSingle //PCからデータを送ると1データ入力する }; //=============Data private: bool ConnectState; public: int Comport; //RS232C COMポート番号 1〜4(PCAT) 1(PC98) RS232C *rs; //回線 int DefaultData; //初期化時の出力初期値 //=============Code //支援部分 void DioSetDCB(void); int ModeSet(enum DIOMODE mode, int DefaultData); //公開部 explicit GidDIO(int Port, enum RSSPEED speed, enum DIOMODE mode, int DefaultData = 0x00) : DefaultData( DefaultData ) { rs = new RS232C(Port, "baud=1200 parity=N data=8 stop=1"); baudrate = speed; Comport = Port; ConnectState = ( ModeSet(mode,DefaultData) == 0 )? true: false; // by fuji rs->PurgeComm(); } ~GidDIO() { rs->SetDTR(0); rs->SetRTS(0);delete rs; } //1バイトデータ入出力 int PutData(unsigned char d); //データの送信 送信したバイト数を返す int PutData(unsigned char *d, int n); //データの送信 送信したバイト数を返す int GetData(void); //データの受信 // 1文字送って1文字受信する。引数なしなら既定値を送信 int PutGetWaitData(unsigned char d); int PutGetWaitData() { return PutGetWaitData( static_cast(DefaultData) ); } // BITSET (pcmode) channelビットをOn/Offして受信データを返す int BitSet( bool OnOff, int channel ); //連続入力する n>0なら個数分 int GetBurst(int n, unsigned char *p, unsigned char d=0); int GetDefaultData() { return DefaultData; } bool isConnected() { return ConnectState; } }; //============================================== //============================================== //============================================== //============================================== #endif