| 分類:[C#]
read ボタンを押すとPLC(KEYENCE KV7500) からDM0の値を読んでtext1.textに 表示をするまでできたのですが DM0〜DM9までの英数文字列20文字を 読み込むにはどこを変えればよろしいでしょうか
private void btn_read_Click(object sender, EventArgs e) { string host = "192.168.3.1"; int port = 8501;
TcpClient tcp = new TcpClient(); tcp.Connect(host, port); if (tcp.Connected) { Console.WriteLine("サーバー({0}:{1})と接続しました({2}:{3})", ((IPEndPoint)tcp.Client.RemoteEndPoint).Address, ((IPEndPoint)tcp.Client.RemoteEndPoint).Port, ((IPEndPoint)tcp.Client.LocalEndPoint).Address, ((IPEndPoint)tcp.Client.LocalEndPoint).Port); }
NetworkStream ns = tcp.GetStream(); ns.ReadTimeout = 10000; ns.WriteTimeout = 10000;
string sendMsg = "RD DM000"; Encoding enc = Encoding.ASCII; byte[] sendBytes = enc.GetBytes(sendMsg + '\r');
ns.Write(sendBytes, 0, sendBytes.Length); Console.WriteLine(sendMsg);
System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] resBytes = new byte[256]; int resSize = 0; do { resSize = ns.Read(resBytes, 0, resBytes.Length); if (resSize == 0) { Console.WriteLine("サーバーが切断しました。"); break; } ms.Write(resBytes, 0, resSize); } while (ns.DataAvailable || resBytes[resSize - 1] != '\n');
string resMsg = enc.GetString(ms.GetBuffer(), 0, (int)ms.Length); ms.Close();
resMsg = resMsg.TrimEnd('\n');
textbox1.Text = resMsg;
ns.Close(); tcp.Close();
} } |