【門前.ORG/MONZEN.ORG】チーター・エンジニア/Cheetah Engineer

CheetahEnginner/MONZEN.ORGアセンブル・ウェブサイト/Assemble.JP アセンブル・ウェブサイト
MONZEN.ORG/WAKU MONZEN.ORG  2009/1/7(水) MONZEN.ORG/WAKU
アセンブル・ウェブサイト
 トップ | プライベート | 概要 | 開発ドキュメント | お問合せ | サイトマップ |  
 リファレンス > TPAPro > Chap.2
Chapter 2: Port Component
TApdComPort コンポーネント  :COMポート通信用VCLコンポーネント
 シリアルポートへの入出力は、コンポーネントのメソッド呼び出し/イベント・コールバックにより、処理することができます。
クラス階層
TComponent (VCL)
→ TApdBaseComonent (OOMisc)
→ TApdCustomComPort (AdPort)
→ TApdComPort (AdPort)
プロパティ一覧
AutoOpen HWFlowOptions Parity
BaseAddress InBuffFree PromptForPort
Baud InBuffUsed RI
BufferFull InSize RS485Mode
BufferResume LineBreak RTS
ComNumber LineError StopBits
CTS LogAllHex SWFlowOptions
DataBits Logging TapiMode
DCD LogHex TraceAllHex
DeltaCTS LogName TraceHex
DeltaDCD LogSize TraceName
DeltaDSR ModemStatus TraceSize
DeltaRI Open Tracing
DeviceLayer OutBuffFree UseEventWord
DSR OutBuffUsed Version
DTR Output XOffChar
FlowState OutSize XOnChar
メソッド一覧
ActivateDeviceLayer FlushInBuffer PutString
AddDataTrigger FlushOutBuffer RemoveAllTriggers
AddStatusTrigger GetBlock RemoveTrigger
AddStringToLog GetChar SendBreak
AddTimerTrigger ProcessCommunications SetBreak
AddTraceEntry PutBlock SetStatusTrigger
CharReady PutChar SetTimerTrigger
イベント・コールバック一覧
OnPortClose OnTriggerData OnTriggerOutbuffUsed
OnPortOpen OnTriggerLineError OnTriggerOutSent
OnTrigger OnTriggerModemStatus OnTriggerStatus
OnTriggerAvail OnTriggerOutbuffFree OnTriggerTimer
プロパティ詳細
AutoOpen
DEL   AutoOpen : Boolean Default: True
C++   bool AutoOpen; default = true

 COMポートにアクセスする必要が発生した時に、自動的にポートをオープンする場合、TRUEとする。
 FALSEの場合、プログラムで明示的にOpenプロパティをTRUEとする。
BaseAddress
DEL   BaseAddress : Word / Default: 0
C++   unsigned short BaseAddress; default = 0

 RS-485を使う場合のみ有効。
 通常は自動的に割り当てられるが、RS-485でRTSを使う場合に指定する。
Baud
DEL   Baud : LongInt / Default: 19200
C++   int Baud; Default: 19200

 ボーレート(通信速度)。
 300、1,200、2,400、4,800、9,600、19,200、38,400、57,600、115,200のいずれか。
BufferFull
DEL   BufferFull : Word / Default: 0
C++   unsigend short BufferFull; Default: 0

 (フロー制御に応じた)入力バッファレベル。
BufferResume
DEL   BufferResume : Word / Default: 0
C++   unsigned short BufferResume; Default: 0

 (フロー制御をしない場合の)入力バッファレベル
ComNumber
DEL   ComNumber : Word / Default: 0
C++   unsigned short ComNumber; / Default: 0

シリアル・ポート番号、ComNumber=1の場合にCOM1
CTS
DEL   CTS : Boolean
C++   bool CTS;

CTS(Clear To Send)がセットされた場合にTRUE
DataBits
DEL   DataBits : Word / Default: 8
C++   unsigned short DataBits; Default: 8

データビット数
DCD
DEL   DCD : Boolean
C++   bool DCD;

DCD(data carrier detect)がセットされた場合にTRUE
DeltaCTS
DEL   DeltaCTS : Boolean
C++   bool DeltaCTS;

