0

Unity3D エンジンを使用する別のプログラムから .Net serialport メソッドを使用しようとしています。

シリアル ポートがデータを受信したときにコールバック関数を登録して実装するクラス ライブラリ (dll) を ac# にしました。

public CSerialDll()
{         
   _serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
}

void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   int bytes = _serial.BytesToRead;
   _comBuffer = new byte[bytes];
   _serial.Read(_comBuffer, 0, bytes);
   Console.WriteLine("data recv: " + System.Text.ASCIIEncoding.ASCII.GetString(_comBuffer));
}

次に、別のプログラムで、クラスのインスタンスを作成します。

ライブラリ (dll) 内のコールバック serial_DataReceived が呼び出されるかどうかを知りたいです。別のプログラムからライブラリ内の _comBuffer を読み込もうとしていますが、常に空です (同じアプリ内のコンソール アプリでテストしたときにデータが来ていても)。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

1

<HUNCH>

もし私がクラス デザイナーだったら、データをコールバックに入れます。そのため、SerialDataReceivedEventArgsクラスを見ると、その中にデータをバッファリングしていることがわかります。

したがって、イベントを取得してから read を呼び出した後、実際に送信されたデータを破棄し、さらに要求します。

言い換えれば、はい、それが外部ライブラリであるという事実は、それが正常に機能していないという事実とは何の関係もありません。

</HUNCH>

于 2010-12-06T06:49:10.020 に答える
0

通常、アクセス修飾子が正しく設定されている限り、別の DLL 内にあるメソッドについて特に特別なことはありません。

ただし、ソリューションの設定方法によっては、bin フォルダーに最新の DLL があることを確認するのが面倒な場合があります。

于 2010-12-06T06:51:48.440 に答える