1


1

このハードウェアIOカードで割り込みを有効にして検出するにはどうすればよいですか?

次のカードを持っていますが、interuptsが機能しません。 私はそれらが正しく動作するはずである方法を理解していない可能性があります…​ 私はこの種のプログラミングはあまりしません。

しかし、見た目からは、IOポートの1つに何かが入ると割り込みを生成できるはずですよね? 機械操作用の多数のスイッチに接続されています。

できるだけ早く作業中のコードの一部を投稿します。 私はベースアドレス(私が持っている)+ 0xEに何かを書こうとしていますが、それは助けにはなりません…​ AIOWDM WaitForIRQメソッドは、呼び出すたびに0で戻ります…​ 何も起こりません。

任意の助けがいただければ幸いです…​ これは一種の一般的な質問です。

更新:彼らが提供するサンプルアプリケーションでさえ、割り込みを検出せず、ジャンパーが正しくインストールされていることを知っているので、すべての割り込みを発生させるだけではないと推測しています…​ 各スイッチを特定のIOピンに配線する必要があり、1つのピンが割り込みを担当していると思います…​

1 Answer


0


要するに、C#は低レベルのアンマネージコードであるため、この種のタスクに適した言語ではありません。 理論的にはできますが、割り込みに対処するために管理されていない世界に頻繁に旅行する必要があるため、より苦痛になります。 このような低レベルのものをより良く処理し、処理するC / C ++ネイティブコードのようなものからこれを調べることをお勧めします。

C#には独自のガベージコレクションがあるため、最後にしたいのは、割り込み処理メカニズムをガベージコレクションで破棄することです。これは、割り込み処理に使用される貴重なデータ構造にさよならです。これに関するコードのオーバーヘッド。

個人的には、この種のことを扱っているC#のことは聞いたことがありませんが、より熱心な読者の中には、「C#で書かれたSingularityと呼ばれる新しいOSについてはどうですか?」この日、.NETランタイムを使用してこのハードウェアタスクを管理することは、当然のことです。

*編集:*リファレンスマニュアルを見て、Cコードサンプルの1つで `outp`を使用していることに気付いた後、直接ポート入力出力を行う必要があるという考えに気付きました。 /www.driverlinx.com/DownLoad/DlPortIO.htm[this]が役立つ場合があります。正確にそれを行うことができるのはDLLであり、これを行うには適切なp / invoke署名を見つける必要があります。 同じことを行うことができる別のDLL http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html [こちら]。 また、http://openlibsys.org/ [this] WinRing0コードを確認してください。

繰り返しますが、掘り下げて、ピンボークに適した適切なメソッドシグネチャを見つける必要があります…​

これで幸運を祈ります。これ以上投稿するのは遠慮なくしてください。 :)

これが役立つことを願っています、よろしく、トム。