示例#1
0
		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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
文件: frmJYK1.cs 项目: ym1100/AceSaaS
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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());
            }
        }