C# открытый последовательный порт, созданный socat

Создайте два виртуальных последовательных порта

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 "привет" > /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)?

1 ответ

Казалось бы, это как-то связано с тем, что socat неправильно эмулирует последовательный порт. Все, что я смог найти, это информация, приведенная ниже, которая относится к адаптеру USB-Serial, но я предполагаю, что socat ведет себя так же.

При открытии последовательного порта System.IO.Ports.SerialPort косвенно вызывает SetSignal, который вызывает TIOCMGET ioctl, который, как это происходит, НЕ ОСУЩЕСТВЛЯЕТСЯ в драйвере mos7720!

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

Другие вопросы по тегам