DeltaCTS(delta clear to send)がセットされた場合にTRUE
DeltaDCD
DEL   DeltaDCD : Boolean
C++   bool DeltaDCD;

DeltaDCD(delta data carrier detect)がセットされた場合にTRUE
DeltaDSR
DEL   DeltaDSR : Boolean
C++   bool DeltaDSR;

DeltaDSR(delta data set ready)がセットされた場合にTRUE
DeltaRI
DEL   DeltaRI : Boolean
C++   bool DeltaRI;

DeltaRI(delta ring indicator)ビットがセットされた場合にTRUE
DeviceLayer
DEL   DeviceLayer : TDeviceLayer / Default: dlWin32
C++   TDeviceLayer DeviceLayer; Default: dlWin32

デバイス層/ハードウェアインタフェース
TDeviceLayerの値内容
dlWin16Win16
dlFossil(旧バージョン)
dlWin32Win32
dlWinsockWinSockを使う場合
DSR
DEL   DSR : Boolean
C++   bool DSR;

DSR(data set ready)がセットされた場合にTRUE
DTR
DEL   DTR : Boolean
C++   bool DTR;

DTR(data terminal ready)がセットされた場合にTRUE
FlowState
DEL   FlowState : TFlowControlState
C++   TFlowControlState FlowState;

ハード/ソフトフロー制御の状態
TFlowControlStateの値内容
fcOffフロー制御OFF
fcOnフロー制御ON
fcDsrHoldDSR保留
fcCtsHoldCTS保留
fcDcdHoldDCD保留
fcXOutHoldXOUT保留
fcXInHoldXIN保留
fcXBothHoldXBOTH保留
HWFlowOptions
DEL   HWFlowOptions : THWFlowOptionSet
C++   THWFlowOptionSet HWFlowOptions;

ハードウェア・フロー制御の方法
THWFlowOptionSetの値内容
hwfUseDTRDTRを使う
hwfUseRTSRTSを使う
hwfRequireDSRDSRを使う
hwfRequireCTSCTSを使う
InBuffFree
DEL   InBuffFree : Word
C++   unsigned short InBuffFree;

配信バッファから開放されたデータのバイト数
InBuffUsed
DEL   InBuffUsed : Word
C++   unsigned short InBuffUsed;

配信バッファ内のバイト数
InSize
DEL   InSize : Word
C++   unsigned short InSize;

Windows通信API用のデータ・バッファのバイト数
LineBreak
DEL   LineBreak : Boolean
C++   bool LineBreak;

Line Breakを受信した場合にTRUE
LineError
DEL   LineError : word
C++   unsigned short LineError;

Line Errorが発生した場合に以下の値を返す
LineErrorの値No.内容
leBuffer1COMM.DRVでのバッファー・オーバーラン
leOverrun2UART受信オーバーラン
leParity3UART受信パリティエラー
leFraming4UART受信フレームエラー
leCTSTO5CTS待ちタイムアウト
leDSRTO6DSR待ちタイムアウト
leDCDTO7RLSD待ちタイムアウト<
leTxFull8バッファー・フル
LogAllHex
DEL   LogAllHex : Boolean
C++   bool LogAllHex;

バイナリでのLOG出力が完了した場合にTRUE
Logging
DEL   Logging : TTraceLogState
C++   TTraceLogState Logging;

ログ出力の状態
TTraceLogStateの値内容
tlOffCOMM.DRVでのバッファー・オーバーラン
tlOnUART受信オーバーラン
tlDumpUART受信パリティエラー
tlAppendUART受信フレームエラー
tlClearCTS待ちタイムアウト
tlPauseDSR待ちタイムアウト
LogHex
DEL   LogHex : Boolean / Default: True
C++   bool LogHex; default = true

制御文字をログファイルに出力する場合TRUE
LogName
DEL   LogName : ShortString / Default: 'APRO.LOG'
C++   AnsiString LogName; default = "APRO.LOG"

ログファイル名
LogSize
DEL   LogSize : Word / Default: 10000
C++   unsigned short LogSize; default = 10000

ログ用のバッファのサイズ/バイト数
ModemStatus
DEL   ModemStatus : Byte
C++   unsigned char ModemStatus;

