リグコントロールの一つ、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-シリアル変換デバイスでも動作出来るよう悪戦苦闘しています。