TCP/IPを使用してPCからロボットコントローラに接続しようとしています。ロボット コントローラは、PC (TCP クライアント) からの ASCII 文字列データのみを受け入れます。ロボット コントローラのコマンド構造によると、特定の文字列を送信し、そこから ACK を取得してアクセスを取得する必要があります。次のコードを使用しました
try
{
System.Net.IPAddress IPADD = System.Net.IPAddress.Parse("192.168.255.2");
int PortNo = 80;
char[] ok = new char[33];
byte[] Data = new byte[33];
byte[] StartReq = new byte[21];
String Start = "CONNECT Robot_access";
// INITIALIZING TCP CLIENT
TcpClient TCP = new TcpClient();
Console.WriteLine("Connecting..........");
TCP.Connect(IPADD, PortNo);
Console.WriteLine("Connected");
NetworkStream NS = TCP.GetStream();
// START REQUEST
StartReq = Encoding.ASCII.GetBytes(Start);
NS.Write(StartReq, 0, StartReq.Length);
Console.WriteLine("start request send..........");
// RECEIVE ACK FOR ROBOT ACCESS
Int32 RespData = NS.Read(Data, 0, Data.Length);
string ACK = Encoding.ASCII.GetString(Data, 0, RespData);
Console.WriteLine("The ACK is {0} ", ACK);
Console.WriteLine("ACK Received");
Console.Read();
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
Console.Read();
}
また、文字列を送受信するために Streamwriter と Bufferstream を試しましたが、成功しませんでした。私のプログラムは、例外なく完全に実行されます (Networkstream 読み取りの 30 秒の遅延を除く)。