public EchoTester() { mSerial = null; mTest = null; mResults = new TestLog(); mLog = new FileLog("results.log"); mResults.setOutput(mLog); mLog.logType("SYSTEM", "System started"); }
public void setSerial(SerialPort _port) { SerialPort old = mSerial; mSerial = _port; if (old != mSerial) { if (old != null) { old.close(); } if (mSerial != null) { mSerial.open(); mLog.logType("SYSTEM", "Serial configuration: " + mSerial.ToString()); } } }
public override TestResult test(SerialPort _port) { char character = (char) mRandom.Next(255); String toSend = new String(character, 1); _port.send(toSend); DateTime timeout = DateTime.Now + TimeSpan.FromMilliseconds(100); bool timedout = false; String detail = ""; while (!_port.dataWaiting() && !timedout) { if (DateTime.Now > timeout) { timedout = true; } } String response = ""; bool success = false; if (!timedout) { response = _port.recvAmount(1); success = (response != toSend); if (success) { detail = "valid echo"; } else { detail = "invalid echo"; } } else { detail = "timed out"; } return new TestResult(toSend, response, success, detail); }
public override TestResult test(SerialPort _port) { bool success = false; char marker = '#'; char sending = (char) mRandom.Next(254); String toSend = new String(marker, 1) + new String(sending, 1); String expected = new String(marker, 1) + new String((char)(sending + 1), 1); _port.send(toSend); DateTime timeout = DateTime.Now + TimeSpan.FromMilliseconds(100); bool timedout = false; bool lockedOn = false; String received = ""; while (received.Length < 2 && !timedout) { while (!_port.dataWaiting() && !timedout) { if (DateTime.Now > timeout) { timedout = true; } } if (!timedout) { String rx = _port.recvAmount(1); if (!lockedOn && rx[0] == marker) { received = "#"; lockedOn = true; } else if (lockedOn) { received += rx; } } } String detail = ""; if (timedout) { received = ""; detail = lockedOn ? "synchronised but timed out" : "failed to synchronise and timed out"; } else { success = (received == expected); if (success) { detail = "synchronised with correct response"; } else { detail = "synchronised but incorrect response"; } } return new TestResult(toSend, received, success, detail); }
public abstract TestResult test(SerialPort _port);