Example #1
0
        public static async Task Post_XAGL_WM1000KZG_StopWell(ModbusRtuOverTcp client, RedisClient redisClient, string messageString)
        {
            var par = messageString.FromJson <ControlRequest>();

            //用于通过ServerEvent给调用着返回消息
            if (!par.UserName.IsNullOrEmpty())
            {
                ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok");
            }

            return;

            try
            {
                var modbusAddress = par.ModbusAddress;

                ClientInfo.CurrentModbusPoolAddress = modbusAddress;

                //写入0值到4121(Holding register)寄存器,设置油井的状态为开启。
                // var result2 = await client.WriteAsync("4126", 2);

                var startAddress = (ushort)4126;

                var address = $"s={par.ModbusAddress};{startAddress}";

                var result2 = await client.WriteOneRegisterAsync(address, (ushort)(2));

                if (result2.IsSuccess)
                {
                    //用于通过ServerEvent给调用着返回消息
                    if (!par.UserName.IsNullOrEmpty())
                    {
                        ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok");
                    }
                }
                else
                {
                    //用于通过ServerEvent给调用着返回消息
                    if (!par.UserName.IsNullOrEmpty())
                    {
                        ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, "error");
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
                Logger.Error(ex.Source);

                if (!par.UserName.IsNullOrEmpty())
                {
                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message);
                }
            }

            //
        }
Example #2
0
        public static async Task Post_BJBC_WII_InjectionAllocation(ModbusRtuOverTcp client, RedisClient redisClient, string messageString)
        {
            var par = messageString.FromJson <ControlRequest>();

            par.ConvertTo <LogIotModbusPoll>();

            var modbusAddress = par.ModbusAddress;

            ClientInfo.CurrentModbusPoolAddress = modbusAddress;
            try
            {
                if (!par.CommandParameter.IsNullOrEmpty())
                {
                    var parDict = par.CommandParameter.FromJson <Dictionary <long, double> >();
                    if (parDict != null)
                    {
                        foreach (var item in parDict)
                        {
                            var slotId = item.Key;

                            //30201 原始地址
                            var startAddress = (ushort)(201 + slotId - 1);

                            var value = (ushort)(item.Value * 100);

                            var read = await client.WriteOneRegisterAsync($"s={par.ModbusAddress};{startAddress}", value);

                            if (read.IsSuccess)
                            {
                                if (!par.UserName.IsNullOrEmpty())
                                {
                                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok");
                                }
                            }
                            else
                            {
                                if (!par.UserName.IsNullOrEmpty())
                                {
                                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, "error");
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
                Logger.Error(ex.Source);

                if (!par.UserName.IsNullOrEmpty())
                {
                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message);
                }
            }
        }
Example #3
0
        /// <summary>
        /// 设置冲次
        /// </summary>
        /// <param name="client"></param>
        /// <param name="redisClient"></param>
        /// <param name="messageString"></param>
        /// <returns></returns>
        public static async Task Post_XAGL_WM2000KZG_StrokeFrequency(ModbusRtuOverTcp client, RedisClient redisClient, string messageString)
        {
            var par = messageString.FromJson <ControlRequest>();

            try
            {
                var modbusAddress = par.ModbusAddress;

                ClientInfo.CurrentModbusPoolAddress = modbusAddress;

                var stroke = (int)(float.Parse(par.CommandParameter) * 10);

                //4132(Holding register)寄存器为47,代表当前设定冲次4.7次。

                var startAddress = (ushort)4132;

                var address = $"s={par.ModbusAddress};{startAddress}";

                await client.WriteOneRegisterAsync(address, (ushort)(stroke));


                if (!par.UserName.IsNullOrEmpty())
                {
                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok");
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
                Logger.Error(ex.Source);

                if (!par.UserName.IsNullOrEmpty())
                {
                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message);
                }
            }
        }
Example #4
0
        public static async Task Post_XAGL_WM1000KZG_StartWell(ModbusRtuOverTcp client, RedisClient redisClient, string messageString)
        {
            var par = messageString.FromJson <ControlRequest>();

            //用于通过ServerEvent给调用着返回消息
            if (!par.UserName.IsNullOrEmpty())
            {
                ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok");
            }

            return;

            try
            {
                var modbusAddress = par.ModbusAddress;

                //var reg = new AMWD.Modbus.Common.Structures.Register
                //{
                //    Address = 4126,
                //    HiByte = 0,
                //    LoByte = 1
                //};

                //(2)写入1值到4121(Holding register)寄存器,设置油井的状态为开启。
                // var result2 = await client.WriteAsync("4126", 1);

                var startAddress = (ushort)4126;

                var address = $"s={par.ModbusAddress};{startAddress}";

                var result2 = await client.WriteOneRegisterAsync(address, (ushort)(1));


                if (result2.IsSuccess == true)
                {
                    //用于通过ServerEvent给调用着返回消息
                    if (!par.UserName.IsNullOrEmpty())
                    {
                        ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok");
                    }
                }
                else
                {
                    //用于通过ServerEvent给调用着返回消息
                    if (!par.UserName.IsNullOrEmpty())
                    {
                        ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, "error");
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
                Logger.Error(ex.Source);

                if (par.UserName.IsNullOrEmpty())
                {
                    ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message);
                }
            }
        }