またまた申し訳ありませんが、ご教示願います。
先ほどの件で下記のとおり、シリアルを設定すると
書きましたが、
array<String^>^split = str->Split( chars );
String^ a =safe_cast<String^>(split->GetValue(csv));
String^ b =safe_cast<String^>(split->GetValue(csv+1));
String^ c =safe_cast<String^>(split->GetValue(csv+2));
this->serialPort1->Write(a+b+c);
これだと、出力データがアスキーででませんでした。
String型から変換する必要があるのでしょうか。
だからエンコーディングに気をつけろと書いたのだが・・・
そもそもシリアルバス上の入出力データをどうやってチェックしてる?
信頼のおけるプロトコルアナライザなどで見ているかい?
測定機器が信頼できること、通信条件等が皆合致していること、を確認のうえ
出力データが何エンコーディングになっているか確認すべし
出力データについては、専用の測定機器にてモニタしております。
当然通信条件を仕様どおりに設定して。
下記のように記述すると、問題なくAが表示されました。
this->serialPort1->Write(A);
おそらくString型が影響しているのではと。
だからー
エンコーディングはどうなっているのかと訊いているわけだが
http://msdn2.microsoft.com/ja-jp/library/system.text.encoding.aspx
エンコーディングは何もしていませんでした。
素人なもので話がかみ合わず申し訳ないです。
ちょっとどうやってエンコーディングしたらいいか
わかりませんが、検討してみます。
よくわかりませんが、
array<Byte>^encodedBytes = ascii->GetBytes( csvdatatrans );
this->serialPort1->Write(encodedBytes);
では無理なのでしょうか。コンパイルできませんでした。
ご指摘ください。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200708/07080038.txt
の
2007/08/20(月) 11:17:44
を見てください。
参考にして下記のようにしてみましたが、
やはりアスキーで出力してくれませんでした。
String^ csvdata=csv1+csv2+csv3;
array<Byte>^encodedBytes = ascii->GetBytes( csvdata );
this->serialPort1->Write(encodedBytes, 0, encodedBytes->Length);
ほかにまだおかしなところがあるのでしょうか。
>csvdata
って、本当にASCIIコードに変換できる文字列ですか?
日本語(いわゆる全角文字とか半角カタカナ)とか入っていると当然対応するASCIIコード
がないわけですけど。
英数字および+-のみのデータです。
下記の取り込みの時点でおかしいのでしょうか。
str = din->ReadToEnd(); //CSVデータ末尾まで読み込み
array<String^>^split = str->Split( chars );
String^ csv1 =safe_cast<String^>(split->GetValue(csv));
String^ csv2 =safe_cast<String^>(split->GetValue(csv+1));
String^ csv3 =safe_cast<String^>(split->GetValue(csv+2));
String^ csvdata=csv1+csv2+csv;
>下記の取り込みの時点でおかしいのでしょうか。
デバッガを使うなりMessageBoxを使うなりして確認してみては?
CSVファイルのエンコードも絡んでいるっぽいけど。
それと
>String^ csv1 =safe_cast<String^>(split->GetValue(csv));
という使い方をサトウさん以外にも記述しているんですね。
一般的な書き方ではないと思います。キャスト等あまり意味ない処理が走るので
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200708/07080038.txt
の
2007/08/20(月) 11:17:44
で書いてあるようにインデグサを使ったほうが見やすいしわかりやすいでしょう。
ありがとうございます。
キャスト等は修正しました。
依然としてASCIIにはできません。
2007/08/21(火) 11:20:37に記載したコードのcsvdataは
Unicodeではないのでしょうか。
>Unicodeではないのでしょうか。
ファイルの中身のエンコードなんてあなたかサトウさんしかわかりませんよ。
String型に代入した時点ではUnicodeで保持します。
>デバッガを使うなりMessageBoxを使うなりして確認してみては?
はどのようになったのでしょうか?
リストボックスで csvdata を見ると、
元データとおりのデータ値になっていました。
this->listBox1->Items->Add(csvdata);
やはりASCII変換で変わっているような気がします。
>ASCII変換で変わっているような気がします。
では変換した配列の値を確認してみては?
ASCIIコード表
http://rararahp.cool.ne.jp/vc/ascii.htm
サトウさんは何も絡んでこないけどどうしちゃったんだろうか。