-2

bacnet ルーターへのシリアル ポート通信を確立できました。

すべて順調です。ルーターの名前などを変更できます。

しかし、IPアドレスに書き込むと: 私のコード:

serialPort1.WriteLine("10.1.1.168");
//or 
serialPort1.Write("10.1.1.168"); 
//It stores as '0.0.0.10' 

また:

serialPort1.WriteLine("145.100.100.168"); //it stores as '0.0.0.145'

また:

serialPort1.WriteLine("145100100168"); //Im reaching lol

たとえば、ルーター名を変更できます。

serialPort1.WriteLine("Project1234"); //and it stores perfectly

変換 (バイナリ、16 進数、ipAddress) を実行しましたが、まだ不正な値が格納されています。

何か案は?ご協力いただきありがとうございます!!

更新 - これは私がこれまでに持っているものです:

IPAddress ip = IPAddress.Parse(txtWrite.Text);
Byte[] bytes = ip.GetAddressBytes();
for (int i = 0; i < bytes.Length; i++)
{
    string str = bytes[i].ToString();
    MessageBox.Show(str);
    serialPort1.Write(str+".");
 }
 serialPort1.Write("\r\n");

ただし、問題は、「192.168.168.5」が 3 桁を超える場合、「.」が追加されないことです。「1921681685」になります。(最後の小数点に注意してください。)しかし、「10.1.1.168」と入力すると、「10.1.1.168」として保存され、末尾に小数点がなく、そのIPアドレスに必要なものです。私は何を間違っていますか??

ご協力いただきありがとうございます。

4

3 に答える 3

0

SerialPort-ConstructorIPAdressを認識せず、期待します

文字列パラメータはIP アドレスではありません! たとえば、「COM1」です。それが「Project1234」が機能する理由です。

編集:

あなたは明らかに異なるものを混ぜています:

  • コンピューティングでは、シリアル ポートは、一度に 1 ビットずつ情報を送受信するシリアル通信の物理インターフェイスです。(ウィキペディア)
  • コンピューティングでは、パラレル ポートはパラレル通信の物理インターフェイスです。プリンタ ポートまたはセントロニクス ポートとも呼ばれます。(ウィキペディア)

どちらのインターフェースも IP アドレスとはまったく関係ありません。

IP アドレスについて話しているということは、 TCP/IPプロトコル経由で接続を確立したいということです。このための良い開始点は次のとおりです。C# を使用した TCP/IP チャット アプリケーション

編集(2):USBシリアル通信は確かにシリアルですが、アクセスしようとしているシリアルポートではありません。USB 通信用のライブラリがいくつかあります。LeitnerまたはSharpDevelop

于 2013-04-13T08:03:44.460 に答える
0

ご協力ありがとうございます。調べてみたら、文字列の種類とか関係なく…文字列がルーターに入るタイミングなのです。

foreach (char c in txtWrite.Text)
{
    serialPort1.WriteLine(c.ToString());
    System.Threading.Thread.Sleep(100);

 }
 serialPort1.WriteLine("\r\n");

それだけです。

于 2013-04-16T13:57:43.023 に答える