ご質問させていただきます。
Mscommで16進数のデータ(5Ah 33h F5h 01h の4バイト)を送信しようと
しているのですがうまくいきません。
Dim Buffer(3) As Variant ' バイアント型配列
Buffer(0) = "5Ah"
Buffer(1) = "33h"
Buffer(2) = "F5h"
Buffer(3) = "01h"
MSComm1.Output = Buffer
このように書くと「プロパティの値が不正です」となり
エラーが出てしまいます。
どうか、宜しくお願いします。
リテラルが邪魔なのでは?
あと、バイト単位だからVariant使わなくても
Byte宣言でいいのでは?
""はずしたら動くかも・・・
ということが言いたかっただけです・・・
いぜん、MSCommでBinary送信の説明をしたときのログです。
参考になりますでしょうか...
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200310/03100030.txt
葉月さん、batchmanさんありがとうございます。
また今回このプログラムを作成するにあたっては上記のホームページを参考に
して行いました。
""を外して行うとエラーがでて、byte型にしてもエラーがでてしまいます。
ただし、byte型宣言をして送るデータをそれぞれ&H5A,&H33,&HF5,&H01とするとデータは送れているみたいなのですが、戻り値が返ってきません。
Output プロパティを使ってバイナリ データを送信する場合は、
バイト配列が格納されているバリアント型データを設定します。
というように書かれていますが、どのような意味ですか?
よろしくお願いします。
何のエラーが出ているのかがわからない
少なくとも"5Ah"だと文字列5Ahになるはずだから
バイトとして認識されないと思うのですが・・・
それに&H5Aが正しい表記じゃないですか?
>データは送れているみたいなのですが、戻り値が返ってきません。
戻り値とは戻ってくるものなんでしょうか?
データ送信のコントロールで送信できていれば問題ないとかそういうものでもないのでしょうか?
>Output プロパティを使ってバイナリ データを送信する場合は、
>バイト配列が格納されているバリアント型データを設定します。
結局型はバイトでもバリアントでも問題ないですがバイト配列で送りなさい!
ってことでしょう・・・
意味合い的には初期の質問のソースだと
文字列が格納されているバリアントデータになると思いますよ
>戻り値が返ってきません。
Outputはプロパティなので戻り値は有りません。
実行時エラーなら発生するかもしれませんが...
>Output プロパティを使ってバイナリ データを送信する場合は、
>バイト配列が格納されているバリアント型データを設定します。
>というように書かれていますが、どのような意味ですか?
Outputプロパティは複数の型(String型またはByte配列)を受け取れるようにするために、
Variant型になっています。
String型やByte配列をOutputプロパティに代入したときにVariant型に変換されます。
コントロール内部で、
受け取ったVariant型の内部処理形式がString型かByte配列かをチェックして、
それ以外の型だった場合にエラーを出しているのだと思います。(憶測)
超初心者さんのコーディングでは、
Outputプロパティ(Variant型)にVariant型配列(内部処理形式String型)を
設定したことになります。
MSDNヘルプのキーワードで、
"バリアント型, 内部表現"
"バリアント型, 説明"
"バリアント, 配列"
等を読まれるとVariant型のことが説明されています。
ツイート | ![]() |