|
■No100836 (KOZ さん) に返信
> ■No100835 (たけ さん) に返信
>
> 上に書いたロジックは、私の予想です。
> マニュアルは確認されましたか?
ありがとうございます
調べて書いてみました
DMを1個読み込む時は
最後のtextbox2.text に"AA"と表示できるようにまでなりました
ですがDMを2個読み込むとエラーになります
textbox1.text の中身が"16705 16962"になっていました
DMを1個読んでは文字に変換して、それを2回繰り返して
引っ付けるしかないでしょうか
private void btn_capture_Click(object sender, EventArgs e)
{
Console.WriteLine("START");
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 = "WR R000 0";
string sendMsg = "RDS DM000 1";// RDS DM000 2
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');
Console.WriteLine(resMsg);//12850<==読出数
textbox1.Text = resMsg;
int a = Convert.ToInt32(textbox1.Text);
string b = new string(new char[] { (char)(a >> 8 & 0xff), (char)(a & 0xff) });
textBox2.Text = b;
ns.Close();
tcp.Close();
|