Untitled
unknown
csharp
5 months ago
1.9 kB
4
Indexable
private static string ParseManometerData(string dataReceived, out int checksum, out int computedChecksum, out string io) { string data; io = "0"; //RandomGenerator.Next(0,4).ToString(CultureInfo.InvariantCulture); checksum = int.MinValue; computedChecksum = int.MinValue; // Regex validates following inputformats that can be received from the device: // // "data\t\r" --> Reaction from Manometer without Checksum // "data\t*checksum\r" --> Reaction from Manometer with checksum. data may be empty. // "data\t*checksum\rIO\n" --> Reaction with new Manometer wireless connection framework. var regexStr = "^(?<Data>.*?)[\t|\r]{1,2}(\\*(?<Checksum>[^\r]+)\r)?(?<io>[0-9A-F]{0,2}?)[\r|\n]?$"; var m = Regex.Match(dataReceived, regexStr, RegexOptions.Compiled); if (m.Success) { data = m.Groups["Data"].ToString(); io = m.Groups["io"].ToString(); CommunicationLogger.Debug($"Data received : {dataReceived.Replace("\r", "[CR]").Replace("\n", "[LF]")}"); CommunicationLogger.Debug($"Data : {data}"); CommunicationLogger.Debug($"Checksum : {m.Groups["Checksum"]}"); CommunicationLogger.Debug($"IO status : {io}\n"); try { var requiresChecksumValidation = m.Groups["Checksum"].Success; if (requiresChecksumValidation) { checksum = int.Parse(m.Groups["Checksum"].ToString(), CultureInfo.InvariantCulture); computedChecksum = ComputeChecksum(data + "\t*"); } } catch (Exception) { throw new InvalidDataException("Invalid manometer data received."); } } else { throw new InvalidDataException("Invalid manometer data received."); } return data; }
Editor is loading...
Leave a Comment