OpenNETCFとデバイス制御 ~ .NET Compact Framework meet OpenNETCF ~

6,260 views
6,105 views

Published on

2009/09/05に開催されたスマートフォン勉強会@関西#5でお話させて頂いたセッション資料です。

OpenNETCFを使えばデバイスを手軽に利用出来たり、.NET Compact Frameworkで削除されたクラスやイベントなどに対応したコントロールを使う事ができるというお話をさせて頂く予定でした。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,260
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

OpenNETCFとデバイス制御 ~ .NET Compact Framework meet OpenNETCF ~

  1. 1. OpenNETCFを使ってデバイス制御 ~ Windows Mobile meet OpenNETCF ~ CH3COOH(酢酸)
  2. 2. OpenNETCFとデバイス制御 ~ .NET Compact Framework meet OpenNETCF ~ CH3COOH(酢酸)
  3. 3. お詫び • デバイス制御分を多めに考えていましたが、 原稿を落としたので一部内容を変更してお送 り致します
  4. 4. 自己紹介 • CH3COOH(酢酸) です • 会計システムと戦っているプログラマ(?) • 1円単位のお金の調整する 簡単なお仕事を毎日終電までしてます • Windows Mobile超可愛いです • WM6.5端末が発売されるのが今から楽しみ です(但し、イーモバイルに限る)
  5. 5. Windows Mobileとは • Windows CEをベースにした 携帯電話とPDA向けのプラットフォーム • 「スマートフォン」と呼ばれる分野の代表格 • 今日はWindows MobileでOpenNETCFから デバイスを制御したりするお話をします
  6. 6. Windows Mobile端末に 搭載されているデバイス • カメラ • GPS • Bluetooth • 赤外線 • 無線LAN • 加速度センサ • バイブレータ
  7. 7. Windows Mobile以外の スマートフォン搭載デバイス • HTC HT-03A(Android) – カメラ、無線LAN、Bluetooth、GPS、加速度センサ • Apple iPhone 3GS – カメラ、無線LAN、Bluetooth、GPS、加速度センサ • 各種端末で大体同じデバイスが載ってる!
  8. 8. Windows Mobileアプリの種類 • ネイティブ(C++) – 特定のCPUやOS向けに作られるアプリ – Windows MobileだとTodayとか • Widget(WM6.5~) – HTMLとJavaScriptで作るアプリ – Windows Mobile 6.5からの新機能 • .NET Compact Framework – .NET Frameworkのサブセット VB.NETやC#で開発が出来ます
  9. 9. .NET Compact Frameworkで サポートされているデバイス • カメラ • GPS • BlueTooth • 赤外線 • 無線LAN • 加速度センサ • バイブレータ
  10. 10. .NET Compact Frameworkからの デバイス制御 • .NET Compact Frameworkで、 未サポートのデバイスを使用するには、 Win32APIをP/Invokeで呼び出します • ここではバイブレータを使用するための サンプルコードをご紹介します
  11. 11. P/Invokeを使った 長~~~いコード(1) • バイブレータを制御するNLed APIを 使うのでP/Invokeの定義を行います Public Class Led <DllImport("coredll.dll", SetLastError:=True)> _ Private Shared Function NLedGetDeviceInfo(ByVal h As UInteger, _ ByRef pOutput As NLED_COUNT_INFO) As Boolean End Function <DllImport("coredll.dll", SetLastError:=True)> _ Private Shared Function NLedSetDevice(ByVal h As UInteger, _ ByRef pOutput As NLED_SETTINGS_INFO) As Boolean End Function Private Const NLED_COUNT_INFO_ID As UInteger = 0 Private Const NLED_SETTINGS_INFO_ID As UInteger = 2
  12. 12. P/Invokeを使った 長~~~いコード(2) • さきほど定義したNled APIに 渡す構造体を定義します Private Structure NLED_SETTINGS_INFO Public LedNum As UInteger Public OffOnBlink As Integer Public TotalCycleTime As Long Public OnTime As Long Public OffTime As Long Public MetaCycleOn As Integer Public MetaCycleOff As Integer End Structure Private Structure NLED_COUNT_INFO Public cLeds As UInteger End Structure
  13. 13. P/Invokeを使った 長~~~いコード (3) Public Shared Function GetLedCount() As Integer Dim info As New NLED_COUNT_INFO() Dim LEDCount As Integer = 0 If NLedGetDeviceInfo(NLED_COUNT_INFO_ID, info) Then LEDCount = CInt(info.cLeds) End If Return LEDCount End Function Public Shared Sub SetLedStatus(ByVal ledID As Integer, _ ByVal status As Integer) Dim info As New NLED_SETTINGS_INFO() With info .LedNum = System.Convert.ToUInt32(ledID) .OffOnBlink = System.Convert.ToUInt16(status) End With NLedSetDevice(NLED_SETTINGS_INFO_ID, info) End Sub End Class
  14. 14. P/Invokeを使った 長~~~いコード (4) • バイブレートさせるための定義が終わったので、 ようやくバイブをさせることが出来ます Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button2.Click ' バイブレーション開始 LedVibrate.SetLedStatus(1, 1) ' 2秒間鳴動させた後、バイブを停止する System.Threading.Thread.Sleep(2000) LedVibrate.SetLedStatus(1, 0) End Sub
  15. 15. OpenNETCFのあるとき • OpenNETCF.orgのSmart Device Frameworkを 使えば、面倒な定義が不要になります • OpenNETCF.WindowsCE.dllを参照し、 バイブさせるサンプルコードを書いてみました。
  16. 16. OpenNETCFを使った 短くシンプルなコード Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click ' バイブレーション開始 Dim led As New OpenNETCF.WindowsCE.Notification.Led() led.SetLedStatus(1, OpenNETCF.WindowsCE.Notification.Led.LedState.On) ' 2秒間鳴動させた後、バイブを停止する System.Threading.Thread.Sleep(2000) led.SetLedStatus(1, OpenNETCF.WindowsCE.Notification.Led.LedState.Off) End Sub • これだけ。
  17. 17. OpenNETCFとは • .NET Compact Frameworkから Windows Mobileを使いやすくする為の SharedSource Licenseのクラスライブラリ
  18. 18. OpenNETCFのライセンス形態 • OpenNETCF Shared Source License を採用しています • ソースコードを自分のアプリに組み込まなけ れば、無料で使うことができます • 自分のアプリに組み込んで使う場合は、ライ センスを購入する必要があります
  19. 19. 他にOpenNETCFで何が出来るの? • 無線機能の有効・無効化 • LEDの点灯・消灯 • Vibraterの振動 • マイクを使って録音 • etc etc…
  20. 20. 無線機能の有効・無効化 • OpenNETCF.WindowsMobile名前空間 • BluetoothRadio クラス – Bluetoothデバイスの制御を行います ‘ Bluetooth端末を有効にする bt.RadioState = OpenNETCF.WindowsMobile.RadioState.On • WiFiRadio クラス – 無線LANデバイスの制御を行います • PhoneRadio クラス – 電話機能の制御を行います
  21. 21. LEDの点灯・消灯 • OpenNETCF.WindowsCE.Notification 名前空間 • Led クラス – LEDの点灯を行ったり、LEDの情報を取得します ‘ ID2のLEDを点灯させます Dim led As New OpenNETCF.WindowsCE.Notification.Led() led.SetLedStatus(2, OpenNETCF.WindowsCE.Notification.Led.LedState.On) – バイブレータに振られているIDを指定することで、 このLEDクラスでもバイブさせる事が出来ます
  22. 22. バイブレータの振動 • OpenNETCF.WindowsMobile名前空間 • Vibrateクラス – バイブレータの制御を行います ' バイブレート開始 OpenNETCF.WindowsMobile.Vibrate.Play() ' バイブレート停止 OpenNETCF.WindowsMobile.Vibrate.Stop()
  23. 23. マイクを使って録音 • OpenNETCF.Media.WaveAudio名前空間 • Recorderクラス – 音声の録音を行います ‘ 録音を開始する audioRecorder = new OpenNETCF.Media.WaveAudio.Recorder() audioRecorder.RecordFor( System.IO.File.OpenWrite(filePath),_ 10000, _ OpenNETCF.Media.WaveAudio.SoundFormats.Stereo16bit44kHz) ' 録音を停止する audioRecorder.Stop()
  24. 24. もっと何か出来ないの? • .NET CFで削られているクラスがある! – FtpWebRequest クラス • OpenNETCF.Net.Ftp 名前空間 – SmtpCredential クラス • OpenNETCF.Net.Mail 名前空間 • 同じく削られたイベントやメソッドも復活! – Combobox2 – Clipboard2 • OpenNETCF.Windows.Forms 名前空間
  25. 25. もっともっと何か出来ないの!? • やっぱり携帯電話だから・・・ • 発着信履歴取得 – Phone クラス • OpenNETCF 名前空間 • RSSを読む処理は案外面倒・・・ – FeedEngine クラスなど • OpenNETCF.Rss 名前空間
  26. 26. デバイスを活用した ソリューションの提案 • GPSを使った営業支援システム – GPSロガーで経路を記録して、 そのまま営業日報として配信 • カメラを使った出張買取サービス – 車の出張買取サービスで査定情報の入力や キズなどを撮影したデータを本部に配信
  27. 27. まとめ デバイスの制御は面倒くさい! .NET CFからのデバイスの制御は もっと面倒くさい!! OpenNETCFを使ってもっと本質の部分に リソースを投入してみては如何でしょうか
  28. 28. 最後に • Windows Mobile CF プログラミング Tips – http://ch3cooh.jp/tips/wm/ – CFのサンプルコードやP/Invokeを使ったデバイ スの操作に関するTipsなどを掲載しています • スマートフォン勉強会 – http://smartphone.techtalk.jp/ – スマートフォン全般の使い方や、アプリケーション の開発手法をみんなで学んでいく勉強会です – 大阪は奇数月、東京では偶数月に開催してます
  29. 29. • ご清聴ありがとうございました

×