教えてください。
Mscommでバイナリデータを送信しようと、ネットで検索して、
マイクロソフトサポート技術情報で答えを見つけたのですが、
下記サンプルデータの Buffer(0) の意味がよく分かりません。
Dim Buffer(0) As Byte ' バイト型配列
Buffer(0) = &H0
MSComm1.Output = Buffer
&H0だけ送信するために、
Buffer(0)の(0)を無くすと、うまく送信出来ず、
送信データを5個送るために、
MSComm1.Output = Buffer(i)として、
Dim Buffer(5) As Byte ' バイト型配列
For I = 0 To 5
Buffer(0)=&H6
Buffer(1)=&H6
Buffer(2)=&H6
Buffer(3)=&H6
Buffer(4)=&H6
MSComm1.Output = Buffer(i)
Next
としても、うまく送信出来ません。
下記ソフトで行えば問題は解決なのですが、
どうも納得出来ないのです。
Dim Buffer(0) As Byte ' バイト型配列
For I = 0 To 5
Buffer(0) = &H6
MSComm1.Output = Buffer
Next
どうか、よろしくお願いします。
ヘルプには...
Output プロパティを使ってバイナリ データを送信する場合は、
バイト配列が格納されているバリアント型データを設定します。
となっています。
送信するデータがたとえ1バイトのデータでも、
バイト配列として定義してやらないといけないようです。
Dim bytArray(0) As Byte
bytArray(0) = &H1
MSComm1.Output = bytArray
連続する5バイトのデータを送信する場合、
Dim bytArray(4) As Byte
bytArray(0) = &H1
bytArray(1) = &H2
bytArray(2) = &H3
bytArray(3) = &H4
bytArray(4) = &H5
MSComm1.Output = bytArray
になります。
宣言するときは配列の要素数を指定して、Outputのときは変数名だけ指定します。
Dim bytArray(0) As Byte
は0バイトの宣言ではなく、配列要素が1つのByte型を宣言をしていることになります。
#デフォルトでは、VBの配列宣言で
#Dim bytArray(5) As Byte
#とすると、配列要素0〜5までの6バイトが定義されることになります。
#配列の要素数にご注意を
>宣言するときは配列の要素数を指定して、Outputのときは変数名だけ指定します。
上記助言で、もやもやは解決しました。
batchmanさんありがとございました。
ツイート | ![]() |