Последовательная связь (RS232) в LINUX

В настоящее время я работаю с Delphi Prism для разработки Mono. Таким образом, программное обеспечение может быть кроссплатформенным, в основном, для запуска на ОС Linux. Для начала я внедряю и тестирую основные функции своего программного обеспечения - последовательную и сетевую связь.

Но я не могу пройти мимо реализации последовательной связи для Mono. Похоже, что нет библиотеки или.NET Framework, поддерживающего среду Linux после поиска в Интернете и Stackru. Хотя в Stackru есть некоторые подобные вопросы, которые задавали другие, ответы на самом деле не показывают образец. Я немного застрял.

Вот код, который я написал для моно последовательной связи. после посещения этого сайта.

  {$IFDEF LINUX}
    if SerialPort1 = nil then
        SerialPort1 := new System.Io.Ports.SerialPort();
    SerialPort1.Close;

    SerialPort1.BaudRate:=19200;
    SerialPort1.DataBits:=8;
    SerialPort1.DtrEnable:=true;
    SerialPort1.Parity:=System.IO.Ports.Parity.Even;
    SerialPort1.PortName:="/dev/ttyS0";
    SerialPort1.ParityReplace:=63;
    SerialPort1.ReadBufferSize:=4096;
    SerialPort1.ReadTimeout:=1000;
    SerialPort1.RtsEnable:=true;
    SerialPort1.StopBits:=System.IO.Ports.StopBits.One;
    SerialPort1.WriteTimeout:=1000;
    SerialPort1.Open;

    while (true) do
    begin
        CommByte[0]:=$FF;
        CommByte[1]:=$04;
        CommByte[2]:=$04;
        CommByte[3]:=thechannel;
        CommByte[4]:=mcommand;
        CommByte[5]:=(CommByte[2] xor CommByte[3] xor CommByte[4]);

        SerialPort1.Write(CommByte,0,6);
        while SerialPort1.BytesToWrite>0 do;
        Thread.Sleep(10);
        Application.DoEvents;
    end;
{$ENDIF}

Но каждый раз, когда я запускаю этот код в Linux, Mono выводит окно с сообщением "Запрошенная функция не реализована". Я не могу понять почему. Это вообще возможно сделать для Mono?

Мне нужно получить доступ к последовательному порту в Linux для связи RS232.

Спасибо,

1 ответ

Решение

Недвижимость ParityReplace в настоящее время не реализовано. Если это действительно не нужно, выбросьте его, и у вас, вероятно, не будет этого исключения. И если вам это нужно, скажите мне, это может быть сделано с помощью PARMRK и изменение знака на этот байт. Однако я также должен найти идею, как его тестировать;)

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