
以下のプログラムを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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
エクセルVBAの自動変換機能?
-
c++でmatからvectorへの変換の...
-
VB6からVB2010への変換について
-
特定のタイムゾーンからtime_t...
-
bitmapクラスをiconクラスに変...
-
DOSコマンドでの文字コード変換...
-
ビットマップファイルを24ビ...
-
線対称の角度を求める
-
.sb3のファイルを.sb2に変換す...
-
エクセルのvbaで検索ボタンを作る
-
【EXCEL】カナ、ひらがなを英字...
-
テキストボックス内の型変換と...
-
VC++2008のC2664エラー
-
3のつく数字と3の倍数のみを表...
-
bmp→jpgに、jpg→bmpに
-
はしごの高をマックで表示する...
-
進法を変換する時に、相性のい...
-
三角形を逆三角形にしたいです...
-
VB 6 を VS 2012に変換するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
3のつく数字と3の倍数のみを表...
-
エクセルVBAの自動変換機能?
-
VB.NETをJavaに変換するツール...
-
c++でmatからvectorへの変換の...
-
分を時間に変換するプログラム
-
緯度、経度の 10進法と 60進法...
-
逆コンパイルと逆アセンブルの...
-
なぜ通信には16進数文字列が使...
-
VB6からVB2010への変換について
-
10進数をBCDに変換する方法
-
C++からCへのソース変換について
-
VB6で10進数を32進数に変換する...
-
php
-
画像ファイル変換(Tiff→PDF)
-
VB.NETからJavaに変換するツー...
-
PHPで、日本語からアルファベッ...
-
WinHelpからHTML Helpに変換
-
マンセル⇔XYZ,RGB変換式或いは...
おすすめ情報