/// <summary> /// 指定IPアドレスのカメラのパラメータを取得する /// </summary> /// <param name="ipAddress"></param> /// <returns></returns> public CameraParam GetCameraParam(string ipAddress) { try { TcpClient tcp = new TcpClient(ipAddress, SHOOTIMAGESERVER_PORT); NetworkStream ns = tcp.GetStream(); ns.ReadTimeout = 5000; ns.WriteTimeout = 5000; // get parameter コマンドを送信 string cmd = "PGT"; byte[] cmdBytes = System.Text.Encoding.UTF8.GetBytes(cmd); ns.Write(cmdBytes, 0, cmdBytes.Length); // データを受信 while (tcp.Client.Available == 0) { } byte[] rcvBytes = new byte[tcp.Client.Available]; ns.Read(rcvBytes, 0, tcp.Client.Available); string rcvString = System.Text.Encoding.UTF8.GetString(rcvBytes); ns.Close(); tcp.Close(); return(CameraParam.DecodeFromJsonText(rcvString)); } catch (Exception e) { Console.Error.WriteLine(e.Message); return(null); } }
/// <summary> /// 指定IPアドレスのカメラにパラメータを設定する /// </summary> /// <param name="ipAddress"></param> /// <param name="param"></param> public void SetCameraParam(string ipAddress, CameraParam param) { try { TcpClient tcp = new TcpClient(ipAddress, SHOOTIMAGESERVER_PORT); NetworkStream ns = tcp.GetStream(); ns.ReadTimeout = 5000; ns.WriteTimeout = 5000; // set parameter コマンドを送信 string cmd = "PST"; byte[] cmdBytes = System.Text.Encoding.UTF8.GetBytes(cmd); ns.Write(cmdBytes, 0, cmdBytes.Length); // "ACK"データを受信 while (tcp.Client.Available == 0) { } byte[] rcvBytes = new byte[tcp.Client.Available]; ns.Read(rcvBytes, 0, tcp.Client.Available); string rcvString = System.Text.Encoding.UTF8.GetString(rcvBytes); if (rcvString == "ACK") { // parameter を送信 var jsonText = param.EncodeToJsonText(); var sendBytes = System.Text.Encoding.UTF8.GetBytes(jsonText); // 送信するデータサイズを送る (little endian) byte[] sizeBytes = new byte[4]; sizeBytes[0] = (byte)(sendBytes.Length & 0xff); sizeBytes[1] = (byte)((sendBytes.Length & 0xff00) >> 8); sizeBytes[2] = (byte)((sendBytes.Length & 0xff0000) >> 16); sizeBytes[3] = (byte)((sendBytes.Length & 0xff000000) >> 24); ns.Write(sizeBytes, 0, sizeBytes.Length); // パラメータを送信する ns.Write(sendBytes, 0, sendBytes.Length); } ns.Close(); tcp.Close(); } catch (Exception e) { Console.Error.WriteLine(e.Message); } }