スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    【WindowsMobile】【C#】バイブレータ制御

    久々の更新です。
    最近はWindowsMobile3.5な日々です。
    あるタイミングでWindowsMobile携帯をぶるぶるさせたくなったので調べました。
    バイブレータの制御の仕方。
    
            [DllImport("coredll.dll", SetLastError = true)]
            private static extern bool NLedGetDeviceInfo(uint h, ref NLED_SETTINGS_INFO pOutput);
            [DllImport("coredll.dll", SetLastError = true)]
            private static extern bool NLedSetDevice(uint h, ref NLED_SETTINGS_INFO pOutput);
    
            private struct NLED_SETTINGS_INFO
            {
                public uint LedNum;
                public int OffOnBlink;
                public long TotalCycleTime;
                public long OnTime;
                public long OffTime;
                public int MetaCycleOn;
                public int MetaCycleOff;
            }
    
            private const uint NLED_SETTINGS_INFO_ID = 2;
    
            private static void StartVibration()
            {
                NLED_SETTINGS_INFO ledSetting = new NLED_SETTINGS_INFO();
                ledSetting.LedNum = 1; // LED 1番 = バイブレータ
                ledSetting.OffOnBlink = 1; // 振動開始
                NLedSetDevice(NLED_SETTINGS_INFO_ID, ref ledSetting);
            }
    
            private static void StopVibration()
            {
                NLED_SETTINGS_INFO ledSetting = new NLED_SETTINGS_INFO();
                ledSetting.LedNum = 1; // LED 1番 = バイブレータ
                ledSetting.OffOnBlink = 0; // 振動終了
                NLedSetDevice(NLED_SETTINGS_INFO_ID, ref ledSetting);
            }
    

    OffOnBlinkが1で振動開始、0で振動終了のようです。
    今回はぶるぶるっとしてほしいだけなので、
            public static void DoVibration(int millisecondsTimeout)
            {
                StartVibration();
    
                System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(() =>
                {
                    System.Threading.Thread.Sleep(millisecondsTimeout);
                    StopVibration();
                }));
                thread.Start();
            }
    
    こんな感じで、指定時間後に止めるようにしました。
    (なんか、時間を500mSecくらいにセットすると、近い間隔でDoVibrationした場合、止まってくれない・・・。
     ま、そこは時間を調節してクリアってことで・・・)
    スポンサーサイト

    テーマ : プログラミング
    ジャンル : コンピュータ

    プロフィール

    ざっち

    Author:ざっち
    ざっちのーと
    ♪自由なSEのメモ帳です♪

    ざっちのスキル一覧
    ----------------
    上級(手足も同然!)
    ・.net FrameWork
    ・C#
    ・SqlServer
    ・VisualBasic6.0
    ----------------
    中級(だいたいOK!)
    ・WPF(XAML)
    ・Android
    ・WindowsMobile6.5
    ・HTML
    ----------------
    下級(や、やればできるさ!)
    ・PHP
    ・JavaScript
    ・SilverLight
    ・SQLite
    ・Python(だってjetCreaterが・・・)
    ・C++(OpenCVいじってみたくて・・・)
    ----------------
    最近のお気に入り
    ・WPF(XAML)
    ・Android
    ・GoogleAPI
    ----------------

    最近の記事
    月別アーカイブ
    カテゴリー
    夢見る羊さん
    地球の名言Ⅱ

    presented by 地球の名言

    Twitter...A

    Twitter < > Reload

    ブロとも申請フォーム

    この人とブロともになる

    ブログ内検索
    RSSフィード
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。