モデムの状態
ニーモニック内容
DeltaCTSMask01hCTSが変化した
DeltaDSRMask02hDSRが変化した
DeltaRIMask04hRIが変化した
DeltaDCDMask08hDCDが変化した
CTSMask10h
DSRMask20h
RIMask40h
DCDMask80h
Open
DEL   Open : Boolean / Default: False
C++   bool Open; default = false

物理ポートがオープンされ、初期化されている場合にTRUE
OutBuffFree
DEL   OutBuffFree : Word
C++   unsigned short OutBuffFree;

出力バッファの未使用のバッファサイズ
OutBuffUsed
DEL   OutBuffUsed : Word
C++   unsigned short OutBuffUsed;

出力バッファの使用中のバッファサイズ
Output
DEL   Output : string
C++   AnsiString Output;

ポートに文字列を送信する
OutSize
DEL   OutSize : Word / Default: 4096
C++   unsigned short OutSize; default = 4096

Win32のCOMドライバにて使用される出力バッファのバッファサイズ
Parity
DEL   Parity : TParity / Default: pNone
C++   TParity Parity; default = pNone

パリティ方式
TParityの値内容
pNoneパリティなし
pOdd奇数パリティ
pEven偶数パリティ
pMarkマーク・パリティ
pSpaceスペース・パリティ
PromptForPort
DEL   PromptForPort : Boolean / Default: True
C++   bool PromptForPort; default = true

ComNumberが0の場合に、ポートを指定するダイアログを表示する場合TRUE
RI
DEL   RI : Boolean
C++   bool RI;

RI(ring indicator)がセットされた場合にTRUE
RS485Mode
DEL   RS485Mode : Boolean
C++   bool RS485Mode;

RTS
DEL   RTS : Boolean
C++   bool RTS;

RTS(request to send)がセットされた場合にTRUE
StopBits
DEL   StopBits : Word / Defult: 1
C++   unsigned short StopBits;

StopBitのビット数
SWFlowOptions
DEL   SWFlowOptions : TSWFlowOptions / Default: swfNone
C++   TSWFlowOptions SWFlowOptions; default = swfNone

ソフトウェア・フロー制御の方法
TSWFlowOptionsの値内容
swfNoneなし
swfReceiveローカルバッファがフル
swfTransmitリモートバッファがフル
swfBothswfReceiveとswfTransmitの両方
TapiMode
DEL   TapiMode : TTapiMode / Default: tmAuto
C++   TTapiMode TapiMode; default = tmAuto

TApdTapiDeviceとして動作させるか否かを指定する
TTapiModeの値内容
tmNone不可
tmAuto自動
tmOnTAPIデバイスモードをON
tmOffTAPIデバイスモードをOFF
TraceAllHex
DEL   TraceAllHex : Boolean / Defult: False
C++   bool TraceAllHex; defalut = false

トレースログに制御文字を含める場合にTRUE
TraceHex
DEL   TraceHex : Boolean / Defult: True
C++   bool TraceHex; defalut = true

ログに埋め込む制御文字をHEXで記述する場合にTRUE
TraceName
DEL   TraceName : ShortString / Defult: 'APRO.TRC'
C++   AnsiString TraceName; defalut = "APRO.TRC"

トレースログ・ファイル名
TraceSize
DEL   TraceSize : Word / Defult: 10000
C++   unsigned short TraceSize; defalut = 10000

トレースログのバッファ・サイズ
Tracing
DEL   Tracing : TTraceLogState / Default: tlOff
C++   TTraceLogState Tracing; default = tlOff

TTraceLogStateの値内容
tlOffトレース不可/停止
tlOnトレース可/開始
tlDumpDISKに出力(上書き)
tlAppendDISKに出力(追記)
tlClearトレースバッファをクリア
tlPauseトレースを一時停止
UseEventWord
DEL   UseEventWord : Boolean / Default: True
C++   bool UseEventWord; defalut = true

指定の単語を受信した場合にイベントを発生させる場合TRUE
Version
DEL   Version : ShortString
C++   AnsiString Version;

バージョン・ナンバー
XOffChar
DEL   XOffChar : Char / Default: #19(^S)
C++   char XOffChar; defalut = 0x19(^S)

