掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
数値データを送信するには? (ID:100078)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
MSCommコントロールのOutput プロパティは多態性が有って、 文字列をセットすると文字列を、数値をセットすると数値を、 配列をセットすると其の配列の中身を送信します。 たとえば1と2の2バイトの数値を送りたい場合は、 Dim byteData(1) As Byte byteData(0) = 1 byteData(1) = 2 MSComm1.Output = byteSendData() とやるわけです。 通常数値は16進で書きます、なぜかと言うと12を送ると言った場合 1と2を送りたいのか12を送りたいか紛らわしい為で、この場合は &H1と&H2の2バイトを送ると言えば間違いが起こりにくい訳です。 VBの「&」演算子はこれも多態性を持っていて、文字列を両側にセットすると 文字列の連結を返し、どちらか一方又は両方に数値をセットすると 数値を文字列に変換してしてそれを連結して返します。 従って ma(3) & ma(4) は文字列を返していますから、数値ではなく 文字列が送られた訳です。 多分変数「i」は色々やってみたのでしょうが、このValは基本的には 引数の文字列を数値に変換して返しますが、引数に何でも来いの複雑な関数で、 Val(5)とやってもVal("5")とやっても5を返しますし、Val("&HFA")とやっても Val(&HFA)とやっても250を返します、またVal("&HFA 5")とすると4005を 返すと言う変わり者です。 それとコードの最初に「Option Explicit」を必ず書き、変数は宣言して使いましょう、 今回の場合も下のように宣言をしていれば、エラーが出たはずです。 Dim i As Integer i = ma(3) & ma(4) AxMSComm1.Output = i
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.