.NETのGUIシェルを使用した自家製USB-HID LEDの管理

画像

少数の部品から組み立てられた同様のものは、改造やキーボードの照明に便利です。





AtmelはAtmelのAtTiny45マイクロコントローラーを使用してUSBに接続します。 このマイクロコントローラーにはハードウェアUSBインターフェイスがないため、Objective DevelopmentのV-USBライブラリを使用してプログラムで実装されます。 また、この8本足のゴキブリは、クォーツとストラップを取り除くことができるPLL(PLL)を内蔵しているため、多数の足を解放することはできませんが、最も重要なことは、USB〜16.5 MHzの目的のクロック周波数に調整することです。 また、PLLでは、必要に応じて、同じUSBティックを使用してこの周波数を調整できます。 実際、これはデバイスを初めて接続するときに行われます。 その後、調整値はEEPROMメモリに保存され、次回接続されたときにアンロードされます。 次にソフトウェアUSBスタックが来るので、マイクロコントローラーにはほとんどリソースがありません。 Tiny45はインサーキットプログラマーによって簡単にフラッシュされるため、USBaspを使用しました。



画像



私は怠zyな生き物なので、ハンカチ自体を繁殖させたくなかったので、 microsin.ru / content / view / 655/44 Webサイトで購入しました。接続図、ロシア語に翻訳されたV-USBライブラリ、および方法の説明もあります。彼女のmicrosin.ru/content/view/613/44と連携します。



\ examples \ hid-custom-rq \フォルダーのV-USBライブラリ例を使用して、PLL \ libs-device \をねじ込み、AtTiny45でコンパイルしました。 私はそれを要求しました。 コマンドラインを使用して確認しました。 動作します。 動作するには、libusbライブラリsourceforge.net/projects/libusb-win32/filesをインストールする必要があります。理論的にはインストールできません。libusb0.dllファイルを呼び出すプログラムの隣のディレクトリに置くだけです。 しかし、私にはうまくいきませんでした。



コマンドラインは確かに優れていますが、実用的ではありません。 DLLの\ examples \ hid-custom-rq \ commandline \からサンプルを修正および再構築し、それにGUIシェルを固定することにしました。



最初に、MinGWコンパイラとこちらのwww.adp-gmbh.ch/win/misc/mingw/dll.htmlのマニュアルを使用してDLLを組み立てました。すべてがlibusb-win32ライブラリでコンパイルされるように汗をかかなければなりませんでした。 DLLの中には、2つの関数があります。

void led_set( int isOn ){

...

}

int led_get( void ){

...

}


* This source code was highlighted with Source Code Highlighter .








void led_set( int isOn ){

...

}

int led_get( void ){

...

}


* This source code was highlighted with Source Code Highlighter .










次に、彼は、マニュアルwww.adp-gmbh.ch/csharp/call_dll.htmlを使用して、コマンドラインからこのDLLを呼び出す小さなC#プログラムを作成しました 。 XPでは、ほとんどすぐに機能しました。win7'64の下の.NETがDLLと通信したくないのは、OSの残りの部分をチェックしませんでした。

結果のコマンドラインプログラムコード:

using System.Runtime.InteropServices;

using System;



class call_led {

[DllImport( "led.dll" )]

private static extern int led_get();

[DllImport( "led.dll" )]

private static extern void led_set( int isOn );



public static void Main()

{

led_set(0);

Console .WriteLine( "led is {0}" , led_get());

}

}


* This source code was highlighted with Source Code Highlighter .








using System.Runtime.InteropServices;

using System;



class call_led {

[DllImport( "led.dll" )]

private static extern int led_get();

[DllImport( "led.dll" )]

private static extern void led_set( int isOn );



public static void Main()

{

led_set(0);

Console .WriteLine( "led is {0}" , led_get());

}

}


* This source code was highlighted with Source Code Highlighter .










Microsoft Visual C#2008 Express Editionを提供し、最も簡単なプロジェクトWindowsFormsApplicationに基づいて、単一のChekBoxでLEDをオン/オフする小さなプログラムを作成しました。 また、デバイスが接続されているかどうか、およびどのような状態であるかを300msごとにチェックします。



画像画像画像



これは私の最初のC#プログラムなので、クラスを実装せず、dllから関数を直接呼び出しました。 実際に結果のデバイスのビデオ:





実際にはスキーム+ 16進+ソース+スタジオプロジェクト:

led_t45.rar



All Articles