
以下のプログラムをVBに変換する仕方を教えてください。
サンプルプログラム
1110 CHKSUM=0
1120 FOR i=1 to LEN(A$) 'A$は送信データ
1130 CHKSUM=CHKSUM+ASC(MID$(A$,i,1)
1140 NEXT i
1150 C$=CHR$((CHKSUM+13) MOD 256)
1160 PRINT #1,A$;CHR$(13);C$;
私のVBプログラムは1110行から1150行まではそのままで
CHKSUM=0
FOR i=1 TO LEN(A$)
CHKSUM=CHKSUM+ASC(MID$(A$,i,1)
NEXT i
C$=CHR$((CHKSUM+13) MOD 256)
としました。
送信部分を
MSComm1.Output =A$ & CHR$(&H13) & C$
としてみましたが
1160行にあるセミコロン ";" はCHR$(&h3B) として送る必要があるのでしょうか?
MSComm1.Output =A$ & CHR$(&h3B) & CHR$(&h13) ・・・・・・
また、データとしてA$="I 02"のチェックサムは "リ" となりますが正しいのでしょうか?
以上ご教示ください。
No.1ベストアンサー
- 回答日時:
VBのバージョンは?
新しいものであれば内部はUniCode化されていると思うので昔のソースを移行するのは大変と思う、特に半角文字を扱う場合は
送信データはStrConvでAsciiにしてバイト配列にしチェックサムは XOR演算したと思ったけど・・・
偶数、奇数があるので最後に反転しないといけない場合もあるけど
それとPrint文の;は続けて書く場合に使いますのでCHR$(&h3B) を付ける必要はありません
Print "a","b" とすると a_______b となります_=Space
また Print "a";"b"とすると ab となります
Print "a"
Print "b"
なら
a
b
Print "a";
Print "b"
なら
ab
通常送信データには改行を送らないので
最後の Print "b" も Print "b"; と書きます
この回答への補足
ありがとう。
出力文中のコロン、セミコロン、カンマ はモニター表示形式と同じですよね。思い出しました。CHR$(&H13)は"CR" (&H0D) なので私の間違いでした。
どうもターゲット機器のサンプル通信プログラム仕様のバージョンが違う様で、コマンド自体も違っている様です。今日一日かけてコマンドを探るソフトを追加して応答が来るまで待ちます。皆さんありがとう。また宜しく。
No.2
- 回答日時:
移植性を考えるなら
Dim A$ → Dim A As String
MID$(A$, i, 1) → Mid(A, i, 1)
とすべきですね。これはVB.NET以降は型記号が使えないためです。
チェックサムは色々な形式があるので、何が正解かは「方式による」
としか言えません。Print文にある";"セミコロンは変換不要ですが、
","はvbTabに変換し、後方に何も無い場合は最後にvbCrLfを追加する
ようにします。
あと、CHR$(&H13)というのは独特の区切り記号なんですかねぇ?
もしかしてキャリッジリターンのことあればvbCrにすべきです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Excel(エクセル) vba sendKeysを送る相手のソフトを前面に開くには 1 2023/07/20 16:42
- 国産車 トヨタ CHRのデイライトって 3 2022/05/05 14:02
- Visual Basic(VBA) 該当セルに行替えを含むデータを命令文に入れて、2行に表示したい。 5 2023/07/20 11:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- カスタマイズ(車) ジューク2013 アルミホイール16インチから17インチに取り替えたらどのくらい燃費変わりますか? 2 2023/06/28 07:06
- 中古車 jeep2015〜6年 コンパススポーツを検討していますが 同じくらいの車の、 ワーゲン、ティグアン 1 2023/02/11 12:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3のつく数字と3の倍数のみを表...
-
家電製品の電力周波数を変える機械
-
ビットマップファイルを24ビ...
-
Km2NetのUSB-IO、USB-Anを用い...
-
PDFからTIFFに変換できるフリー...
-
エクセルVBAの自動変換機能?
-
分を時間に変換するプログラム
-
wsprintfで実数値を文字列にしたい
-
C#からC++/CLIにサンプルソース...
-
C/C++→JAVAに変換するツール
-
Visual C++のサンプルプログラ...
-
ActiveXの使い方を教えてくださ...
-
BCBプロジェクトをVCに移植
-
VB6からVB2010への変換について
-
VB 6 を VS 2012に変換するには?
-
10進数をBCDに変換する方法
-
はしごの高をマックで表示する...
-
三角形を逆三角形にしたいです...
-
VB6からVB2010への変換
-
UTF8→ShiftJISに変換したいです!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
エクセルVBAの自動変換機能?
-
緯度、経度の 10進法と 60進法...
-
Mac 乗数の入力方法
-
C/C++→JAVAに変換するツール
-
なぜ通信には16進数文字列が使...
-
VB6からVB2010への変換について
-
10進数をBCDに変換する方法
-
画像ファイル変換(Tiff→PDF)
-
エクセルのvbaで検索ボタンを作る
-
分を時間に変換するプログラム
-
StrConvの使い方について教えて...
-
三角形を逆三角形にしたいです...
-
逆コンパイルと逆アセンブルの...
-
VB.NETをJavaに変換するツール...
-
UTF8→ShiftJISに変換したいです!
-
FortranをC++(VC++)へ変換
-
3のつく数字と3の倍数のみを表...
-
c++でmatからvectorへの変換の...
-
C#でのpngからbmpへの変換について
おすすめ情報