public void ReadToResetWithOverflow()
        {
            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);

                    byte[] writeData = new byte[2048];
                    for (int i = 0; i < writeData.Length; i++)
                    {
                        writeData[i] = (byte)((i % 26) + 0x41);
                    }

                    // We write 2048 bytes that starts with A..Z repeated.
                    //  Position 0 = A
                    //  Position 1023 = J
                    // To read a line, it parses the 2048 characters, not finding a new line. Then we read a character and
                    // we expect to get 'A'.
                    src.Write(writeData, 0, writeData.Length);
                    Assert.That(() => { dst.ReadLine(); }, Throws.Exception.TypeOf <TimeoutException>());
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'A'));
                }
        }
        public void ReadSingleCharUtf32()
        {
            using (SerialPortStream dst = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One))
                using (SerialPortStream src = new SerialPortStream(SourcePort, 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);

                    byte[] send = new byte[] { 0xF3, 0xA0, 0x82, 0x84 };
                    src.Write(send, 0, send.Length);

                    Assert.That(dst.ReadChar(), Is.EqualTo(0xDB40));
                    Assert.That(dst.ReadChar(), Is.EqualTo(0xDC84));
                    Assert.That(dst.ReadChar(), Is.EqualTo(-1));
                }
        }
        public void DisconnectOnReadCharBlockedReadAgain()
        {
            using (SerialPortStream serialSource = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) {
                serialSource.Open();
                int c = serialSource.ReadChar();
                Console.WriteLine("{0} char read", c);

                Assert.That(
                    () => {
                    c = serialSource.ReadChar();
                    Console.WriteLine("{0} char read again", c);
                }, Throws.InstanceOf <System.IO.IOException>());

                // Device should still be open.
                Assert.That(serialSource.IsOpen, Is.True);
                serialSource.Close();
            }
        }
        public void ReadToWithMbcs()
        {
            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);

                    src.Write(new byte[] { 0x61, 0xE2, 0x82, 0xAC, 0x40, 0x41 }, 0, 6);
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'a'));
                    Assert.That(dst.ReadByte(), Is.EqualTo((0xE2)));
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'�'));
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'�'));
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'@'));
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'A'));
                }
        }
        public void ReadSingleChar()
        {
            using (SerialPortStream dst = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One))
                using (SerialPortStream src = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) {
                    src.WriteTimeout = 2 * TimeOut + 500; src.ReadTimeout = 2 * TimeOut + 500;
                    dst.WriteTimeout = 2 * TimeOut + 500; dst.ReadTimeout = 2 * TimeOut + 500;
                    src.Open(); Assert.That(src.IsOpen, Is.True);
                    dst.Open(); Assert.That(dst.IsOpen, Is.True);

                    byte[] send = new byte[] { 0x65, 0x66, 0x67 };
                    src.Write(send, 0, send.Length);
                    Thread.Sleep(TimeOut + 500);

                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'e'));
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'f'));
                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'g'));
                }
        }
        public void DisconnectOnReadCharBlocked()
        {
            using (SerialPortStream serialSource = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) {
                serialSource.Open();
                int c = serialSource.ReadChar();
                Console.WriteLine("{0} char read", c);

                // Device should still be open.
                Assert.That(serialSource.IsOpen, Is.True);
                serialSource.Close();
            }
        }
示例#7
0
 static void Main(String[] args)
 {
     using (var serialPort = new SerialPortStream("COM1"))
     {
         serialPort.OpenDirect();
         while (serialPort.IsOpen)
         {
             var ch = (Char)serialPort.ReadChar();
             Console.Write(ch);
         }
     }
 }
        public void ReadToResetWithMbcs3()
        {
            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);

                    src.Write(new byte[] { 0xE2, 0x82, 0xAC, 0x40, 0x41, 0x62 }, 0, 6);
                    Assert.That(() => { dst.ReadLine(); }, Throws.Exception.TypeOf <TimeoutException>());

                    Assert.That(dst.ReadChar(), Is.EqualTo((int)'€'));
                    Assert.That(dst.ReadByte(), Is.EqualTo(0x40));
                    Assert.That(dst.ReadExisting(), Is.EqualTo("Ab"));
                }
        }