/// <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)); } } }
public void SetOut(string Address, string Value) { try { ushort adr = Convert.ToUInt16(Address); bool boolVal = false; if (bool.TryParse(Value, out boolVal)) { bool[] Response; try { lock (Master) { Master.WriteSingleCoil(_Cfg.slaveID, adr, boolVal); } } catch { throw new Exception(this._Cfg.DeviceName + " connection error!"); } lock (Master) { Response = Master.ReadCoils(_Cfg.slaveID, adr, 1); } bool org; if (DOUT.TryGetValue(adr, out org)) { if (!org.Equals(Response[0])) { DOUT.TryUpdate(adr, Response[0], org); _Report.On_Data_Chnaged(_Cfg.DeviceName, "DOUT", adr.ToString(), org.ToString(), Response[0].ToString()); } } else { DOUT.TryAdd(adr, Response[0]); _Report.On_Data_Chnaged(_Cfg.DeviceName, "DOUT", adr.ToString(), "N/A", Response[0].ToString()); } } else { ushort[] Response2; try { lock (Master) { Master.WriteSingleRegister(_Cfg.slaveID, adr, Convert.ToUInt16(Value)); } } catch { throw new Exception(this._Cfg.DeviceName + " connection error!"); } lock (Master) { Response2 = Master.ReadHoldingRegisters(_Cfg.slaveID, adr, 1); } ushort org; if (AOUT.TryGetValue(adr, out org)) { if (!org.Equals(Response2[0])) { AOUT.TryUpdate(adr, Response2[0], org); _Report.On_Data_Chnaged(_Cfg.DeviceName, "DOUT", adr.ToString(), org.ToString(), Response2[0].ToString()); } } else { AOUT.TryAdd(adr, Response2[0]); _Report.On_Data_Chnaged(_Cfg.DeviceName, "DOUT", adr.ToString(), "N/A", Response2[0].ToString()); } } } catch (Exception e) { logger.Error(e.StackTrace); } }
public void WriteSingleCoil(byte slaveID, ushort coilAddress, bool OnOff) { Master.WriteSingleCoil(slaveID, coilAddress, OnOff); }