public void SerialPortStream_ReadTo_Overflow() { using (SerialPortStream src = new SerialPortStream(c_SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(c_DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = c_Timeout; src.ReadTimeout = c_Timeout; dst.WriteTimeout = c_Timeout; dst.ReadTimeout = c_Timeout; src.Open(); Assert.IsTrue(src.IsOpen); dst.Open(); Assert.IsTrue(dst.IsOpen); // Send 2048 ASCII characters Random r = new Random(); byte[] sdata = new byte[2048]; for (int i = 0; i < sdata.Length; i++) { sdata[i] = (byte)r.Next(65, 65 + 26); } // Wait for the data to be received src.Write(sdata, 0, sdata.Length); src.Write("EOF"); while (dst.BytesToRead < sdata.Length) { System.Threading.Thread.Sleep(100); } string result = dst.ReadTo("EOF"); Assert.AreEqual(0, dst.BytesToRead); Assert.AreEqual(1024 - 3, result.Length); int offset = sdata.Length - result.Length; for (int i = 0; i < result.Length; i++) { Assert.AreEqual((int)sdata[offset + i], (int)result[i]); } } }
public void ReadToOverflow() { using (SerialPortStream src = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = TimeOut; src.ReadTimeout = TimeOut; dst.WriteTimeout = TimeOut; dst.ReadTimeout = TimeOut; src.Open(); Assert.That(src.IsOpen, Is.True); dst.Open(); Assert.That(dst.IsOpen, Is.True); // Send 2048 ASCII characters Random r = new Random(); byte[] sdata = new byte[2048]; for (int i = 0; i < sdata.Length; i++) { sdata[i] = (byte)r.Next(65, 65 + 26); } // Wait for the data to be received src.Write(sdata, 0, sdata.Length); src.Write("EOF"); while (dst.BytesToRead < sdata.Length) { Thread.Sleep(100); } string result = dst.ReadTo("EOF"); Assert.That(dst.BytesToRead, Is.EqualTo(0)); Assert.That(result.Length, Is.EqualTo(1024 - 3)); int offset = sdata.Length - result.Length; for (int i = 0; i < result.Length; i++) { Assert.That((int)result[i], Is.EqualTo(sdata[offset + i])); } } }
public string Recv() { _stream.ReadTimeout = 1000; var resp = _stream.ReadTo("\r"); if (resp.Length < 1) { throw new FormatException($"Response too short to be valid ({resp.Length} < 1)."); } return(resp); }
public void SerialPortStream_ReadTo_Cached() { using (SerialPortStream src = new SerialPortStream(c_SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(c_DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = c_Timeout; src.ReadTimeout = c_Timeout; dst.WriteTimeout = c_Timeout; dst.ReadTimeout = c_Timeout; src.Open(); Assert.IsTrue(src.IsOpen); dst.Open(); Assert.IsTrue(dst.IsOpen); bool err = false; string s; src.Write("foobar"); try { s = dst.ReadTo("baz"); } catch (System.Exception e) { if (e is TimeoutException) { err = true; } } Assert.IsTrue(err, "No timeout exception occurred when reading 'baz'"); s = dst.ReadTo("foo"); Assert.AreEqual("", s); s = dst.ReadTo("bar"); Assert.AreEqual("", s); try { s = dst.ReadTo("baz"); } catch (System.Exception e) { if (e is TimeoutException) { err = true; } } Assert.IsTrue(err, "No timeout exception occurred when reading 'baz' when empty"); } }
public void ReadToCached() { using (SerialPortStream src = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = TimeOut; src.ReadTimeout = TimeOut; dst.WriteTimeout = TimeOut; dst.ReadTimeout = TimeOut; src.Open(); Assert.That(src.IsOpen, Is.True); dst.Open(); Assert.That(dst.IsOpen, Is.True); string s; src.Write("foobar"); Assert.Throws <TimeoutException>(() => { s = dst.ReadTo("baz"); }, "No timeout exception occurred when reading 'baz'"); s = dst.ReadTo("foo"); Assert.That(s, Is.EqualTo("")); s = dst.ReadTo("bar"); Assert.That(s, Is.EqualTo("")); Assert.Throws <TimeoutException>(() => { s = dst.ReadTo("baz"); }, "No timeout exception occurred when reading 'baz' when empty"); } }
public void SerialPortStream_ReadTo_Normal() { using (SerialPortStream src = new SerialPortStream(c_SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(c_DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = c_Timeout; src.ReadTimeout = c_Timeout; dst.WriteTimeout = c_Timeout; dst.ReadTimeout = c_Timeout; src.Open(); Assert.IsTrue(src.IsOpen); dst.Open(); Assert.IsTrue(dst.IsOpen); string s; src.Write("superfoobar"); s = dst.ReadTo("foo"); Assert.AreEqual("super", s); s = dst.ReadExisting(); Assert.AreEqual("bar", s); } }
public void ReadToNormal() { using (SerialPortStream src = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = TimeOut; src.ReadTimeout = TimeOut; dst.WriteTimeout = TimeOut; dst.ReadTimeout = TimeOut; src.Open(); Assert.That(src.IsOpen, Is.True); dst.Open(); Assert.That(dst.IsOpen, Is.True); string s; src.Write("superfoobar"); s = dst.ReadTo("foo"); Assert.That(s, Is.EqualTo("super")); // Sleep for 100ms to allow all data to be sent and received. Else we might not receive the // entire string, and sometimes only get it partially. Thread.Sleep(100); s = dst.ReadExisting(); Assert.That(s, Is.EqualTo("bar")); } }
public void SerialPortStream_ReadTo_Cached() { using (SerialPortStream src = new SerialPortStream(c_SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream dst = new SerialPortStream(c_DestPort, 115200, 8, Parity.None, StopBits.One)) { src.WriteTimeout = c_Timeout; src.ReadTimeout = c_Timeout; dst.WriteTimeout = c_Timeout; dst.ReadTimeout = c_Timeout; src.Open(); Assert.IsTrue(src.IsOpen); dst.Open(); Assert.IsTrue(dst.IsOpen); bool err = false; string s; src.Write("foobar"); try { s = dst.ReadTo("baz"); } catch (System.Exception e) { if (e is TimeoutException) err = true; } Assert.IsTrue(err, "No timeout exception occurred when reading 'baz'"); s = dst.ReadTo("foo"); Assert.AreEqual("", s); s = dst.ReadTo("bar"); Assert.AreEqual("", s); try { s = dst.ReadTo("baz"); } catch (System.Exception e) { if (e is TimeoutException) err = true; } Assert.IsTrue(err, "No timeout exception occurred when reading 'baz' when empty"); } }