| ■75068 / ) |
シリアル通信 送信コマンド(VB2008) |
□投稿者/ ガッキー (1回)-(2015/02/24(Tue) 13:57:19)
|
分類:[VB.NET/VB2005 以降]
仕事で通信プログラムを作る事になったのですが、 プログラムが初めてなので(まだ3日程)、考え方とコードのご教示頂けないでしょうか。 RS-485通信で送信するプログラムをVB2008で作成しています。
送信コマンドの仕様ですが @STX(HEX)02Hで固定 ANode No(ASCU)00〜31番までの可変 BSub Add(ASCU)00と固定 CSID(ASCU)0で固定 DMRC(ASCU)01で固定 ESRC(ASCU)01で固定 FVAR(ASCU)40orC2の可変 GReadStAd(ASCU)0000の固定 HBIT(ASCU)00の固定 IEle(ASCU)0001or000Bの可変 JEXT(HEX)03Hで固定 KBCC(HEX)A〜Jまでの値を利用 これらをまとめたデータ [@STX]+[ANode No]+[BSub Add]+[CSID]+[DEFGHIFINE]+[JEXT]+[KBCC] を送信コマンドとして、データを送信します。
送信はSerialPort.Writeを利用
私のイメージとしては、 @入力した文字列をHEX、ASCUコードに変換し、配列の中に代入する。 A代入された配列の要素を一つに結合して変数に入れる。 BSerialPort.Write関数を使ってデータを送信する。 というイメージなのですが、あっていますでしょうか? 途中段階ですが、コードを載せますので、アドバイス等お願い致します。 Dim byttmp(11) As Byte Dim NodeNo As String Dim SubAdd As String Dim SID As String Dim MRC As String Dim SRC As String Dim Var As String Dim ReadStAd As String Dim Bit As String Dim Ele As String Dim BCC As Byte
'--- 配列初期化 Array.Clear(byttmp, 0, byttmp.Length)
'--- STX byttmp(0) = 2
'--- Node No(00〜31番) NodeNo = "00"
'--- サブアドレス SubAdd = "00" byttmp(2) = Asc(SubAdd) byttmp(1) = Asc(NodeNo)
'--- SID SID = "0" byttmp(3) = Asc(SID)
'--- MRC MRC = "01" byttmp(4) = Asc(MRC)
'--- SRC SRC = "01" byttmp(5) = Asc(SRC)
'--- Var Var = "40" byttmp(6) = Asc(Var)
'--- ReadStAd ReadStAd = "0000" byttmp(7) = Asc(ReadStAd)
'--- Bit Bit = "00" byttmp(8) = Asc(Bit)
'--- Ele Ele = "0001" byttmp(9) = Asc(Ele)
'--- EXT byttmp(10) = 3
'--- BCC Dim i As Integer For i = 1 To 10 BCC = BCC Xor byttmp(i) Next
BCC = CByte(BCC)
'シリアルポートをオープンしていない場合、処理を行わない. If SerialPort1.IsOpen = False Then Return End If
'シリアルポートからデータを送信する. SerialPort1.Write(byttmp, 0, byttmp.GetLength(0))
|
|