using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace KHSCALE_TP { public class ComIcs9000 : SerialBase { // 통신 프레임 사이즈가 고정일 경우 그 사이즈를 지정. 정해진 사이즈가 없으면 -1 리턴하고, 구분자로 프레임 구분하도록 protected override int GetFrameSize() { return -1; } // 통신 프레임 간의 구분자가 있을 경우 그 구분자를 지정 protected override char GetFrameDelimiter() { return '\n'; } protected override bool Parse(List buffRecv) { try { string strRecv = Encoding.Default.GetString(buffRecv.ToArray()); int pos1 = strRecv.LastIndexOf("\n"); if (pos1 < 0) return false; strRecv = strRecv.Substring(0, pos1); int pos2 = strRecv.LastIndexOf("NT,"); int pos3 = strRecv.LastIndexOf("GS,"); int pos = Math.Max(pos2, pos3); if (pos > 0) { string val = strRecv.Substring(pos + 3, 8); val = val.Replace("+", ""); val = val.Replace(" ", ""); float result = 0; if (float.TryParse(val, out result)) { this.SetValue(result); } return true; } } catch { } return true; } } }