TNB Library
クラス | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CRs232cEx クラス

拡張RS232Cアクセスクラス. [詳解]

#include <TnbRs232cEx.h>

+ CRs232cEx の継承関係図

クラス

struct  IListener
 拡張RS232Cイベントリスナー [詳解]
 

公開型

enum  { LOW = true , HI = false }
 信号線状態. [詳解]
 
enum  EParity {
  Parity_Non = NOPARITY , Parity_Odd = ODDPARITY , Parity_Even = EVENPARITY , Parity_Mark = MARKPARITY ,
  Parity_Space = SPACEPARITY
}
 パリティ設定値 [詳解]
 
enum  EState { OPENNING , CONNECTING , CLOSED }
 状態 [詳解]
 
enum  EStopBits { StopBits_1 = ONESTOPBIT , StopBits_1_5 = ONE5STOPBITS , StopBits_2 = TWOSTOPBITS }
 ストップビット設定値 [詳解]
 
typedef CVectorT< TDeviceTDeviceVector
 デバイス情報配列. [詳解]
 

公開メンバ関数

virtual bool CanReceive (void) const
 [確認] 受信可能確認. [詳解]
 
virtual bool CanSend (void) const
 [確認] 送信可能確認. [詳解]
 
virtual EState Check (void) const
 [確認] チェック. [詳解]
 
virtual void Close (void)
 [処理] クローズ. [詳解]
 
 CRs232cEx (void)
 コンストラクタ [詳解]
 
HANDLE GetHandle (void) const
 [取得] ハンドル取得 [詳解]
 
void GetParameter (CPort &_comPort, DWORD &_dwBaudRate, BYTE &_bByteSize, EParity &_eParity, EStopBits &_eStopBits) const
 [取得] オープン設定取得. [詳解]
 
virtual const TPropertyGetProperty (void) const
 [取得] 性能取得 [詳解]
 
virtual size_t GetReceivingDataSize (void) const
 [確認] 受信データ確認. [詳解]
 
virtual bool IsConnect (void) const
 [確認] 接続確認. [詳解]
 
bool IsCtsSignalLow (void) const
 [取得] CTS 確認. [詳解]
 
bool IsCtsSignalOn (void) const
 [取得] CTS 確認. [詳解]
 
bool IsDsrSignalLow (void) const
 [取得] DSR 確認. [詳解]
 
bool IsDsrSignalOn (void) const
 [取得] DSR 確認. [詳解]
 
virtual bool IsOpened (void) const
 [確認] オープン確認. [詳解]
 
bool IsRingSignalLow (void) const
 [取得] RING 確認. [詳解]
 
bool IsRingSignalOn (void) const
 [取得] RING 確認. [詳解]
 
bool IsRlsdSignalLow (void) const
 [取得] RLSD 確認. [詳解]
 
bool IsRlsdSignalOn (void) const
 [取得] RLSD 確認. [詳解]
 
virtual bool Open (void)
 [処理] オープン. [詳解]
 
bool PaddingReceive (DWORD dwTime)
 [操作] パディング読み込み [詳解]
 
virtual void Purge (void)
 [設定] パージ. [詳解]
 
virtual size_t Receive (size_t size, LPVOID _P)
 [処理] 受信. [詳解]
 
CThreadStatusReferThreadStatus (void)
 [参照] 監視スレッド状態参照. [詳解]
 
virtual size_t Send (size_t size, LPCVOID P)
 [処理] 送信. [詳解]
 
void SetCheckCtsMode (bool r=true)
 [設定] CTSチェック設定. [詳解]
 
bool SetDtrSignal (bool isLow)
 [設定] DTR 設定. [詳解]
 
void SetListener (IListener *P)
 [設定] リスナー登録. [詳解]
 
void SetListenEvent (DWORD event)
 [設定] 監視するイベント指定. [詳解]
 
DWORD SetParameter (CPort comPort, DWORD dwBaudRate, BYTE bByteSize, EParity eParity, EStopBits eStopBits)
 [設定] オープン設定. [詳解]
 
