我目前正在使用Delphi Prism进行Mono开发。因此,该软件可以跨平台,主要是在Linux OS上运行。为了开始,我一直在实现和测试运行我的软件的基本功能 - 串行和网络通信。
但我似乎无法通过Mono的串行通信实现。在搜索Internet和Stackoverflow之后,似乎没有支持Linux环境的库或.NET框架。尽管Stackoverflow中有其他人提出了类似的问题,但答案并没有真正显示任何样本。我有点卡住了。
这是我为Mono serial comm编写的代码。访问这个网站后。
{$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通信的串口。
谢谢,
答案 0 :(得分:4)
目前尚未实施属性ParityReplace
。如果它不是真的需要,扔掉它,你可能不会有这个例外。如果你需要它,请告诉我,可能可以使用PARMRK
并将标记更改为此字节来完成。但是我也想知道如何对它进行单元测试;)