シリアル通信の改行コードについて

解決


Taru  2004-06-23 11:48:33  No: 114145  IP: [192.*.*.*]

はじめまして、VB初心者です
RS-232Cでテスタから電圧値をとりこみたいのですが、テスタからは
データが垂れ流し状態です。
一回の測定データ(一まとまりのデータ)は11個のパッケージで
構成されており、1つのパッケージは
・スタートビット(1bit)
・データビット(7bit)
・パリティチェックビット(1bit)
・ストップビット(1bit)
で構成されています。
また、一まとまりのデータは最後の二つ(10,11番目のパッケージ)は
・CR
・CF
なのですが実際にデータを取り込むと
改行コードはテキストとしては取り込めず
改行されてしまうだけです。なので、データの終わりが判断することができず
どこからどこまでが一まとまりのデータか決められません。
そこで、このCR,CFをテキストとして取り込むことができないか、
または、他にいい方法がないか、よろしければ御教授お願いします。

  if MSComm1.InputMode = 0 Then
                Value = MSComm1.Input
                Text1.Text = Text1.Text + Value
                Value3 = Value3 + Value
          End  If

編集 削除
MM  2004-06-23 12:34:53  No: 114146  IP: [192.*.*.*]

CFって何ですか?
LFのことでしょうか。
またCRやLFというのはどういうものと思っていらっしゃるんでしょうか?
その辺の理解度によって回答も変わってくると思いますので。

編集 削除
Taru  2004-06-23 13:06:02  No: 114147  IP: [192.*.*.*]

失礼しました
LFの間違いです。
テスタのプロトコルには
CR:Transmission code"0001101"
LF:Transmission code"0001010"
と記述があるのですが、プログラムを実行すると
上記の記述(テキストとして取り込む場合何らかの記述が返ってくると
思っていたのですが)
はテキストとして返らないで、自動的に改行されます。
本来の動作はそのようなものだと思うのですが、
このCR,LFを文字列として、取り込めないかという
風に考えているのですが…

編集 削除
MM  2004-06-23 13:30:35  No: 114148  IP: [192.*.*.*]

Text1.Text = Text1.Text + Value
の後に以下のコードを追記してみてください
ちゃんとCR(0x0D)LF(0x0A)が入ってることが確認できると思います。

Dim i as Integer

For i=1 To Len(Text1.Text)
  Debug.Print Hex$(Asc(Mid$(Text1.Text,i,1)))
Next

それが分かれば自由に文字に置き換えることができますね。

編集 削除
Taru  2004-06-23 13:44:07  No: 114149  IP: [192.*.*.*]

MMさん、ありがとうございます!
見れるようになりました。
これを使って、組んでみます。

編集 削除