VB.NETでシリアル通信ソフトを制作する最初の関門は、送受信がスムースにできるコードを確定することです。まずツールボックスから SirialPort を Form にドラッグし、そのプロパティに所定のCOMチャンネル、ボーレート、ストップビットを設定します。次に送信のコードは以下のようになります。
以上のコードで FA; を送信し無事 TextBox1 に周波数を受信することができました。次に周波数を連続して受信するコードを試してみました。
-------------------------------------------
Fstart: '周波数の連続受信
TextBox1.Clear()
RcvTextBox.Clear()
CommandStrings = "FA;"
SerialPort1.WriteLine(CommandStrings)
GoTo Fstart
-------------------------------------------
ところがこれが全然動きません。つまり単発の送信はできても連続すると動かない、ということです。そこで試行錯誤を行った結果次のような対策で可能になりました。
・FTdx10のタイムアウトタイマーをデフォルトの10msecに戻す。
・次の位置に遅延時間要素を挿入する。
--------------------------------------
Fstart:
TextBox1.Clear()
RcvTextBox.Clear()
CommandStrings = "FA;"
SerialPort1.WriteLine(CommandStrings)
' FUNCTION でループによる遅延時間要素を作成する、*はそのループ数(遅延時間)設定値
DummyLoop(*)
GoTo Fstart
----------------------------------------------
これで周波数の連続受信が可能になりましたが、この遅延時間の値が動かすPCの性能により変える必要があることが分かりました。例えばPCの動作速度が速い場合、この遅延時間を大きくする必要があります。しかしあまり大きくすると動作しなくなり、その幅はやってみなければ分からない、という状況です。