Exemplo n.º 1
0
 /// <summary>
 ///  发送请求
 /// </summary>
 /// <param name="ip">目标设备</param>
 /// <param name="port">端口</param>
 /// <param name="req"></param>
 /// <param name="timeout"></param>
 /// <returns></returns>
 public JDQResponse Request(string ip, JDQRequest req, ushort port = 50000, uint timeout = 2000)
 {
     lock (this)
     {
         SocketClient conn = TryConnect(ip, port);
         JDQResponse resp;
         if (conn != null && conn.IsConnected)
         {
             SocketError error;
             byte[] recv = conn.SSend(req.Encode(), out error);
             resp = new JDQResponse(req.Type,recv);
             resp.Error = error;
             resp.ExtError = error.ToString();
         }
         else
         {
             // ERROR response
             log.ErrorFormat("Connection null or Not Ready.");
             resp = new JDQResponse(req.Type, new byte[0]);
             resp.Error = SocketError.NotConnected;
             resp.ExtError = "连接未就绪";
         }
         return resp;
     }
 }
Exemplo n.º 2
0
 public void TestEncodeReadInput()
 {
     JDQRequest req = new JDQRequest(1, JDQRequestType.ReadInput);
     byte[] buff = req.Encode();
     Console.WriteLine("buff is: {0}", ValueHelper.BytesToHexStr(buff));
     Assert.AreEqual(9, buff.Length);
     Assert.AreEqual(0xC0, buff[2]);
     Assert.AreEqual(0xCE, buff[7]);
     Assert.AreEqual(0x9C, buff[8]);
 }
Exemplo n.º 3
0
 public void TestEncodeWriteOutput()
 {
     JDQRequest req = new JDQRequest(1,  JDQRequestType.SetOutput);
     req.TurnOnOutput(4);
     req.TurnOnOutput(5);
     for (byte i = 0; i < 16; i++)
     {
         req.TurnOnOutput(i);
     }
     byte[] buff = req.Encode();
     Console.WriteLine("buff is: {0}", ValueHelper.BytesToHexStr(buff));
     Assert.AreEqual(10, buff.Length);
     Assert.AreEqual(0xCC, buff[0]);
     Assert.AreEqual(0x9E, buff[8]);
     Assert.AreEqual(0x3C, buff[9]);
 }
Exemplo n.º 4
0
 private void _OnZoneStateChanged(Zone _z, bool allOn)
 {
     bool isTotalOpen = UpdateFunctionTableByZone(_z);
     // 设置 中控 输出.
     lock (_ccs)
     {
         try
         {
             JDQRequest req1 = new JDQRequest(1, JDQRequestType.SetOutput); // Read FAS/IBP
             req1.SetOutput(_z.Reg.ZoneCoil, _z.IsZoneOpen());
             req1.SetOutput(6, isTotalOpen); // 全区域.
             SocketError err;
             byte[] recv = _ccs.SSend(req1.Encode(), out err, 500);
         }
         catch (Exception) { }
     }
     if (this.OnZoneStateChanged != null)
     {
         OnZoneStateChanged.Invoke(_z, isTotalOpen); // 发出通知.
     }
 }
Exemplo n.º 5
0
 private void OnTimerCallback(object state)
 {
     if (_running)
     {
         if (_ccs == null)
         {
             return;
         }
         lock (_ccs)
         {
             try
             {
                 JDQRequest req1 = new JDQRequest(1, JDQRequestType.ReadInput); // Read FAS/IBP
                 SocketError err;
                 byte[] recv = _ccs.SSend(req1.Encode(), out err);
                 OnOff ibp, fas;
                 if (SocketError.Success == err)
                 {
                     // IN1	IBP触发信号	信号有效:IBP被触发
                     // IN2	FAS触发信号	信号有效:FAS被触发
                     JDQResponse resp = new JDQResponse(JDQRequestType.ReadInput, recv);
                     if (resp.GetLength() == 0) return;
                     ibp = resp.GetInputState(0);
                     fas = resp.GetInputState(1);
                 }
                 else
                 {
                     ibp = OnOff.UNKNOWN;
                     fas = OnOff.UNKNOWN;
                 }
                 TryNotifyIpbFas(err, ibp, fas);
                 Thread.Sleep(10);
             }
             catch (Exception) { }
         }
     }
 }