virtual bool SetReceiveTimeout (DWORD to)
 [設定] 受信待ち時間設定. [詳解]
 
bool SetRtsSignal (bool isLow)
 [設定] RTS 設定. [詳解]
 
void SetSendMode (bool canBulk)
 [設定] 送信設定. [詳解]
 
 ~CRs232cEx (void)
 デストラクタ [詳解]
 

静的公開メンバ関数

static DWORD CanPortBeOpened (CPort comPort)
 [確認] 指定ポートは開けるか [詳解]
 
static TDeviceVector EnumExistPortDeviceNames (void)
 [取得] 存在するPort一覧 [詳解]
 
static CWordVector EnumExistPorts (void)
 [取得] 存在するPort一覧 [詳解]
 
static CWordVector EnumExistPortsByUsb (WORD vid, WORD pid)
 [取得] USBシリアルPort一覧. [詳解]
 

限定公開メンバ関数

virtual HANDLE CreatePort (LPCTSTR lpszPortName) const
 [通知] ポート作成. [詳解]
 
virtual bool OnRs232cOpening (HANDLE hComPort, DCB &_tDCB, COMMTIMEOUTS &_tCommTimeOuts)
 [通知] オープン通知. [詳解]
 
virtual bool ReadPort (size_t &_redSize, LPVOID _P, size_t len, HANDLE h) const
 [通知] ポート読み込み. [詳解]
 
virtual DWORD Run (void)
 [動作] スレッド処理本体 [詳解]
 
virtual bool WritePort (size_t &_writtenSize, size_t len, LPCVOID P, HANDLE h) const
 [通知] ポート書き込み. [詳解]
 

詳解

拡張RS232Cアクセスクラス.

覚え書き
リスナー内で SendMessage を使う場合、 ReferThreadStatus()関連ウィンドウを指定する 必要があります。 CThread::SetOwnerHwnd() を参照してください。
必要ファイル
TnbRs232cEx.h
日付
09/11/13 新規作成
10/03/19 ReferThreadStatus() 追加。

TnbRs232cEx.h131 行目に定義があります。

型定義メンバ詳解

◆ TDeviceVector

typedef CVectorT<TDevice> TDeviceVector
inherited

デバイス情報配列.

TnbRs232c.h867 行目に定義があります。

列挙型メンバ詳解

◆ anonymous enum

anonymous enum
inherited

信号線状態.

列挙値
LOW 

LOW (ON)

HI 

HI (OFF)

TnbRs232c.h632 行目に定義があります。

◆ EParity

enum EParity
inherited

パリティ設定値

列挙値
Parity_Non 

なしパリティ

Parity_Odd 

奇数パリティ

Parity_Even 

偶数パリティ

Parity_Mark 

マークパリティ

Parity_Space 

空白パリティ

TnbRs232c.h194 行目に定義があります。

◆ EState

enum EState
inherited

状態

列挙値
OPENNING 

オープン状態

CONNECTING 

オープン&接続状態

CLOSED 

クローズ状態

TnbCommunication.h38 行目に定義があります。

◆ EStopBits

enum EStopBits
inherited

ストップビット設定値

列挙値
StopBits_1 

1bit

StopBits_1_5 

1.5bit

StopBits_2 

2bit

TnbRs232c.h211 行目に定義があります。

構築子と解体子

◆ CRs232cEx()

CRs232cEx ( void  )

コンストラクタ

TnbRs232cEx.h171 行目に定義があります。

◆ ~CRs232cEx()

~CRs232cEx ( void  )

デストラクタ

TnbRs232cEx.h180 行目に定義があります。

関数詳解

◆ CanPortBeOpened()

static DWORD CanPortBeOpened ( CPort  comPort)
staticinherited

[確認] 指定ポートは開けるか

引数
comPortCOMポートナンバー。 数値でも文字列でも指定可能です。
戻り値
0成功。
0以外エラー。数値はシステムエラーコードです( SystemErrorToMessageText() で文字列化できます)。

TnbRs232c.h802 行目に定義があります。

◆ CanReceive()

