ソースコード解説_2(Excelでシリアル通信-6)

Excelからシリアル通信を実現してみようという連載の6回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

前回はLoopBackTestTool(以下、本ツール)のソースコードを解説しました。

今回は使用しいるダイナミック リンク ライブラリ (DLL) の参照、その他の宣言について解説しようと思います。

使用するダイナミック リンク ライブラリ (DLL)

本ツールでは、ダイナミック リンク ライブラリ (DLL) を使用してシリアル通信を実現しています。以下に使用してイメDLLをご紹介します。

ファイルのオープンとクローズ

本ツールでは、シリアル通信で通信する先をファイルとして扱います。通信する前にファイルをオープン、通信が終わった後にはファイルをクローズします。

ファイルのオープンには「CreateFileA」を使います。オープンするとハンドルと呼ばれる値を返します。

learn.microsoft.com

ファイルのクローズには「CloseHandle」を使います。「CreateFileA」で受け取ったハンドルを指定してクローズします。

learn.microsoft.com

'ファイルのオープン
Public Declare PtrSafe Function _
    CreateFile Lib "kernel32" Alias "CreateFileA" ( _
        ByVal lpFileName As String, _
        ByVal dwDesiredAccess As Long, _
        ByVal dwShareMode As Long, _
        ByVal lpSecurityAttributes As Long, _
        ByVal dwCreationDisposition As Long, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal hTemplateFile As Long) _
As Long

'ファイルのクローズ
Public Declare PtrSafe Function _
    CloseHandle Lib "kernel32" ( _
        ByVal hObject As Long) _
As Long

バッファーの操作

実際の通信にあたっては、送信するデータ、受信するデータはバッファーと呼ばれる領域に一時的に格納されます。送信用のバッファーに格納されたデータは逐次送信処理が実行されます。受信データは受信用のバッファーに格納され、コチラが読込み指示をした際にバッファーからデータを取り出します。

通信を開始する前にバッファーの内容をクリアする必要があります。バッファーのクリアは「PurgeComm」を使用します。

learn.microsoft.com

バッファーの状態を確認するために「ClearCommError」を使用しています。本ツールでは受信データの有無に使用しています。

learn.microsoft.com

バッファーのサイズ指定には「SetupComm」を使用しています。

learn.microsoft.com

'バッファのクリア
Public Declare PtrSafe Function _
    PurgeComm Lib "kernel32" ( _
        ByVal hFile As Long, _
        ByVal dwFlags As Long) _
As Long

'バッファの状態を取得
Public Declare PtrSafe Function _
    ClearCommError Lib "kernel32" ( _
        ByVal hFile As Long, _
        ByRef lpErrors As Long, _
        ByRef lpStat As COMSTAT) _
As Long

'バッファサイズの指定
Public Declare PtrSafe Function _
    SetupComm Lib "kernel32" ( _
        ByVal hFile As Long, _
        ByVal dwInQueue As Long, _
        ByVal dwOutQueue As Long) _
As Long

次回もひきつづきソースコード解説

いかがでしょうか。詳細を書いているといくら紙面があっても書ききれませんので、詳細はご紹介したURLを参考にしてください。余談ですがMicrosoftの公式サイトって、少しだけわかりやすくなってませんか?次回もソースコード解説(これが最後)です。お楽しみに!!

hirocom777.hatenadiary.org