2016.04.04

備忘録:BT-W85開発について(その3)

2.アプリ開発(続き)
次に必要な設定は参照設定である。フツーにC#でアプリ開発する場合にも使う機能なので詳細は省くが、以下のコンポーネントを追加する。


・[.NET]タブ
 ①Microsoft.Windowsce.Forms

・[参照]タブ
 ①btLibDefNet.dll
 ②btScanLibNet.dll
 ③btSysLibNet.dll
 ※これらDLLは「%ProgramFiles%\Windows CE Tools\SDKs\BT-W SDK-HT\Lib\ARMv4I」フォルダ配下に配置されているハズ(BT-W_SDK-HT.msiをフツーにセットアップした場合)。
 ※③は要らないかもしれない。
 ※よくわからかったら全DLL追加してもOKかもしれない。


これでプログラム作る環境としては万全(なハズ)。


Microsoft.Windowsce.Formsを追加したのは何気に重要で、何らかスキャンされたイベントを拾う為のMessageWindowクラスを使うためだ。
通常の.NET Frameworkの場合はFormクラス内にWndProc()を持っているのだが、Compact Editionは持ってないのだったりする。代わりにMessageWindowクラス内のWndProc()を使わないといけないのだ。
もちろんこの機能を使わなくても「(TextBoxコンポーネントの)キャレット位置に読み込む」や「クリップボードに読み込む」機能がBT-W85には存在するのだが、ちゃんとしたアプリ開発には「つかえねー」なのは容易に想像できるハズである。
具体的には、こんなクラスを一発書く(エラー処理は省略している)。


public class ScanEventArgs : EventArgs
{
    private UInt16 codeSym = 0:
    private String codeStr = "";


    //上記メンバ変数をgetするプロパティの記述は省略する


    public ScanEventArgs()
    {
        int scanNum = Bt.ScanLib.Control.btScanGetResultCount();
        uint codeIdx = (uint)(scanNum - 1);    // 複数スキャンされてたら最後の使う
        int codeLen = Bt.ScanLib.Control.btScanGetDataSize(codeIdx);
        Byte[] codeBuf = new Byte[codeLen];
        Bt.ScanLib.Control.btScanGetString(codeBuf, ref codeSym);
        codeStr = System.Text.Encoding.GetEncoding(932).GetString(codeBuf, 0, codeLen);
    }
}


public delegate void ScanEventHandler(object sender, ScanEventArgs e);


public class ScanWatcher : Microsoft.WindowsCE.Forms.MessageWindow
{
    public event ScanEventHandler OnScan;


    public ScanWatcher()
    {
    }


    protected override void WndProc(ref Microsoft.WindowsCE.Forms.Message msg)
    {
        switch (msg.Msg)
        {
            case (Int32)Bt.LibDef.WM_BT_SCAN:
                if (msg.WParam.ToInt32() == (Int32)Bt.LibDef.BTMSG_WPARAM.WP_SCN_SUCCESS && OnScan != null)
                {
                    OnScan(this, new ScanEventArgs());
                }
                break;
        }
        base.WndProc(ref msg);
    }
}


使い方は解るよね?

| | コメント (0) | トラックバック (0)

備忘録:BT-W85開発について(その2)

2.アプリ開発
という事でVS2k8を起動する。前回もチラッと書いたが、開発言語はC#を想定している。
起動したらいつも通りにプロジェクトを新規作成する。