virtual bool CanReceive ( void  ) const
virtualinherited

[確認] 受信可能確認.

戻り値
true受信可能。
false不可能。

CCeUsbHid, CFileCommunicator, CVmRs232c, CUsbHidで再実装されています。

TnbCommunication.h119 行目に定義があります。

◆ CanSend()

virtual bool CanSend ( void  ) const
virtualinherited

[確認] 送信可能確認.

戻り値
true送信可能。
false不可能。

CCeUsbHid, CFileCommunicator, CVmRs232c, CUsbHidで再実装されています。

TnbCommunication.h112 行目に定義があります。

◆ Check()

virtual EState Check ( void  ) const
virtualinherited

[確認] チェック.

状態を確認します。定期的に呼び出す必要があります。

覚え書き
CONNECTING は、 CTS 信号により判断しますので、 SetCheckCtsMode() で true を指定している必要があります。
戻り値
OPENNINGオープン状態
CONNECTINGオープン&接続状態
CLOSEDクローズ状態

ICommunicationを再実装しています。

TnbRs232c.h432 行目に定義があります。

◆ Close()

virtual void Close ( void  )
virtual

[処理] クローズ.

CRs232cを再実装しています。

TnbRs232cEx.h258 行目に定義があります。

◆ CreatePort()

virtual HANDLE CreatePort ( LPCTSTR  lpszPortName) const
protectedvirtual

[通知] ポート作成.

ポート作成時、コールされます。

引数
lpszPortNameポート名
戻り値
INVALID_HANDLE_VALUE失敗。
上記以外成功。値はハンドル。使用後は CloseHandle() してください。

CRs232cを再実装しています。

TnbRs232cEx.h360 行目に定義があります。

◆ EnumExistPortDeviceNames()

static TDeviceVector EnumExistPortDeviceNames ( void  )
staticinherited

[取得] 存在するPort一覧

戻り値
存在するポートNo、名前一覧(Sizeが2でport内容が 1,4 なら "COM1" "COM4"が使用可能)

TnbRs232c.h873 行目に定義があります。

◆ EnumExistPorts()

static CWordVector EnumExistPorts ( void  )
staticinherited

[取得] 存在するPort一覧

戻り値
存在するポートNo一覧(Sizeが2で内容が 1,4 なら "COM1" "COM4"が使用可能)

TnbRs232c.h884 行目に定義があります。

◆ EnumExistPortsByUsb()

static CWordVector EnumExistPortsByUsb ( WORD  vid,
WORD  pid 
)
staticinherited

[取得] USBシリアルPort一覧.

引数
vidVendorID (USB)
pidProductID (USB)
戻り値
存在するポートNo一覧(Sizeが2で内容が 1,4 なら "COM1" "COM4"が使用可能)

TnbRs232c.h913 行目に定義があります。

◆ GetHandle()

HANDLE GetHandle ( void  ) const
inherited

[取得] ハンドル取得

戻り値
NULLオープンしていない。
NULL以外ハンドル

TnbRs232c.h339 行目に定義があります。

◆ GetParameter()

void GetParameter ( CPort _comPort,
DWORD &  _dwBaudRate,
BYTE &  _bByteSize,
EParity _eParity,
EStopBits _eStopBits 
) const
inherited

[取得] オープン設定取得.

SetParameter() で設定した値を取得できます。

引数
[out]_comPortポートナンバー。
[out]_dwBaudRate転送速度[bps]
[out]_bByteSizeキャラクタビット[bits]
[out]_eParityパリティ(偶数/奇数)
[out]_eStopBitsストップビット[bits]

TnbRs232c.h251 行目に定義があります。

◆ GetProperty()

virtual const TProperty & GetProperty ( void  ) const
virtual

[取得] 性能取得

覚え書き
正確な情報は Open後に取得できます。
戻り値
性能情報

CRs232cを再実装しています。

TnbRs232cEx.h218 行目に定義があります。

◆ GetReceivingDataSize()

virtual size_t GetReceivingDataSize ( void  ) const
virtualinherited

