質問

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

シリアルポートがいくつかのデータを受信したときにコールバック関数を登録および実装するAC#クラスライブラリ(DLL)。

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_datareceeeceeceeceがコールバックされるかどうかを知りたいのですが。別のプログラムからライブラリ内で_combufferを読み込もうとしていますが、常に空になります(同じアプリ内のコンソールアプリでテストしたときにデータが来ていても)。

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

ありがとう

役に立ちましたか?

解決

<HUNCH>

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

したがって、イベントを取得してから読み取りを呼び出した後、実際に送信されるデータを破棄してさらにリクエストします。

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

</HUNCH>

他のヒント

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

ただし、ソリューションの設定方法によっては、Binフォルダーに最新のDLLがあることを確認するのは痛みになる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top