0

私は PLC でプロジェクトを行っています。ソケットを使用して、PLC でリッスンしているサーバーとやり取りしています。127 を超えると、コードは機能しますが、適切な値はPLC に送信されません。これを克服する方法。

s = 130;

クエリ = Convert.ToChar(00).ToString() + Convert.ToChar(00).ToString() + Convert.ToChar(00).ToString() + Convert.ToChar(00).ToString() + Convert.ToChar( 00).ToString() + Convert.ToChar(06).ToString() + Convert.ToChar(01).ToString(); // ヘッダー クエリ = クエリ + Convert.ToChar(06).ToString() + Convert.ToChar(AddrUB).ToString() + Convert.ToChar(AddrLB).ToString() + Convert.ToChar(valueUB).ToString() + Convert.ToChar(s).ToString() ;

それを char s に変換した後、特別な記号になります。plc に 130 を書き込む代わりに、クエリで 63 と書きます。変換で何が起こっているのか、これを解決するのを手伝ってください

4

1 に答える 1

0

ASCII 63 は疑問符です。127 を超える文字がクエスチョン マークに変わる主な理由は、あるコード ページから問題の文字をサポートしていない別のコード ページへの変換です。したがって、基本的に何らかの変換が行われます。

解決策は、文字列を操作しないことです。PLC はバイトを理解するので、文字列ではなくバイト配列で作業する必要があります。C# の世界では、文字はバイトではないことに注意してください。

于 2010-10-28T18:07:29.070 に答える