アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
VB2005を使用しています。
温調器から温度データを引っ張るプログラムを作成しています。
8桁の文字列を16進数バイト配列に変換したいのですが、GetBytesでは10進数バイト配列に変換されてしまいます。
8桁の文字列又は10進数バイト配列を16進数バイト配列に変換する方法はないでしょうか?
文字列を1文字ずつ16進数に変換して配列に組み込んでいくしかないのでしょうか?
よろしくお願い致します。

A 回答 (2件)

その温度計のメーカーには問い合わせしたのでしょうか


サンプルとかはないのですか

たとえば "GET" といった文字列を送りたい場合
どのように変換したものを送ればいいのかなど

"GET" を "474554"といった文字列に変換して送信なのか
『474554』といった文字列が必要なら

dim bld as new System.Text.StringBuilder
dim ss as string
for each _byte as Byte in AryByte
  bld.Append( String.Format( "{0:X2}", _byte ) )
next
ss = build.ToString
SerialPort1.Write( ss, 0, ss.length )
といった具合でよさそうですが

メーカのWebページなどにその機器の使い方のサンプルがあるなら
明示してみるといいかもしれませんよ
    • good
    • 0
この回答へのお礼

redfoxさん、回答ありがとうございます。
メーカーに確認した所、私の勘違いだった事がわかりました。
8桁文字列を変換する必要は無く、そのまま文字列送信で良かったのです。
文字列送信する事で、データを受け取る事が出来ました。
今後は、もっと良く確認してからご相談させて頂きます。
本当に申し訳御座いませんでした。

お礼日時:2009/04/07 14:21

16進数で表示したいってことですか?



取得した配列の出力を
dim ss as String
dim bld as new StringBuilder
for each _byte as Byte in b
  bld.Append( String::Format( "{0,-3:X2}", _byte ) )
next
ss = bld.ToString
といった具合で 配列bに取得したデータを 文字列ssに16進数として取得できます

VBの中で扱う変数に 10進数/16進数の区別はありませんよ

この回答への補足

redfox63さん、回答ありがとうございます。
説明が足りませんでしたので補足します。
シリアル通信で温調器から温度データを引っ張りたいと思っています。
Dim strSend As String
Dim AryByte() As Byte = Encoding.ASCII.GetBytes(strSend)
SerialPort1.Write(AryByte, 0, AryByte.Length)
としたのですが、温調器からの応答がありませんでした。
マニュアルには"送信コードは、16進数に変換しアスキーコード化"と書かれており、
AryByreの中身を確認すると10進数のアスキーコードが格納されていました。
送信コードを16進数のアスキーコードにしたいのです。

宜しくお願い致します。

補足日時:2009/04/01 16:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!