[確認] 受信データ確認.

戻り値
INVALID_SIZE不明。
上記以外受信可能データサイズ。

ICommunicationを再実装しています。

TnbRs232c.h410 行目に定義があります。

◆ IsConnect()

virtual bool IsConnect ( void  ) const
virtualinherited

[確認] 接続確認.

覚え書き
Check() の結果を返します。
戻り値
true接続中。
false切断中。

ICommunicationを再実装しています。

TnbRs232c.h400 行目に定義があります。

◆ IsCtsSignalLow()

bool IsCtsSignalLow ( void  ) const
inherited

[取得] CTS 確認.

CTS(clear-to-send)信号の状態を確認します。

覚え書き
JIS での名称は「CS(送信可)」。
クロスケーブルの場合
RTS(7) ----------> CTS(8)
CTS(8) <---------- RTS(7)
戻り値
trueLOW(ON)
falseHI(OFF)

TnbRs232c.h686 行目に定義があります。

◆ IsCtsSignalOn()

bool IsCtsSignalOn ( void  ) const
inherited

[取得] CTS 確認.

覚え書き
IsCtsSignalLow() を使用してください。
戻り値
trueON(LOW)
falseOFF(HI)

TnbRs232c.h758 行目に定義があります。

◆ IsDsrSignalLow()

bool IsDsrSignalLow ( void  ) const
inherited

[取得] DSR 確認.

DSR(data-set-ready)信号の状態を確認します。

覚え書き
JIS での名称は「DR(データセットレディ)」。
クロスケーブルの場合
DTR(4) ----------> DSR(6)
DSR(6) <---------- DTR(4)
戻り値
trueLOW(ON)
falseHI(OFF)

TnbRs232c.h708 行目に定義があります。

◆ IsDsrSignalOn()

bool IsDsrSignalOn ( void  ) const
inherited

[取得] DSR 確認.

覚え書き
IsDsrSignalLow() を使用してください。
戻り値
trueON(LOW)
falseOFF(HI)

TnbRs232c.h769 行目に定義があります。

◆ IsOpened()

virtual bool IsOpened ( void  ) const
virtualinherited

[確認] オープン確認.

戻り値
trueオープン中。
falseクローズ中。

ICommunicationを実装しています。

TnbRs232c.h389 行目に定義があります。

◆ IsRingSignalLow()

bool IsRingSignalLow ( void  ) const
inherited

[取得] RING 確認.

RING 信号の状態を確認します。

覚え書き
別表記として「RI」。
戻り値
trueLOW(ON)
falseHI(OFF)

TnbRs232c.h725 行目に定義があります。

◆ IsRingSignalOn()

bool IsRingSignalOn ( void  ) const
inherited

[取得] RING 確認.

覚え書き
IsRingSignalLow() を使用してください。
戻り値
trueON(LOW)
falseOFF(HI)

TnbRs232c.h780 行目に定義があります。

◆ IsRlsdSignalLow()

bool IsRlsdSignalLow ( void  ) const
inherited

[取得] RLSD 確認.

RLSD(receive-line-signal-detect)信号の状態を確認します。

覚え書き
別表記として「DCD」。
戻り値
trueLOW(ON)
falseHI(OFF)

TnbRs232c.h742 行目に定義があります。

◆ IsRlsdSignalOn()

bool IsRlsdSignalOn ( void  ) const
inherited

[取得] RLSD 確認.

覚え書き
IsRlsdSignalLow() を使用してください。
戻り値
trueON(LOW)
falseOFF(HI)

TnbRs232c.h791 行目に定義があります。

◆ OnRs232cOpening()

virtual bool OnRs232cOpening ( HANDLE  hComPort,
DCB &  _tDCB,
COMMTIMEOUTS &  _tCommTimeOuts 
)
protectedvirtualinherited

[通知] オープン通知.

オープン時、コールされます。

引数
[in]hComPortハンドル
[in,out]_tDCB現在の DCB が渡されます。変更することで設定を変更できます。
[in,out]_tCommTimeOuts現在の COMMTIMEOUTS が渡されます。変更することで設定を変更できます。
戻り値
trueオープン処理継続。
falseオープン処理中止(Openが失敗します)。

