/// <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; } }
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]); }
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]); }
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); // 发出通知. } }
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) { } } } }