XOff(ASCII 19)キャラクタ
XOnChar
DEL   XOnChar : Char / Default: #17(^Q)
C++   char XOnChar; defalut = 0x17(^Q)

XOn(ASCII 17)キャラクタ
メソッド詳細
ActivateDeviceLayer
DEL   procedure ActivateDeviceLayer; virtual
C++   virtual void ActivateDeviceLayer ();

AddDataTrigger
DEL   function AddDataTrigger (const Data : string; const IgnoreCase : Boolean) : Word;
C++   unsigned short AddDataTrigger (const ShortString& Data, const bool IgnoreCase);

 Dataで指定した文字列に一致するデータを受信した時に、OnTriggerDataイベントを発生させる。
 IgnoreCase を TRUE とした場合、文字列のマッチング時に大文字・小文字を区別しない。
※文字列'UserID:'を受信した場合に、OnTriggerDataが呼び出される。

ApdComPort.AddDataTrigger('UserID:', False);
AddStatusTrigger
DEL   function AddStatusTrigger (const SType : Word) : Word ;
C++   unsigned short AddStatusTrigger (const unsigned short SType);

 ステータスに連動するトリガー(イベント・コールバック)を設定する。
内容
stModemModemステータスが変化した時
stLineLineステータスが変化した時
stOutBuffFree出力バッファが開放された時
stOutBuffUsed出力バッファが使用された時
stOutSentPutChar又はPutBlockが呼ばれた時
AddStringToLog
DEL   procedure AddStringToLog (S : string);
C++   void AddStringToLog (AnsiString S);

 送受信ログにユーザー・ログを埋め込む。
AddTimerTrigger
DEL   function AddTimerTrigger : Word ;
C++   DWORD AddTimerTrigger (void);

 タイマー・コールバック・トリガーを追加する。
AddTraceEntry
DEL   procedure AddTraceEntry (const CurEntry, CurCh : Char);
C++   void AddTraceEntry (const char CurEntry, const char CurCh);

トレースイベントをトレースキューに追加する
CharReady
DEL   function CharReady : Boolean
C++   bool CharReady (void);

配信バッファにキャラクタが残っている場合にTRUE
FlushInBuffer
DEL   procedure FlushInBuffer;
C++   void FlushInBuffer (void);

入力バッファを全てクリアする
FlushOutBuffer
DEL   procedure FlushOutBuffer;
C++   void FlushOutBuffer (void);

出力バッファを全てクリアする
GetBlock
DEL   procedure GetBlock (var Block; Len : Word);
C++   void GetBlock (void* Block, const unsigned short Len);

指定サイズの受信データを受け取り、バッファから削除する
GetChar
DEL   function GetChar : Char;
C++   char GetChar (void);

配信バッファから次のキャラクタを受信する
ProcessCommunications
DEL   procedure ProcessCommunications;
C++   void ProcessCommunications (void);

※WinSokで使われる
PutBlock
DEL   function PutBlock (const Block; const Len : Word) : Integer;
C++   int PutBlock (const void* Block, const unsigned short Len);

データを出力バッファに入れる
PutChar
DEL   procedure PutChar (const C : Char);
C++   void PutChar (const char C);

指定キャラクタを出力バッファに入れる
PutString
DEL   procedure PutString (const S : String);
C++   void PutString (const AnsiString S);

指定文字列を出力バッファに入れる
RemoveAllTriggers
DEL   procedure RemoveAllTriggers ;
C++   void RemoveAllTriggers (void);

ポートに紐付けた全てのトリガーを無効にする
RemoveTrigger
DEL   procedure RemoveTrigger (Handle : Word);
C++   vid RemoveTrigger (unsigned short Handle);

ポートに紐付けたトリガーを無効にする
SendBreak
DEL   procedure SendBreak (Ticks : Word; Yield : Boolean);
C++   void SendBreak (unsigned short Ticks, bool Yield);

Ticksで指定した時間ブレーク信号を送る
1 tick は 55ms、Ticksは回数を指定
SetBreak
DEL   procedure SetBreak (BreakOn : Boolean);
C++   void SetBreak (bool BreakOn);

ブレーク信号の送信を開始/停止する
SetStatusTrigger
DEL   procedure SetStatusTrigger (const Handle : Word ;
 const Value : Word ;
 const Activate : Boolean);
