外部I/Fからのデータを受け取るC++ dllを作り、C#側から呼び出し、WindowsのText Boxに表示するプログラムを作っています。
【試した方法】
C++dllを呼び出す度にデータを読み出すようにし、C#側でDLLをTimerメソッドに入れて定期的にデータを読んでくる。 ※以下のコードで成功しました。
int __stdcall GetData() { static int buff; oApi.Receive(0, &MSGbuff); /外部I/Fからデータを読み取るAPI buff = MSGbuff[0]; return buff; private void timer1_Tick(object sender, EventArgs e) {tBox_Angle.Text = Convert.ToString((short)DLLimpo.GetData());}
しかし、この方法では、I/Fデータと同期がとれているわけではないので、
受信漏れが発生します。
【試したい方法】
そこで、C#側のTimerで読んでくるのではなく、C++DLLを裏側で動作させ、DLLがデータを受信したら、それをC# プロパティに設定し、イベントを発生させる方法にしたいです。
C#でDLLを連続させるには、 Form1_LoadにDLLを入れればいいのでしょうか?
試しでDLLの中をLoopにし、 Form1_Loadにセットし、返り値をBufferに入れてTimerで定期的に取りに行くようにしてみたんですが、動きませんでした。
※同期をとることではなく、ただ裏で回せるために試したものです。
int __stdcall GetData() { static int buff; while(1){ oApi.Receive(0, &MSGbuff); /外部I/Fからデータを読み取るAPI buff = MSGbuff[0]; return buff;}
DLLを裏で動作させることや動機を取る方法など、アドバイスをお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。