バイナリデータのシリアル送信について。

解決


カバティ♪  2003-10-07 18:15:30  No: 108992

教えてください。
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

どうか、よろしくお願いします。


batchman  2003-10-08 03:37:52  No: 108993

ヘルプには...

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バイトが定義されることになります。
#配列の要素数にご注意を


カバティ♪  2003-10-08 06:07:39  No: 108994

>宣言するときは配列の要素数を指定して、Outputのときは変数名だけ指定します。

上記助言で、もやもやは解決しました。

batchmanさんありがとございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加