public bool WriteIOTag(string tagAddress, enuOnOff value) { bool rtv = true; string res; int rtc; byte[] result = null; //if (!master.connected) // Start(); try { if (master.connected)//PAx prylar { bool onOff = value == enuOnOff.SetOn; // byte[] result = null; int ID = ++transactionId; int StartAddress = 0; // check if address is word.bit format if (tagAddress.Contains('.')) { int bit = 0; int word = 0; int.TryParse(tagAddress.Substring(tagAddress.IndexOf('.', 0) + 1), out bit); int.TryParse(tagAddress.Substring(0, tagAddress.IndexOf('.')), out word); StartAddress = (word) * 16 + (15 - bit); } else { StartAddress = System.Convert.ToInt32(tagAddress); } master.WriteSingleCoils(ID, StartAddress, onOff, ref result); } } catch (Exception ex) { Stop(); //started = false; rtv = false; //Added 2011-01-25, PaCl throw new Exception(new StringBuilder("Error writing io tag ").Append(tagAddress).Append(": ").Append(ex.Message).ToString()); } rtv = (result != null) && (result.Length > 0); return rtv; }
public bool ReadIOTag(string tagAddress, bool isInput, out enuOnOff value) { int StartAddress = 0; byte Length = 1; byte[] result = null; Tiara.IO.ModBusTCPClient.enuOnOff onOff; bool rtv = false; try { if (master.connected)//PAx prylar { int ID = ++transactionId; // check if address is word.bit format if (tagAddress.Contains('.')) { int bit = 0; int word = 0; int.TryParse(tagAddress.Substring(tagAddress.IndexOf('.', 0) + 1), out bit); int.TryParse(tagAddress.Substring(0, tagAddress.IndexOf('.')), out word); StartAddress = (word) * 16 + (15 - bit); } else { StartAddress = System.Convert.ToInt32(tagAddress); } //result = new byte[1]; if (isInput) master.ReadDiscreteInputs(ID, StartAddress, Length, ref result); else master.ReadCoils(ID, StartAddress, Length, ref result); } } catch (Exception ex) { ////////////////// Stop();KAnske så //started = false; rtv = false; //Added 2011-01-25, PaCl throw new Exception(new StringBuilder("Error reading io tag ").Append(tagAddress).Append(": ").Append(ex.Message).ToString()); } if (result != null && result.Length > 0) { // Maska ut LSB ur svaret (ADAM returnerade 8 bitar // trots att man bara läste en). int iResultLsb = (int)result[0] & 1; value = (enuOnOff)((iResultLsb == 1) ? 1 : 0); rtv = true; } else value = (enuOnOff)0; return rtv; }