あなたにとってのゴールデンタイムはいつですか?

Visual C#でRS-232のシリアル通信をするプログラムを作成しましたが、
受信データが文字化けを起こしてしまいます。

下のURLにソースを置いているので、どこが不味いのか教えてください。

http://www1.axfc.net/uploader/Sc/so/205741

よろしくお願いいたします。

A 回答 (3件)

言い方が悪かったのかなあ…。


「どのような文字を送ると、どのような文字になって出るのか」を書いて欲しかったのですが。

ただ、そのレベルの問題ではなさそうですね。
文字コードをいろいろ試しているようですが、何を送っているのか分からないのですか?
そうであればまず何を送っているか分かっているデータを受信してみるのが先です。
また、文字としてまともに見えないようですので、バイナリデータで考えた方が良いと思います。
    • good
    • 0

まずどのように文字化けするのかを書いたほうが良いと思います。

この回答への補足

Shift_jis:・と漢字の文字化け
utf-8:・が表示されるのみ
utf-16:・とàが表示される

これで何か分かりますでしょうか?

補足日時:2011/02/21 19:39
    • good
    • 0

ソース見たくないんで



SJISに変換して、送りましょう
文字化けは、C#だとユニコードで送って、受け側がSJISで表示とか・・・
良くあるパターンです

相手が制御機とかだとしたら、文字化けの原因は文字コードの不整合です

この回答への補足

ShiftJISも試してみましたが、やはり文字化けしました。
通信の相手はdsPIC30F4011です。
受信部のソースは以下のようになっています。

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
int dataLength = serialPort1.BytesToRead;
byte[] rcvbuf = new byte[dataLength];
serialPort1.Read(rcvbuf, 0, dataLength);
string ReceivedData = Encoding.GetEncoding("Shift_JIS").GetString(rcvbuf, 0, dataLength);
textBox2.AppendText(ReceivedData);
}

補足日時:2011/02/18 17:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報