0

COM デバイス (Fluke 123 Scopemeter) と通信するプログラムを開発しています。ASCII データを送信している場合、問題はありませんでした。

私がする必要があるのは、ASCII データと HEX データの組み合わせを送信することです。このサイトの多くの投稿を見てきましたが、それらは HEX データのみを送信することに重点を置いているようです。ASCII と HEX を組み合わせて送信する方法を見つける必要があります。つまり、COM デバイスが理解できるように、HEX データを効果的にフォーマットする方法を見つける必要があります。

文字列を作成する方法の例を次に示します。「Conversion from string PS #0x" to type 'Double' is not valid」というエラーが表示されますが、これは 2 つのデータ型を混在させているためだと思います。まっすぐ!

'Building my command line
Command = "PS"
Command += ControlChars.Cr
Command += "#0 x"
Command += &H0 + &H2 + &H0 + &H0 + &H0
Command += " y"
Command += &H0 + &H1 + &H0 + &H0

...

'Writing my command to the COM device
moRS232.Write(Command)

誰でもできる助けをいただければ幸いです。

4

2 に答える 2

1

秘訣は、バイトを送信することです。つまり、文字列をバイトに変換する必要があります。例:

    Dim buf As New List(Of Byte)
    buf.AddRange(moRS232.Encoding.GetBytes("PS" & ControlChars.Cr & "#0 x"))
    buf.AddRange(New Byte() {0, 2, 0, 0, 0})
    buf.AddRange(moRS232.Encoding.GetBytes(" y"))
    buf.AddRange(New Byte() {0, 1, 0, 0})
    moRS232.Write(buf.ToArray, 0, buf.Count)

プロトコールを示したマニュアルはありますか?リンクを貼る場合。

于 2013-02-28T15:18:10.900 に答える
0

その通りです。Fluke が ascii データと hex データの両方を取得すると [1 つのメソッドで送信できたとしても]、Fluke は非常に混乱します。

したがって、Write メソッドに文字列が必要な場合は、16 進コマンドを文字列に変換する必要があります。ASC() / CHR() コマンドも参照してください。

于 2013-02-28T08:45:59.307 に答える