CRs232cHfで再実装されています。

TnbRs232c.h942 行目に定義があります。

◆ Open()

virtual bool Open ( void  )
virtual

[処理] オープン.

戻り値
true成功。
false失敗。

CRs232cを再実装しています。

TnbRs232cEx.h241 行目に定義があります。

◆ PaddingReceive()

bool PaddingReceive ( DWORD  dwTime)
inherited

[操作] パディング読み込み

覚え書き
オープンしているポートで空読み込みをします。
引数
dwTime受信情報なしの時間指定。
戻り値
true成功
false失敗

TnbRs232c.h570 行目に定義があります。

◆ Purge()

virtual void Purge ( void  )
virtualinherited

[設定] パージ.

通信のゴミを浄化

ICommunicationを再実装しています。

TnbRs232c.h558 行目に定義があります。

◆ ReadPort()

virtual bool ReadPort ( size_t &  _redSize,
LPVOID  _P,
size_t  len,
HANDLE  h 
) const
protectedvirtual

[通知] ポート読み込み.

ポート読み込み時、コールされます。

引数
[out]_redSize書き込んだサイズが格納されます。
[out]_P読み込みデータが格納されます。
[in]len読み込みデータ最大
[in]hハンドル
戻り値
true成功
false失敗

CRs232cを再実装しています。

TnbRs232cEx.h402 行目に定義があります。

◆ Receive()

virtual size_t Receive ( size_t  size,
LPVOID  _P 
)
virtual

[処理] 受信.

引数
[in]sizeサイズ。
[out]_Pデータ。size 分のメモリは確保しておく必要があります。
戻り値
INVALID_SIZEエラー。
0受信データなし。
上記以外受信データサイズ。

CRs232cを再実装しています。

TnbRs232cEx.h276 行目に定義があります。

◆ ReferThreadStatus()

CThreadStatus & ReferThreadStatus ( void  )

[参照] 監視スレッド状態参照.

戻り値
スレッド状態の参照.

TnbRs232cEx.h308 行目に定義があります。

◆ Run()

virtual DWORD Run ( void  )
protectedvirtual

[動作] スレッド処理本体

覚え書き
この関数にスレッドの処理を記述します。 ループで IsRunnable() をコールし、偽なら関数をリターンするように、 する必要が有ります。
戻り値
戻り値。 CThread::GetThreadResult() で得られる値です。

CThread::IRunnerを実装しています。

TnbRs232cEx.h322 行目に定義があります。

◆ Send()

virtual size_t Send ( size_t  size,
LPCVOID  P 
)
virtualinherited

[処理] 送信.

引数
sizeサイズ。
Pデータ。
戻り値
INVALID_SIZEエラー。
上記以外送信データサイズ。0の可能性もあります。

ICommunicationを実装しています。

TnbRs232c.h462 行目に定義があります。

◆ SetCheckCtsMode()

void SetCheckCtsMode ( bool  r = true)
inherited

[設定] CTSチェック設定.

CTS信号が立っている時だけ接続とするモードと、CTS信号を無視するモードを選択できます。

引数
rture なら CTS信号をチェックします。デフォルトはチェックしません。

TnbRs232c.h319 行目に定義があります。

◆ SetDtrSignal()

bool SetDtrSignal ( bool  isLow)
inherited

[設定] DTR 設定.

DTR(data-terminal-ready)信号の状態を設定します。

覚え書き
JIS での名称は「ER(データ端末レディ)」。
クロスケーブルの場合
DTR(4) ----------> DSR(6)
DSR(6) <---------- DTR(4)
引数
isLow状態。 CRs232c::LOWCRs232c::HI を指定。
戻り値
true成功
false失敗

TnbRs232c.h651 行目に定義があります。

◆ SetListener()

void SetListener ( IListener P)

[設定] リスナー登録.

引数
Pリスナー

TnbRs232cEx.h208 行目に定義があります。

