Beispiel #1
0
        public void UpdateOut()
        {
            try
            {
                bool[] data = new bool[_Cfg.DigitalInputQuantity];
                for (int i = 0; i < _Cfg.DigitalInputQuantity; i++)
                {
                    bool val;
                    if (DOUT.TryGetValue(i, out val))
                    {
                        data[i] = val;
                    }
                    else
                    {
                        data[i] = false;
                    }
                }
                lock (Master)
                {
                    Master.WriteMultipleCoils(_Cfg.slaveID, 0, data);
                }

                ushort[] data2 = new ushort[_Cfg.DigitalInputQuantity];
                for (int i = 0; i < _Cfg.DigitalInputQuantity; i++)
                {
                    ushort val;
                    if (AOUT.TryGetValue(i, out val))
                    {
                        data2[i] = Convert.ToUInt16(Convert.ToDouble(val) * 32767.0 / 10.0);
                    }
                    else
                    {
                        data2[i] = 0;
                    }
                }
                lock (Master)
                {
                    Master.WriteMultipleRegisters(_Cfg.slaveID, 0, data2);
                }
            }
            catch (Exception e)
            {
                logger.Error(e.StackTrace);
            }
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="deviceInfo"></param>
        /// <param name="value"></param>
        /// <param name="valueType"></param>
        public override void WriteValue(string deviceInfo, object value, byte valueType)
        {
            if (mComm.IsConnected)
            {
                var dtmp = deviceInfo.Split(new char[] { ':' });

                ushort addr = ushort.Parse(dtmp[1]);
                ushort size = ushort.Parse(dtmp[2]);

                if (dtmp[0].StartsWith("cs"))
                {
                    mMaster.WriteSingleCoil((byte)mData.Id, addr, Convert.ToBoolean(value));
                }
                else if (dtmp[0].StartsWith("hr"))
                {
                    mMaster.WriteMultipleRegisters((byte)mData.Id, addr, GetValue(value, valueType, size));
                }
            }
        }