|
■No75068 (ガッキー さん) に返信
> @入力した文字列をHEX、ASCUコードに変換し、配列の中に代入する。
この部分が少し違うかもしれません。
送信コマンドの仕様として
1バイト目 02H
2バイト目 30H "0"
3バイト目 30H "0" 2バイト目と3バイト目を合わせて Node No.
4バイト目 30H "0"
5バイト目 30H "0" 4バイト目と5バイト目を合わせて Sub Address
6バイト目 30H "0" SID
という感じになるのだと思われます。
(コマンドで Google 検索をしたらそれらしき機器の説明書が見つかりました)
なので Node No. を代入している部分
> '--- Node No(00〜31番)
> NodeNo = "00"
>
> '--- サブアドレス
> SubAdd = "00"
> byttmp(2) = Asc(SubAdd)
> byttmp(1) = Asc(NodeNo)
は、このような感じになるかと思います。
> '--- Node No(00〜31番)
> NodeNo = "00"
>
> '--- サブアドレス
> SubAdd = "00"
> byttmp(1) = CByte(Asc(NodeNo.SubString(0,1)))
> byttmp(2) = CByte(Asc(NodeNo.SubString(1,1)))
> byttmp(3) = CByte(Asc(SubAdd.SubString(0,1)))
> byttmp(4) = CByte(Asc(SubAdd.SubString(1,1)))
以下 byttmp のサイズもそれに合わせて大きくなると思います。
この場合は
> Dim byttmp As List(Of Byte())
のように宣言して
> '--- Node No(00〜31番)
> NodeNo = "00"
>
> '--- サブアドレス
> SubAdd = "00"
> byttmp.Add(CByte(Asc(NodeNo.SubString(0,1))))
> byttmp.Add(CByte(Asc(NodeNo.SubString(1,1))))
> byttmp.Add(CByte(Asc(SubAdd.SubString(0,1))))
> byttmp.Add(CByte(Asc(SubAdd.SubString(1,1))))
(中略)
> 'シリアルポートからデータを送信する.
> SerialPort1.Write(byttmp.ToArray(), 0, byttmp.Count)
と書いたほうがいいかもしれませんね。
|