Последовательная связь (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
и изменение знака на этот байт. Однако я также должен найти идею, как его тестировать;)