public async Task<IActionResult> ExecCmd(IotRequest request) { var opt = new IoT_OptLog { DCreate = request.DCreate, Mac = request.Mac, Cmd = request.Cmd, Body = request.Body, User_Id = AppCtx.AC.User.Id }; opt.InitializeId(); try { // check opt var device = cacheService.GetDevice(request.Mac); opt.Sbno = device.Sbno; Check.Require(device.Cmds.ContainsKey(request.Cmd), $"该设备({device.Cpno})不支持操作:{request.Cmd}"); var cmd = device.Cmds[request.Cmd]; opt.Name = cmd.Name; var ctx = await client.Send(request); var result = ctx.Response.Body; switch (result.Substring(0, 2)) { case "00": opt.Result = ctx.Response.Body; opt.Success = true; if (result.Length > 2) { return Ok(result.Substring(2)); } return Ok(null); case "01": throw new AceException("校验错误"); case "02": throw new AceException("会话错误"); case "03": throw new AceException("非法设备"); default: throw new AceException(result.Substring(2)); } } catch (Exception ex) { opt.Result = ex.GetMessage(); throw; } finally { opt.DUpdate = DateTime.Now; iotService.LogOpt(opt); } }
private void Send() { var rnd = new Random(); if (chkInterval.Checked) { SetBox(txtHum, (int.Parse(txtHumSet.Text) + rnd.Next(-9, 9)).ToString()); SetBox(txtTemp, $"{rnd.Next(20, 30)}.{rnd.Next(10, 99)}"); } List <byte> list = new List <byte>(); list.Add(byte.Parse(txtOn.Text)); list.Add(byte.Parse(txtMode.Text)); list.Add(byte.Parse(txtSpeed.Text)); list.AddRange(EncodingHelper.HexToBytes(txtZT.Text)); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtHum.Text).ToYmHex(2))); list.AddRange(EncodingHelper.HexToBytes(double.Parse(txtTemp.Text).ToYmHex(4))); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtHumSet.Text).ToYmHex(2))); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtHumOut.Text).ToYmHex(2))); list.AddRange(EncodingHelper.HexToBytes(double.Parse(txtTempOut.Text).ToYmHex(4))); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtPM25.Text).ToYmHex(4))); list.AddRange(EncodingHelper.HexToBytes(double.Parse(txtTempNet.Text).ToYmHex(4))); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtCO2.Text).ToYmHex(4))); list.Add(byte.Parse(txtVOC.Text)); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtNetDay.Text).ToYmHex(4))); var req = IotRequest.CreateRequest(filter, txtMac.Text.Trim(), "0001", list.ToArray().ToHex()); if (sessions.ContainsKey(req.Device.Mac)) { req.SessionId = sessions[req.Device.Mac]; } Send(req); }
private void Send() { var rnd = new Random(); if (chkInterval.Checked) { SetBox(txtInt, (rnd.Next(1, 255) - 128).ToString()); SetBox(txtNum, $"{rnd.Next(1, 255) - 128}.{rnd.Next(0, 255)}"); SetBox(txtBit, rnd.Next(0, 255).ToString()); } List <byte> list = new List <byte>(); list.Add(byte.Parse(txtOn.Text)); list.AddRange(EncodingHelper.HexToBytes(int.Parse(txtInt.Text).ToYmHex(2))); list.AddRange(EncodingHelper.HexToBytes(double.Parse(txtNum.Text).ToYmHex(4))); list.Add(byte.Parse(txtBit.Text)); var req = IotRequest.CreateRequest(filter, txtMac.Text.Trim(), "0001", list.ToArray().ToHex()); if (sessions.ContainsKey(req.Device.Mac)) { req.SessionId = sessions[req.Device.Mac]; } Send(req); }
private void btnLogin_Click(object sender, EventArgs e) { var wifi = EncodingHelper.ToBytes(txtWifi.Text).ToHex(); var hard = NaryHelper.ToYmHex(txtHard.Text.Trim(), 4); var soft = NaryHelper.ToYmHex(txtSoft.Text.Trim(), 4); var req = IotRequest.CreateRequest(filter, txtMac.Text.Trim(), "00F1", soft + hard + wifi); Send(req); }
private void Send(IotRequest req) { var data = req.BuildBytes(); Output($"Send-发送数据: {req.HeaderHex}-{req.Length.ToString("{00}")}-{req.Device.Mac}-{req.SessionId} {req.Command}"); Output($"Send-封包加验: {req.HeaderHex}-{req.Length.ToString("{00}")} {req.BodyHex}"); Output($"Send-加密数据: {req.HeaderHex}-{req.Length.ToString("{00}")} {req.EncryptedBody.ToHex()}"); try { client.Send(data); } catch (Exception ex) { Output("Error: " + ex.GetMessage()); } }