protected virtual void OnMeasurement(ElicomMeasurement e) { if (Measurement != null) { Measurement(this, e); } }
/// <summary> /// Прочети отговора от устройството /// </summary> /// <returns></returns> public ElicomMeasurement ReadMeasurement() { byte[] buffer = new byte[1]; // Структора byte[] FLAGS_BYTE = new byte[1]; string signValue = "+"; string poundsValue = "0"; string gramsValue = "0"; // Прочита пакета int index = 0; while (buffer[0] != 13 /* CR_BYTE */) { this._SPort.Read(buffer, 0, 1); switch (index) { case 0: FLAGS_BYTE[0] = buffer[0]; break; case 1: // ASCII символ ‘+’ или ‘-‘. signValue = Encoding.ASCII.GetString(buffer); break; case 2: // ASCII символи ‘0’…’9‘ - за килограми case 3: case 4: poundsValue += Encoding.ASCII.GetString(buffer); break; case 5: // ASCII символ ‘.’ (точка) break; case 6: // ASCII символи ‘0’…’9‘ - за грамове case 7: case 8: gramsValue += Encoding.ASCII.GetString(buffer); break; case 9: // 13 (десетично) == ASCII символ “Carriage Return” break; } index++; } ElicomMeasurement msrmnt = new ElicomMeasurement(); msrmnt.SetFlags(FLAGS_BYTE); msrmnt.SetValue(signValue, poundsValue, gramsValue); OnMeasurement(msrmnt); return(msrmnt); }