• 締切済み

C#のシリアル通信プログラムで文字化け

Visual C#でRS-232のシリアル通信をするプログラムを作成しましたが、 受信データが文字化けを起こしてしまいます。 下のURLにソースを置いているので、どこが不味いのか教えてください。 http://www1.axfc.net/uploader/Sc/so/205741 よろしくお願いいたします。

みんなの回答

回答No.3

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

回答No.2

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

tsubame_800
質問者

補足

Shift_jis:・と漢字の文字化け utf-8:・が表示されるのみ utf-16:・とàが表示される これで何か分かりますでしょうか?

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

ソース見たくないんで SJISに変換して、送りましょう 文字化けは、C#だとユニコードで送って、受け側がSJISで表示とか・・・ 良くあるパターンです 相手が制御機とかだとしたら、文字化けの原因は文字コードの不整合です

tsubame_800
質問者

補足

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); }

関連するQ&A

専門家に質問してみよう