◆ SetListenEvent()

void SetListenEvent ( DWORD  event)

[設定] 監視するイベント指定.

引数
event監視するイベント。以下のイベントを or で連結してしています。デフォルトは全て監視対象になっています。
  • EV_BREAK – 入力上でブレークを検出したとき。
  • EV_CTS – CTS( 送信可)信号の状態が変わったとき。
  • EV_DSR – DSR( データセットレディ)信号の状態が変わったとき。
  • EV_ERR – 回線状態エラーが発生したとき。回線状態エラーには、CE_FRAME、CE_OVERRUN、CE_RXPARITY があります。
  • EV_RING – 呼び出し信号を検出したとき。
  • EV_RLSD – RLSD( 受信線信号検出)信号の状態が変わったとき。
  • EV_RXCHAR – 1 文字受信し、入力バッファに入れたとき。
  • EV_RXFLAG – イベント文字を受信し、入力バッファに入れたとき。イベント文字はデバイスの DCB 構造体で指定します。この構造体を使ってシリアルポートを設定するには、SetCommState 関数を使います。
  • EV_TXEMPTY – 出力バッファの最後の文字を送信したとき。

TnbRs232cEx.h199 行目に定義があります。

◆ SetParameter()

DWORD SetParameter ( CPort  comPort,
DWORD  dwBaudRate,
BYTE  bByteSize,
EParity  eParity,
EStopBits  eStopBits 
)
inherited

[設定] オープン設定.

RS232Cの設定を行います。通常、 Open の前に使用します。

覚え書き
Open 前に実行した場合必ず成功します。
オープン中、本メソッドでCOMポートナンバーを変更した場合、クローズされます。
オープン中、本メソッドを使用した場合、エラーになる可能性もあります。
引数
comPortCOMポートナンバー。 数値でも文字列でも指定可能です。
dwBaudRate転送速度[bps]
bByteSizeキャラクタビット[bits]
eParityパリティ(偶数/奇数)
eStopBitsストップビット[bits]
戻り値
0成功。
0以外エラー。数値はシステムエラーコードです( SystemErrorToMessageText() で文字列化できます)。

TnbRs232c.h274 行目に定義があります。

◆ SetReceiveTimeout()

virtual bool SetReceiveTimeout ( DWORD  to)
virtual

[設定] 受信待ち時間設定.

Receive() 実行時、受信できるデータが無い時に待つ時間を設定できます。

覚え書き
成功すると、プロパティが変更される可能性があります。
引数
toタイムアウト時間 (ms)。
戻り値
true 成功。

CRs232cを再実装しています。

TnbRs232cEx.h230 行目に定義があります。

◆ SetRtsSignal()

bool SetRtsSignal ( bool  isLow)
inherited

[設定] RTS 設定.

RTS(request-to-send)信号の状態を設定します。

覚え書き
JIS での名称は「RS(送信要求)」。
クロスケーブルの場合
RTS(7) ----------> CTS(8)
CTS(8) <---------- RTS(7)
引数
isLow状態。 CRs232c::LOWCRs232c::HI を指定。
戻り値
true成功
false失敗

TnbRs232c.h669 行目に定義があります。

◆ SetSendMode()

void SetSendMode ( bool  canBulk)
inherited

[設定] 送信設定.

送信設定をおこないます。デフォルトはバルク(一括)モードです。

引数
canBulkture ならバルク(一括)モードで送信します。 false なら、一バイトずつ送信します。

TnbRs232c.h309 行目に定義があります。

◆ WritePort()

virtual bool WritePort ( size_t &  _writtenSize,
size_t  len,
LPCVOID  P,
HANDLE  h 
) const
protectedvirtual

[通知] ポート書き込み.

ポート書き込み時、コールされます。

引数
[out]_writtenSize書き込んだサイズが格納されます。
[in]len書き込みデータサイズ
[in]P書き込みデータ
[in]hハンドル
戻り値
true成功
false失敗

CRs232cを再実装しています。

TnbRs232cEx.h379 行目に定義があります。