①「新しいプロジェクト」ダイアログの[プロジェクトの種類(P):」から[Visual C#]ノードの[スマート デバイス]を選択する。
②[テンプレート(T):]から[Smart Device プロジェクト]を選択
③プロジェクト名やソリューション名は(いつも通りに)適当に
④[OK]ボタン押下
⑤「新規スマート デバイス プロジェクトの追加」画面で以下の通りに
 ・ターゲットプラットフォームは「Windows CE」
 ・.NET云々は「.NET Compact Framework Version 3.5」
 ・テンプレートは「デバイス アプリケーション」(もちろん実際は作りたいモノに合わせて選択する)
⑥[OK]ボタン押下


ここでのっぺらぼうのWindowsフォームが自動作成されるが、これがまたサイズが640×480だったりしてBT-W85とは乖離しまくりなのである。この辺りは後で説明する(フォームプロパティからQVGAサイズに変更しても開き直すとVGAサイズに強制されてしまう)。


さてVS2k8ツールバーを見ると「Pocket PC 2003 SE エミュレータ」などとなっているので、ここから「BT-W SDK-HT ARMV7 Device」を選択しよう。選択したら隣のPDAっぽいアイコンをクリックする。
「接続中…」ダイアログが表示されて、そのうち「接続に成功しました。」と表示されたら[閉じる]ボタンを押下して画面を閉じよう。


ここで何らかエラーが出た場合は、色々と設定を見直さないといけない。正直、色々やったのでどう設定するのが正解かわからない(笑)。


まず、BT-W85をクレイドルに置いて電源OKした時に(電源ONしてからクレイドルに置いても良い)、「Windows Mobile デバイス センター」が起動しただろうか?
これが起動しない場合はVS2k8からも繋がらない。俺も当初は起動しなかったが、1日置いたら起動した。要は開発PCもBT-W85も再起動すれば良いと思われる。


それでもダメならUSBドライバの更新や「Windows Mobile デバイス センター」の再インストール等試行錯誤して欲しい。以降錯誤して1日経ったら繋がったという体たらくなので、何か正解かわからない。


次にVS2k8上の設定である。先ほどの「PDAっぽいアイコン」のさらに隣(右隣)にダイアログに矢印が付いたようなアイコンがあるのでクリックする。
「オプション」ダイアログが[デバイス]ノード選択状態で起動するはずだ。
ここで[デバイスを表示するプラットフォーム(H):]で「BT-W SDK-HT」を選択する。自動的に下の[デバイス(V):]も「BT-W SDK-HT ARMV7 Device」も選択されるハズだ(選択されてなかったら選択する)。
ここで[プロパティ(P)...]ボタンを押下。表示される画面上の設定が下記と異なっていたら修正する。


・トランスポートは「TCP 接続トランスポート」
 →さらに[構成(C)...]から
 ・固定ポート番号を使用するチェックボックスはOFF
 ・デバイスIPアドレスは「ActiveSync云々」側を選択
・ブートストラップは「ActiveSync云々」選択(他の選択肢がそもそも無い)


ここで[OK]しても良いのだが、ついでにフォームファクタの設定もしよう。画面を開いた時に初期選択されていた[デバイス]ノードの下に[フォーム ファクタ]ノードがあるので選択する。
[プラットフォームのフォーム ファクタを表示する(H):」は「Windows CE」になっていると思うが、なってなかったら選択を切り替える。
下の[フォーム ファクタ(F):」は「WebPad」が選択されていると思うので、隣の[名前を付けて保存(S)...]ボタンを押下する。ここで名前は「BT-W85」とする。
リストに「BT-W85」が追加されるので選択し、隣の[プロパティ(P)...]ボタンを押下する。
表示される「BT-W85 のプロパティ」の[スキンの規定値]で画面の幅や高さのピクセル値がVGAな値になっているので、これをQVGA且つ縦画面にする(つまり幅240×高さ320ピクセル)。
[規定のフォーム ファクタ(E):]も「BT-W85」にしておこう。
※高さに関してはタスクバーの高さ(標準で26ピクセル)を引いた値の方が使い勝手が良いかもしれない。


フォームデザイナに戻ると、そこにはVGAサイズのフォームが表示されていると思うが、プロパティの「FormFactor」を「WebPad」から「BT-W85」に変えてみよう。
まあ、変化は無いのだけど、ここでプロパティの「WindowState」を「Maximized」に変更して欲しい。QVGAサイズに変わったハズだ。
これが「FormFactor」が「WebPad」のままだとQVGAサイズに直してもVGAサイズに戻されるのだ。

| | コメント (0) | トラックバック (0)

備忘録:BT-W85開発について(その1)

仕事先でKEYENCE製のハンディスキャナ(バーコードとかQRコードとか読むヤツ)、具体的にはBT-W85向けのアプリ開発について調べていたのだが、とにかく資料が無い。
KEYENCE社の開発者向け情報サイトはあるにはある(要ユーザ登録)んだけど「コレ」っていうダイレクトな情報にたどり着くのが困難だったり…。


という事で、これまで調べた部分について備忘録的に書いておこうかと思う。
本当はスクリーンショットとか撮って書きたい所だが、仕事PCは色々と制限がある環境なのでアレでソレ。


1.セットアップ
開発環境としてはOSはWindows7(32bit)&VisualStudio2008(以降VS2k8)を使った。VS2k8はServicePack1をあてておく事が推奨されている。あと、「Windows Embedded Compact7 ATL Update for Visual Studio 2008 SP1」も必要らしいが、C++で開発しないなら要らないかもしれない(俺はC#でアプリ開発している)。


Microsoft Visual Studio 2008 Service Pack 1 (インストーラ)
Windows Embedded Compact7 ATL Update for Visual Studio 2008 SP1


あと、BT-W85をUSBクレイドル経由で開発PCに繋ぐ場合には「Windows Mobile デバイス センター」も必要だ。これは以前ActiveSyncと呼ばれていたアレで、VS2k8上でもそこかしこにActiveSyncというキーワードが登場するが、全てコレの事だと思えば良い。


Windows Vista 用 Windows Mobile デバイス センター 6.1 (32 ビット)
※Vista用と書かれているが、Vista以降のOS向けは無いっぽいのでこれでいいのだ。


ここまではMicrosoft製でインストールが必要なもので、次はKEYENCE製。


KEYENCEからはハンディスキャナと一緒に「BT-W Series Program Development Kit BT-WHD1」という開発ツール的な何かも購入する必要がある。これまた説明書らしい説明書は無いのである。
とりあえず、そのCD-ROM内の以下msiファイルおよびフォルダ配下のsetup.exeを実行しておけば良いだろう(が良くわからないので全部インストールした)。


・BT-W_SDK-HT.msi
・BTWRemoteController


USBクレイドル経由で開発PCとBT-W85を繋ぐとドライバのインストールが始まるが、だいたいは「不明なデバイス」となってしまう。
その時にデバイスマネージャ経由でドライバを手動でインストールする事になるが、その時に指定するフォルダもこのCD-ROMの「USB Driver」または「USB Driver(v3.000_or_earlier)」だ。
どっちが良いのか不明だが、後者は未署名状態であったりしたので前者でインストールした。


さて、ドライバをインストールすると開発PCのネットワークインタフェースが追加されるかもしれない。
これはBT-W85側で「USB通信ユニット」の設定が「TCP/IP」になってるとか何かだ(よく調べていない)。
また、クレイドルが物理LAN付きな場合は「LAN通信ユニット」に設定されているかもしれない。


それらの場合の環境セットアップについては探求していないので、BT-W85側の設定を以下の手順で変更して欲しい。


①BT-W85上のスタートメニューから[プログラム(P)]-[BTシステムメニュー]を起動
②「2.通信設定」を選択(「2.通信設定」メニューに遷移)
③「3.通信ユニット」を選択(「23.通信ユニット」メニューに遷移)
④「1.接続」を選択(「231.接続」に遷移)
⑤[USB通信ユニット]ラジオボタンを選択
⑥[接続タイプ]プルダウンリストから「ActiveSync」を選択
⑦[OK]ボタン押下
⑧[戻る]→[戻る]→[終了]とボタンを押下
⑨終了確認ダイアログで[メニュー終了]ボタン押下
 ※俺は心配なので[再起動]ボタンを押下するが、隣の席の若者曰く[メニュー終了]でOKっすよ~らしい


ここでドライバの再インストールが発生するかもしれない(忘れた)。


ここまでで事前の設定は完了のハズ!

| | コメント (0) | トラックバック (0)

2015.07.13

思い出

久しぶりにブログ書くが、それは任天堂の岩田社長が他界されたからでは無い(それに関してはツイッターで書いた)。


では何かと言うと、今日の仕事の帰りがけに「NNKさんPower Chuteのパスワードがどこに格納されてるか知らないっすかねー? パスワード忘れちゃったんすよー」みたいな会話があった。
それに関しては「レジストリ辺りに格納されてると思うけど、平文じゃないやろ。ハッシュ値だと思うで」と答えておいた。


いや、そんな事はどうでも良い。


Power Chuteが何かと言う話。


無停電電源装置ってもんが此の世ににはあって、UPSとも呼ぶ。要はAC100Vとか出力できる充電池である。それをAC電源とコンピューター等の機器の間に挟んでおけば、急な停電でも安心という話である。


ただ、充電池なので永久に電力供給できるハズもなく、それが止まる前にUPSからコンピューターに「停電したから安全に停止したまえ」とか教えてくれるのである。
そういうUPSからの通知をコンピューター側で処理するソフトのひとつがPower Chuteで、UPSでは超メジャーなメーカーのAPC製UPS向けのものである。


ここまでは前置き。

» 続きを読む

| | コメント (2) | トラックバック (0)

2013.08.08

ゲーム機

PS4もXboxOneもPCなアーキテクチャで萌えない。


なので、PCをゲーム遊べるスペックにした。
ベースのPCに対してPS4とXboxOne買う金より少ない金額投資で済んでいる。


んで、アカウントだけ作って放置だったSteamでFallout3とFallout;NVが$5くらいで安売りしてたので買った。
やはり、PC版という事でMODは入れないとね!

Xbox360日本語版ではカットされたクエストも遊べて満足である。

| | コメント (0) | トラックバック (0)

2013.02.26

ゴスメ

先週末の事であるが、映画「花の詩女 ゴティックメード」を観てきた。
勘違いしていて、去年の公開が先行限定で今月から一般公開だと思っていた。
実際には今月のはオマケの追加的な感じだろうか、とにかく上映期間も短めだったようだ。
つまり、ツイッターで「今日までよ(22日時点)」と知ったワケである。

という事で、仕事サボって行って来た。

» 続きを読む

| | コメント (0) | トラックバック (0)

2013.02.04

いろいろおかしい

PC組み立ての話。


ネットみてたら、いちばん安っすいCPU(せれろん)とマザーボード併せて買っても一万いかないそうで、年に1回くらいしか使わないデスクトップPCの中身入れ替えする事にした。

というのも、俺のノートPCをウチのカミサンが優先的に使うって事で、俺用のWindows端末が無くなったのだった。

で、CPUとマザーボードとメモリ16GBでだいたい15,000円。
そこにOS(Windows8 Professional)買って30,000円。

OS高い!


家に帰って組み立てて気付いたんだが、最近のマザーボードってIDEのインタフェース無いのね。
なのでUSBメモリでインストーラ作って対処。

ここで64bit版インストールUSBメモリは64bit版OSからしか作れないというトラップにハマった。
長女のPCが64bit版だったのでセーフ。


そのまま数日使っていたのだが、CDやDVDのメディア使えないのは不便だし、USBポートが背面にしかないのも不便なので、下記のアイテムをゲットしようと店に行った。
①SATA→IDE変換する何か
②フロントベイにUSBポート追加する何か


まず①。
そういう製品は売っていたが、値段が2,500円ほど。
そして、新品のBDドライブ(CDとDVDに関してはライティングもできる)も2,500円ほど。

…後者を買うやろ普通。

次に②。
売っていたのはUSBポート以外に各種SDメモリだのメモリスティックだのCFが読めて、さらにFDDまで付いてる豪華なモノだった。
なので、値段は5,000円弱。
そして、新品の筐体が5,000円強。

…後者を買うやろ普通。


結局、元のPCからの流用は、電源とHDDだけという事に。


ちなみに元のPCは、CPUがAthlon 64 X2 5000+ に、メモリ1GBでOSがVista64bitだった。
使った感じの速度差は感じないw

| | コメント (0) | トラックバック (0)

2013.01.01

夢日記(初夢?)

初夢になるのか? 13時くらいに寝て、いま起きた。


夢の冒頭、夢の中の俺は夢をみている。
そして、それは以前みた夢の続きである事に気づく。
(夢の中の俺の感情であって、俺自身はその夢を見ていない)
そう、その夢の中では何らかのミッションが継続中であり、ガラス越しに見える隣の部屋では、カーリーヘアーの西洋人がカプセルに閉じ込められていた。
同じ部屋には、その閉じ込められている彼のペットであるブルドッグが、ソファの一角を、まるで自分の巣の様にして佇んでいた。
このブルドックは前回の、夢の中の俺の夢の中でミッションとして救出した(と、夢の中の俺が思い出す)。
ただし、それと引き換えにカーリーの彼は閉じ込められてしまったのである。
隣部屋のカプセルに近づくと、彼はその覗き窓に悲壮感を漂わせた表情を貼付けた。
声は聞こえないが、助けを求めているのは解る。
眉毛の下がり方が尋常でないな、と思った。
「…さて、どうしたものか」
そう呟きながら、カプセルの左側にあるルネッサンス風の食器棚(ティーカップ等が納められている)を眺めた。
ちなみに部屋の作り、家具などは白いルネッサンス風で統一されており、唯一ソファーのみがグレーで現代風。しかしそれは、ブルドッグが巣にしていたため荒れ放題である。
つまり、夢の中の俺の夢の中で、前回から数日以上のレベルで日が経っているという事だ。
カーリーな彼は、どうやって生きていたのだろうかと、夢の中の俺は思った。
同時に俺は「夢だしな」と思う、メタな状況である。
そんなメタな事をしてしまった所為か、夢の中の俺は目覚める。
目覚めた場所は、夢の中の俺が生業としている事のスポンサーの家だった。
近くには相棒の女性が居て「あら、起きたのね」という顔で俺を見ていた。
…つまり、相棒が必要な仕事をしているらしい。
それは、裸同然の恰好で部屋に入ってきたスポンサーの女性が、高圧的に「あの件はどうなっているのよ」と夢の中の俺に言い放った事で、探偵的な何かである感じである。
そしてスポンサーは「あなたには期待しているのよ…」と夢の中の俺の耳に囁き、そしてディープキスをした。股間も揉まれている。
股間が勃起してきたのを感じ、そのキスを剥がした。
「チンコが勃ってきたんで、そこらへんにしといてもらえませんか…」
スポンサーは物足りなそうな目で言った。
「ふん…まあ、いいわ。ウチで食事でもしてってちょうだい」
そして部屋を出て行った。
それを見送って相棒を見ると、思いっきり軽蔑を感じる表情だった。
「タバコをやる女とのキスってのは、どうにも嫌なもんだね」
そう言って肩をすくめてみた。
それで誤摩化した気になっている夢の中の俺であった。

部屋を出て、食事を頂くためにダイニングキッチンに向かった。
ダイニングキッチンは、ちょっとした居酒屋のカウンター風になっている。
ただし内装はタイル張りであり、厨房の中に居る気分でもある。
白いタイルの所々にブルーのタイルが張られており、それがアクセントになっていた。
それとは別に、何やら文字の書かれたタイルも所々に張られている。
その中の一つを夢の中の俺は見る。
それにはこう書かれている。
「NNK:2012年以降の住所等情報はFacebookを参照の事。」
この家は夢の中の設定では、元々H先輩が住んでいた家で、建てた時に夢の中の俺たち後輩友人知人らのメッセージプレートをダイニングキッチンの壁に埋め込んだのだ。
H先輩はこの家を売却し、その後に入ったのがスポンサー女性という事である。
ダイニングキッチンの置物として(夢の中の)H先輩が描いたイラストが残されている。
それは(夢の中の)H先輩のペット犬「ポコ」を題材にしたシリーズとなっている。
それぞれ「ポコと何々」みたいなタイトルと、ちょっとしたエピソードが書かれている。
「これ、良いですよね。僕、好きなんです」
ダイニングキッチンのスタッフをしている若い男が言った。
「これ描かれた方とお知り合いなんですよね? ポコってどんな犬でした?」
続けて訊かれた。
「ポコってのはネット上のハンドルであって、本当の名前は違ったんだ。いや、今でも生きてるよ。元気だ。え? 本当の名前? んー、俺もずっとポコって呼んでたからな…うーん」
俺は「それはラルフだ」と念じた。
もちろんリアルの世界でH先輩が犬飼ってるかなんて知らないし、そもそも10年以上連絡とってない。
どこからラルフが出てきたか不明。
しかし、それが通じたのか、夢の中の俺は「あー、ラルフだ。うん、ラルフ」と応えた。
「へぇー。良い名前ですね」
スタッフが関心していると、ケータイ(リアルな俺に合わせてiPhone5だった)が鳴った。
「悪い。電話だ」
俺は場所を移した。

スポンサー宅の裏口から外に出ると、駅商店街の通り道である。
人通りは多くなく、それを確認して電話に出た。
電話の相手は高校生くらいの感じで3人くらいの男女で、代わる代わる電話に出る。
が、言っている事が要領を得ない。
「あたしー、○○のトコ、行きたくてぇー」
「○○ってのは場所か? 人か?」
会話していてイラつく。
通りに水槽があって、何となくそれを眺めた。
水槽の中では、指輪をくわえたカラスが大きなフナと格闘していた。
(なんだこれは)
驚いていると、いつのまにか電話の相手は別の女子に変わっていた。
そしてこう言うのである。
「おじさん、強姦した事ある? 強姦してほしいんだ。強姦」
「はぁぁ?」

シーンが急に変わり、廃墟に倒れている少女の俯瞰映像になった所で目が醒めた。

| | コメント (0) | トラックバック (0)

あけおめ

ことよろ。

iPadのアプリから投稿しようとしたら落ちるし!!!

| | コメント (3) | トラックバック (0)

2012.07.22

ぶらんにゅー

すっかり年1曲くらいしか曲作らなくなってますが、5月頭にその1曲作ったですよ。
今回はボーカル曲にチャレンジしてみようって事でウチのカミサンに作詞頼んだですよ。


…2ヶ月以上経ってもできる気配なし。

とりあえず、インスト版


今回はいつものWindowsでCakewalkでなく、やっと、その後継ソフトであるSONAR X1を使ってみた。
しかし、上記のインスト版はさらに、Mac OS XのGrageBandで仕上げた感じ。
つーか、直してるウチのにワケわからんくなってきて、もう、よーわからん。


Windows+SONAR X1+MIDI音源版はこんな感じ
それをGarageBandにインポートしてちょっと弄ったのがこんな感じ。(M4A形式なんで鳴らないかも)

| | コメント (0) | トラックバック (0)

«夢日記