現在、私はMono開発用にDelphi Prismを使用しています。したがって、ソフトウェアは主にLinux OS上で動作するクロスプラットフォームにすることができます。はじめに、私は、ソフトウェアの基本機能(シリアル通信とネットワーク通信)の実行とテストを行ってきました。LINUXでのシリアル通信(RS232)
しかし、私はMonoのシリアル通信の実装を渡すことはできません。それはインターネットやStackoverflowを検索した後、Linux環境をサポートするライブラリや.NETフレームワークがないようです。 Stackoverflowで他の人から聞いた同様の質問がいくつかありますが、答えは実際にはサンプルを表示していません。私はこだわっています。
ここに私がモノシリアル通信用に書いたコードがあります。この1つのウェブサイトを訪問した後。
{$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は「要求された機能が実装されていません」というメッセージボックスを表示します。なぜ私は理解できません。モノでもこれは可能ですか?
RS232通信用にLinuxのシリアルポートにアクセスする必要があります。
おかげで、
このコードは動作するはずです。また、UIスレッドで 'SerialPort'を使用していることを正しく理解していますか(' Application.DoEvents'はこれを示唆しています)?はいの場合は、これをしないでください.RS232通信を処理するための別のスレッドを開始してください。 – skolima
['ParityReplace'サポートはまだ実装されていないかもしれません](http://www.mono-project.com/HowToSystemIOPorts)のようです。 – sarnold
私はおそらく少し遅れている:)しかし、あなたはこのライブラリを見たことがありますか? https://github.com/raspberry-sharp/raspberry-sharp-io –