リグコントロールの一つ、CI-V(IC-7400)での周波数読込みプログラム(VB6)を紹介します。 プログラムソースも記載していますので興味ある方は、参考にして下さい。 リグからのデータ受信方法はポーリング方式とイベントドリブン方式があるようですが 私は、イベントドリブン方式を使いました。 イベントドリブン方式 MSComm1.RThreshold = 1(受信文字数の値) '例 1文字受信したらイベントを発生させる。 Private Sub MSComm1_OnComm() Dim Buffer If MSComm1.CommEvent = comEvReceive Then Buffer = MSComm1.Input ' 受信バッファ内のデータをすべて取り出す End If End Sub 当HPで紹介しているCWYY(Ver1.29)の周波数読込み部分は、下の1.で紹介しているプログラムですが CWYYの改善の中で下に記載の2.の読込み方を見つけました。 この方法だとCWYY(Ver1.29)でデータ受信処理がうまくいかないUSB-シリアル変換デバイスでも動作可の光が見えてきました。 IC-7400取説のトランシーバーからPCへのデーターフォーマット @ ABCDE F FEFEE066XXXXXXXXXXXXFD @ プリアンブル (2byte) A 受信アドレス(1byte) B 送信アドレス(1byte) C コマンド (1byte) D サブコマンド (1byte) E データエリア (4byte) F ポストアンブル(1byte) 1.このプログラムは、MSComm1.RThreshold = 1で、1文字づつ受信して、文字数が1ならHEX関数処理した後 捉えた文字の前に"0"を連結して22文字受信します。 次に22文字を2文字づつ11個の変数に入れる。フォーマットではデータエリアは4byteだが実際は5byteになっている。 この方法は、動きが速くていいのですが、データ受信処理がうまくいかないUSB-シリアル変換デバイスがあります。 ソース 2.このプログラムは、MSComm1.RThreshold = 11で、11文字一度に受信して、受信した文字をHEX関数処理した後 文字数が1なら文字の前に"0"を連結して変数に代入します。この方法でもフォーマットではデータエリアは4byteだが 実際は5byteになっている。 この方法は、動きは鈍いですが、1.でデータ受信処理がうまくいかないUSB-シリアル変換デバイスの解決が見えてきました。 ソース 試行錯誤の中で、ポイントとなる点がありました。 1.MSComm1.InputMode = comInputModeBinaryにする。 2.MSComm1.RThreshold = 1この値を変えて見る 3.MSComm1.Output = bufの値を変えて見る(DIM buf(10) as byte) 2.と3.の設定を色々変えることにより最適値がつかめる。 現在、CWYY Ver1.29で動作しなかったUSB-シリアル変換デバイスでも動作出来るよう悪戦苦闘しています。