- 締切済み
VB6で"r"みたいな文字が返ってくる。
VB6で測定器からデータを読み取っているのですが、 データの後ろに"r"みたいな文字が返ってきます。 この文字を取りたいのですが、どうすれば良いのでしょうか? Trim()をしてもエラーになります。 調べると改行コードのようですが、よく分かりません。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
以下のプログラムを実行してみましょう。 dim data as string dim datastr as string dim i as integer data = 受信データ datastr = "" for i = 1 to len(data) datastr = datastr & str(asc(mid(data,i,1))) & "," next i msgbox datastr 結果は、以下のようになるでしょう。 65,84,65,77,56,78,3,13,10, これは「ATAM8N<STX><CR><LF>」を受信した場合です。 表示される数字が「32より小さい場合(0~31の場合)」は、そこにある文字は「制御文字」です。 質問者さんのケースでは、制御文字の1つが「rみたいな文字」になって見えているのですが、制御文字は「末尾に1つだけ」とは限りません。 複数の制御文字が何文字も付加されているけど「見えているのはrみたいなの1文字だけで、他の制御文字は見えないだけ」なのかも知れません。 上記の結果例では、データ末尾に「STX」「CR」「LF」の3文字が付加されたデータを受信していますが、これを文字列のまま表示すると、CRとLFは「見えない」ので、「STXしか付いてないように見えてしまう」ので「末尾の1文字だけを削る」では失敗します。「見えないCRとLFも含めて、3文字削らないと、うまくいかない」ですからね。 見えないデータを確かめるには、データをそのまま表示するのではなく、上記のようなプログラムを用いて「文字コードを数値化して、数字で表示してみる」と言う「可視化」が必要になります。 「データの中身が良く判らなかったら、判る形式で表示してみろ」って事です。
- TooManyBugs
- ベストアンサー率27% (1472/5321)
恐らく測定器から DATA + ETX + Cr + LF 等の形式で送信されている物と思われます。 このあたりは測定器のマニュアルなどを見れば判りますね。 ETXの文字コード(03h)がPCでは罫線の左上隅 (┌)で表示されることがあります。 必ず入っているのなら末尾の1文字を削除すれば良いだけですね。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> rみたいな文字は改行コードで正しいのでしょうか? > それもあまり自信がありません。 知りません。 対象文字をAsc()で見てみれば文字コードがいくつか 分かるでしょう。 その文字コードが何なのか調べれば済むことです。 http://e-words.jp/p/r-ascii.html 因みに改行コードはVB6はvbCrLfでも指定可能です。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
Replace(hoge, Chr(13) & Chr(10), "") 改行コードがラインフィードだけなら Replace(hoge, Chr(10), "")
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
dim data as string ... data = データ文字列 ... '文字列の最後の文字の文字コードが???だったら、それを取り除く if asc(right(data,1)) = ??? then data = left(data,len(data) - 1) end if
お礼
ありがとうございます。 rみたいな文字列のコードがわかりません。
お礼
rみたいな文字は改行コードで正しいのでしょうか? それもあまり自信がありません。