namespace Tests.WeighingTests { public static class ScaleHandlers { public static (string, bool) Handle_IT3000A(string req, int weight, string? error, int identNr) { var modes = error?.Split(';') ?? []; var overloaded = modes.Contains("overloaded"); var moving = modes.Contains("moving"); var invalid = modes.Contains("invalid"); var crc = modes.Contains("crc"); var unit = modes.Contains("unit"); Thread.Sleep(100); if (invalid) { return ("abcd\r\n", false); } else if (!req.StartsWith('<') || !req.EndsWith('>')) { return ("<31>\r\n", false); } req = req[1..^1]; bool incr; if (req.Length > 3) { return ("<32>\r\n", false); } else if (req.StartsWith("RN")) { incr = true; } else if (req.StartsWith("RM")) { incr = false; } else { return ("<32>\r\n", false); } if (overloaded) { return ("<12>\r\n", false); } else if (weight == 0) { incr = false; } if (moving && incr) return ("<13>\r\n", false); string data = $"00{(moving ? 1 : 0)}0{new DateTime(2020, 10, 15, 12, 34, 0):dd.MM.yyHH:mm}{(incr ? identNr : 0),4}1" + $"{weight,8}{0,8}{weight,8}{(unit ? "lb" : "kg")} {"1",3}"; ushort checksum = Elwig.Helpers.Utils.CalcCrc16Modbus(data); if (crc) checksum += 10; return ($"<{data}{checksum,8}>\r\n", incr); } public static (string, bool) Handle_L246(string req, int weight, string? error, int identNr) { var modes = error?.Split(';') ?? []; var overloaded = modes.Contains("overloaded"); var moving = modes.Contains("moving"); var invalid = modes.Contains("invalid"); var crc = modes.Contains("crc"); var unit = modes.Contains("unit"); Thread.Sleep(100); if (invalid) { return ("abcd\r\n", false); } else if (!req.StartsWith('<') || !req.EndsWith('>')) { return ("<31>\r\n", false); } req = req[1..^1]; bool incr; if (req.Length > 3) { return ("<32>\r\n", false); } else if (req.StartsWith("RN")) { incr = true; } else if (req.StartsWith("RM")) { incr = false; } else { return ("<32>\r\n", false); } if (overloaded) return ("<12>\r\n", false); if (moving && incr) return ("<13>\r\n", false); string data = $"00{(moving ? 1 : 0)}0{new DateTime(2020, 10, 17, 14, 23, 0):dd.MM.yyHH:mm}{(incr ? identNr : 0),4}1" + $"{weight,8}{0,8}{weight,8}{(unit ? "lb" : "kg")} {"001",3}"; ushort checksum = Elwig.Helpers.Utils.CalcCrc16Modbus(data); if (crc) checksum += 10; return ($"<{data}{checksum,8}>\r\n", incr); } public static (string, bool) Handle_L320(int weight, string? error, int identNr) { var modes = error?.Split(';') ?? []; var invalid = modes.Contains("invalid"); var unit = modes.Contains("unit"); Thread.Sleep(100); if (invalid) { return ("abcd\r\n", false); } bool incr = true; return ($" {new DateTime(2020, 9, 28, 9, 8, 0):dd.MM.yy HH:mm} {identNr,4} {weight,9}{(unit ? "lb" : "kg")} \r\n", incr); } } }