第2回 Visual Basic 2019で、FTD2XX.DLL利用に挑戦してみる

FT232H

第1回 Visual Basic 2019で、FTD2XX.DLL利用に挑戦してみる」では、FTDI社のホームページから、Visual Basic 2019でFTD2XX.DLLを使ったUARTのサンプルプログラムをダウンロードし、実行してみました。

しかし、”‘DLL ‘C:\WINNT\System32\FTD2XX.DLL’ を読み込めません:指定されたモジュールが見つかりません。”というwarningが発生し、うまく動作しませんでした。

今回は、warningとerrorを修正し、Visual Basic 2019でFTD2XX.DLLの利用を目指したいと思います。

※初心者のため、使っている用語や内容が間違っているかもしれませんが、ご了承ください。

スポンサーリンク

dllファイルのパスの修正

サンプルプログラムには、dllファイルが存在する場所のパスがコーディングされているのですが、このパスが自分の開発環境と異なっているので、まずはそこを修正します。

ソリューションエクスプローラーで、D2XXUnit_NET -> D2XX_Unit_NET.vb -> D2XX_Unit_NETを選択します。

以下のようにdllファイルのパスが出てきます。

FTD2XX.DLLkernel32.dllのパスを全て自分の開発環境に合わせます。

これでdllファイルは適切に読み込めるはずです。

「As’句のない変数宣言です。Object型と見なされます。」の修正

dllファイルの修正は完了しましたが、同じD2XX_Unit_NETの中身を見ていたら、以下のように緑色の波線が引かれた場所がありました。

ここにマウスでカーソルを移動させると、以下のメッセージが表示されました。

「As’句のない変数宣言です。Object型と見なされます。」と表示されていますが、どういう意味かはわかりません。。。

しかし、メッセージに”As Integer = 0″と表示されているので、

Public Const FT_OK = 0

を、以下のように”As Integer”を追加したら、緑色の波線が消えました。

Public Const FT_OK As Integer = 0

なので、緑色の波線が出てる場所のすべてに同じ処理を適用し、緑色の波線を消しました。

Flow Controlの設定変更

最後にフロー制御の設定を無効に設定しておきます。

ソリューションエクスプローラーで、D2XXUnit_NET -> Form1.vb -> Form1を選択します。

フロー制御の設定している、以下のソースコードを探します。

' Set Flow Control
FT_Status = FT_SetFlowControl(FT_Handle, FT_FLOW_RTS_CTS, 0, 0)
If FT_Status <> FT_OK Then
     Exit Sub
End If

ここの、”FT_FLOW_RTS_CTS“を”FT_FLOW_NONE“に変更します。

' Set Flow Control
FT_Status = FT_SetFlowControl(FT_Handle, FT_FLOW_NONE, 0, 0)
If FT_Status <> FT_OK Then
     Exit Sub
End If

ビルドの実行

それではビルドをしてみます。

メニューのビルド -> ソリューションのビルドを選択したところ、以下のビルド結果になりました。

プログラム実行

いよいよプログラム実行です。

ハードウェアは、TXDとRXDとショートさせているだけなので、送信した文字列が受信できれば、とりあえず成功です。

実行すると、まずは以下のメッセージが表示されます。

OKをクリックすると、以下のウインドウが表示されます。

※テキストボックスの背景色を、ちょっと見やすいように変更しています。

送信したい文字列を”String to Write”に”123ABC”と入力し、”Click here to run”をクリックします。

すると、ちょっと見づらいですが、結果が表示されました。

まず、”String Read”には、送信した文字列”123ABC”が返ってきました。とりあえず、UARTの送受信には成功したようです。

その他、”Number of Devices”には”1″と表示され、”Description of Device 0″には”Single RS232-HS”と表示されました。

しかし、”Serial Number of Device 0″には、何も表示されませんでした。

原因調査と再実行

とりあえず、UARTの送受信には成功したようですが、”Serial Number of Device 0″に何も表示されなかったのが気になります。

ちょっと原因を調べてみると、FTDI社のソフト(FT_prog)を使ってFT232Hの設定が保存されたEEPROMの書き換えができるようです。

これで設定を変えるのかと思い、ちょっと使ってみました。

FT_progを起動すると、以下のウインドウが開くので、赤枠の虫眼鏡マークをクリックします。

すると、EEPROMから既存の情報を読み込んでくれるようです。

ここで、”Driver”の項目をクリックすると、”D2XX Direct“と”Virtual COM Port“が選択できるようになっていて、Virtual COM Portが選択されていました。

D2XX Directに設定を変更し、③のカミナリマークをクリックします。

すると、以下のウインドウが表示されるので、”Program”をクリックします。

“Program”をクリックすると、EEPROMが書き換えられたようで、以下のように表示が変わりました。

“FT_prog”を閉じ、FT232HのUSBを一度抜き差しし、再実行してみます。

今度は”456DEF”の文字列を送信してみます。

左が実行前、右が実行後です。

まず、先ほど同様、文字列の送受信は成功しているようです。

“Number of Devices”は、先ほどと同じ結果です。

そして、”Serial Number of Device 0″にも表示が出るようになりました。原因は、FT_progでの設定変更だったようです。

あと、”Description of Device 0″も先ほどと表示内容が変わりました。が、これの原因調査は、やめておきました。キリがないので。。。

Visual Basic 2019パーフェクトマスター

新品価格
¥2,970から
(2020/11/4 10:41時点)

基礎Visual Basic 2019 (IMPRESS KISO SERIES)

新品価格
¥3,520から
(2020/11/4 10:42時点)

おまけ:デバイスマネージャー

デバイスマネージャーを確認したところ、FT_progで”D2XX Direct”を選択後もVCP( USB Serial Port(COM3) )が見えていました。

そこで、”USB Serial Converter”のプロパティを確認したところ、”VCPをロードする”にチェックが入っていました。

このチェックを外し、FT232HのUSBを一度抜き差ししたところ、VCPは見えなくなりました。

まとめ

FTDI社のサンプルプログラムを使って、FTD2XX.DLLを使ってみました。

しかし、アプリ開発は素人で、dllファイルも使ったことがないので、本当にうまく動いているのか???と、ちょっと自信はないです。

自信はないですが、もう少し勉強し、RS232より高速でパソコンとFPGAの通信をさせたいと思っています。

タイトルとURLをコピーしました