using System; namespace BPASmartClient.DosingSystem.Model { public static class Expand { /// /// 获取 M 区 和 VW 区的Modbus的地址 /// /// /// public static string ToAdd(this string address) { if (address == null) return ""; if (address.Length > 0) { address = address.Trim(); if (address.ToUpper().Contains("GM") && address.Length >= 3) { var res = address.Remove(0, 2); if (res != null && res.Length > 0) { return (int.Parse(res) + 4096).ToString(); } } else if (address.ToUpper().Contains("M") && address.Length >= 4) { var res = address.Substring(1).Split('.'); if (res != null && res.Length == 2) { if (int.TryParse(res[0], out int firstAddress) && int.TryParse(res[1], out int ExitAddress)) { if (ExitAddress >= 0 && ExitAddress <= 7) { return ((firstAddress * 8) + 320 + ExitAddress).ToString(); } } } } else if (address.ToUpper().Contains("I") && address.Length >= 2) { var res = address.Substring(1).Split('.'); if (res != null && res.Length == 2) { if (int.TryParse(res[0], out int firstAddress) && int.TryParse(res[1], out int ExitAddress)) { if (ExitAddress >= 0 && ExitAddress <= 7) { return ((firstAddress * 8) + ExitAddress).ToString(); } } } } else if (address.ToUpper().Contains("GI") && address.Length >= 3) { var res = address.Remove(0, 2); if (res != null && res.Length > 0) { return (int.Parse(res)).ToString(); } } else if (address.ToUpper().Contains("LB") && address.Length >= 3) { var res = address.Substring(2); if (res != null && res.Length > 0) { if (int.TryParse(res, out int firstAddress)) { return firstAddress.ToString(); } } } else if ((address.ToUpper().Contains("VW") || address.ToUpper().Contains("VD")) && address.Length >= 3) { var res = address.Substring(2); if (res != null && int.TryParse(res, out int tempAddress)) { return ((tempAddress / 2) + 100).ToString(); } } else if (address.ToUpper().Contains("LW") && address.Length >= 3) { var res = address.Substring(2); if (res != null && int.TryParse(res, out int LwAddress)) { return LwAddress.ToString(); } } else if (address.ToUpper().Contains("D") && address.Length == 5) { try { //D1001 string head = (System.Convert.ToInt32(address.Substring(1, 1))).ToString(); int num = System.Convert.ToInt32(address.Substring(2, 3)); int len = num.ToString().Length; string tail = string.Empty; switch (len) { case 1: if ((System.Convert.ToInt32(address.Substring(4, 1))).ToString().Length > 1) { tail = "0" + (System.Convert.ToInt32(address.Substring(4, 1))).ToString(); } else { tail = "00" + (System.Convert.ToInt32(address.Substring(4, 1))).ToString(); } break; case 2: if ((System.Convert.ToInt32(address.Substring(3, 2))).ToString().Length > 2) { tail = (System.Convert.ToInt32(address.Substring(3, 2))).ToString(); } else { tail = "0" + (System.Convert.ToInt32(address.Substring(3, 2))).ToString(); } break; case 3: tail = (System.Convert.ToInt32(address.Substring(2, 3))).ToString(); break; } address = head + tail; return address; } catch (Exception) { //打印日志 } } } return ""; } } }