2

创建两个虚拟串口

socat  -d -d -d  PTY,b115200,raw,echo=0,crnl,link=/home/user/ttyS110 PTY,b115200,raw,echo=0,crnl,link=/home/user/ttyS111 

cat /home/user/ttyS110 echo "hello" > /home/user/ttyS111 有效!

尝试打开:

using System;
using System.IO.Ports;

namespace qqq
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            SerialPort fSerialPort = new SerialPort();

            fSerialPort.PortName = "/home/user/ttyS111";

            fSerialPort.BaudRate = 115200;
            fSerialPort.Parity = Parity.None;
            fSerialPort.DataBits = 8;
            fSerialPort.StopBits = StopBits.One;
            fSerialPort.ReadTimeout = 500;
            fSerialPort.WriteTimeout = 500;

            try
            {
                fSerialPort.Open();
                Console.WriteLine("Open port");
            }
            catch (Exception e)
            {
                Console.WriteLine("Open port ERROR! " + e.Message);
            }
        }
    }
}

捕获异常“无效参数”。

如何从 c# (Mono) 打开虚拟端口?

4

1 回答 1

1

这似乎与 socat 没有正确模拟串行端口有关。我能找到的所有帮助是下面的信息,它与 USB 到串行适配器有关,但我猜 socat 的行为方式相同。

打开串行端口时,System.IO.Ports.SerialPort 间接调用 SetSignal,后者调用 TIOCMGET ioctl,碰巧这在 mos7720 驱动程序中没有实现!

http://advogato.org/person/tripp/diary/18.html

于 2015-11-13T13:48:05.490 回答