2

私は現在、Mono 開発のために Delphi Prism を使用しています。したがって、ソフトウェアはクロスプラットフォームであり、主に Linux OS で実行できます。はじめに、ソフトウェアの基本機能であるシリアル通信とネットワーク通信を実装して実行をテストしました。

しかし、Mono のシリアル通信の実装を渡すことができないようです。インターネットやStackoverflowで検索したところ、Linux環境に対応したライブラリや.NETフレームワークはないようです。Stackoverflow で他の人から尋ねられた同様の質問がいくつかありますが、回答は実際にはサンプルを示していません。私はちょっと立ち往生しています。

これは、Mono シリアル通信用に書いたコードです。この1つのWebサイトにアクセスした後。

  {$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でも可能ですか?

RS232 通信用に Linux のシリアル ポートにアクセスする必要があります。

ありがとう、

4

1 に答える 1

4

プロパティParityReplaceは現在実装されていません。本当に必要でない場合は、破棄してください。おそらくこの例外はありません。必要な場合は、教えてください。おそらく、PARMRKmark を使用してこのバイトに変更することで実行できます。ただし、それを単体テストする方法も考えなければなりません;)

于 2011-07-03T22:00:59.260 に答える