C++   void SetStatusTrigger (const unsigned short SType,
 const unsigned short Value, const bool Activate);

 ステータスの変更時のトリガーを登録/解除する
 TriggerがstModemの場合
Value値内容
msCTSDeltaCTSが変化した時
msDSRDeltaDSRが変化した時
msRingDeltaRI(Ring)を検出した時
msDCDDeltaDCDが変化した時
 TriggerがstLineの場合
Value値内容
lsOverrunUARTオーバーランが発生した時
lsParityパリティエラーが発生した時
lsFramingフレーミングエラーが発生した時
lsBreakライン・ブレークを受信した時
SetTimerTrigger
DEL   procedure SetTimerTrigger (const Handle : Word;
 const Ticks : LongInt;
 const Activate : Boolean);
C++   void SetTimerTrigger (const unsigned short Handle,
 const int Ticks,
 const bool Activate);

 タイマーによるトリガーを登録/解除する
 1 tick は55ms
イベント・コールバック詳細
OnPortClose
DEL   procedure OnPortClose (CP : TObject);
C++   void OnPortClose (TObject *Sender);

COMポートが閉じた時に発生する
OnPortOpen
DEL   procedure OnPortOpen (CP : TObject);
C++   void OnPortOpen (TObject *Sender);

COMポートをオープンした時に発生する
OnTrigger
DEL   procedure OnTrigger (CP : TObject;
 Msg, TriggerHandle, Data : Word);
C++   void OnTrigger (TObject *CP,
 WORD Msg, WORD TriggerHandle, WORD Data);

トリガー発生時ののコールバック関数を登録する
Trigger(Windows Message)値内容
APW_TRIGGERAVAILOnTriggerAvailに紐付ける
APW_TRIGGERDATAOnTriggerDataに紐付ける
APW_TRIGGERTIMEROnTriggerTimerに紐付ける
APW_TRIGGERSTATUSOnTriggerStatusに紐付ける
OnTriggerAvail
DEL   procedure OnTriggerAvail (CP : TObject, Count : Word);
C++   void OnTriggerAvail (TObject *CP, WORD Count);

COM(受信)データが適切に受信された時に発生する
OnTriggerData
DEL   procedure OnTriggerData (CP : TObject, TriggerHandle : Word);
C++   void OnTriggerData (TObject *CP, WORD TriggerHandle);

指定の文字列に一致したデータを受信した時に発生する
OnTriggerLineError
DEL   procedure OnTriggerLineError (CP : TObject,
 Error : Word
 LineBreak : Boolean);
C++   void OnTriggerLineError (TObject *CP,
 WORD Error
 bool LineBreak);

ラインエラー又はラインブレークが発生した時に発生する
OnTriggerModemStatus
DEL   procedure OnTriggerModemStatus (CP : TObject);
C++   void OnTriggerModemStatus (TObject *Sender);

モデム・ステータスが変更した時にに発生する
OnTriggerOutbuffFree
DEL   procedure OnTriggerOutbuffFree (CP : TObject);
C++   void OnTriggerOutbuffFree (TObject *Sender);

送信用バッファの空き容量が規定レベル以上になった時に発生する
OnTriggerOutbuffUsed
DEL   procedure OnTriggerOutbuffUsed (CP : TObject);
C++   void OnTriggerOutbuffUsed (TObject *Sender);

送信用バッファの使用量が規定レベル以下になった時に発生する
OnTriggerOutSent
DEL   procedure OnTriggerOutSent (CP : TObject);
C++   void OnTriggerOutSent (TObject *Sender);

送信要求を受け取った時に発生する
OnTriggerStatus
DEL   procedure OnTriggerStatus (CP : TObject; TriggerHandle : Word);
C++   void OnTriggerStatus (TObject *CP, WORD TriggerHandle);

ライン・ステータスが変化した時に発生する
OnTriggerTimer
DEL   procedure OnTriggerTimer (CP : TObject; TriggerHandle : Word);
C++   void OnTriggerTimer (TObject *CP, WORD TriggerHandle);

タイマー時間が経過した時に発生する
MONZEN.ORG/WAKU MONZEN.ORG/WAKU
アッセンブル