2011.06.10 Friday

CASIO DX-7 でのシステム開発



思わぬ事から某社の開発は 「CASIO DX-7」で行うこととなった。
ハンディのほとんどの端末が、その重さ故に「却下」となったわ
けです。

そして、お客さんが選んだのがこの DX-7。 どうやらお客さんの
別のシステムでもこの機種を使ったことがあるらしく、信頼性と
というより使用実績と「カシオ」というブランドが強かったみた
いですね。

ともあれ DX-7での開発は初めてなので慣れないことが多かったが
同じWindowsCE機ということで以前使っていたプログラムはそのま
ま動いた。

でドライバーや開発ツールをインストールしてよく見るとエミュレーター
まで付いているではないか!!これはいい!以前一番苦労した
のはエミュレーターが付いてないので実機でのテストと、あとは
EXEをそのまま動かせば動くので(なぜか?)それでテストを進める
ことができた。

※ただし、EXEを動かすときはブレイクポイントなどでのデバッグは
 出来なかった。

DX-7 なかなか良い感じである、、、気に入りました。
ちょっと良いところと悪いところをまとめておきます。

・良いところ

 軽い
 カッコいい
 開発しやすい

・悪いところ

 遅い
 ファンクションキーが押しにくい
 タッチパネルが無い(設定するのに大変 汗)

と言ったところでしょうか。

2010.10.12 Tuesday

Windows Mobileの電源をオフにする

 Windows MobileやCE機などを使っているとバッテリーの
減り具合に気を配らないといけません。

WindowsCEなどではある分数使っていなければ自動で電源オフ
する機能がありますが、ハンディ端末などではその最大が5分しか
ありません。

これでは例えば荷物の整理をしている間や数を数えている間に電源
がオフになってしまう可能性があり毎回電源を入れ直す必要が出て
きます。

また一度電源がオフされるとネットワークのコネクションが切断さ
れることになり、再度立ち上げ直すとネットワークのリカバリをせね
ばならず、これまたプログラム的には面倒なことになります。

よって自動で電源オフする機能は「使えない」ということになります。

でもやはり電源をつけっぱなしではバッテリーは何時間後にはなく
なり、予備バッテリーすら無くなれば、プログラムのインストール
をし直さなければならない状況になったりします。

こうならないためにも何らかのタイミングでプログラム側から電源
をオフする必要がある。
たとえばメニュー画面で10分間どこへも飛ばなかったら電源をオフ
するというような仕組みが良いかと思われる。

以下のサイトを参照しました。


----------------  上記サイトからの抜粋 ------------------------------------

using System.Runtime.InteropServices;  
    
private readonly byte VK_OFF = 0xdf;
private readonly byte KEYEVENTF_KEYUP = 0x2;
    
[DllImport("coredll.dll", SetLastError = true)]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
    
private void Button1_Click(System.Object sender, System.EventArgs e)
{
keybd_event(VK_OFF, 0, 0, 0);
keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
}

----------------  ここまで ----------------------------------------------------

Compact framework でもDllを呼んじゃうんですねぇ、、



2010.07.07 Wednesday

TcpClientのConnectが遅い

 ずっと分からなかったのですが、昨日やっと分かりました。。

WindowsCE端末(ハンディ端末)からTcpClientを使って
接続しに行こうとすると非常に遅かった(約1分かかる)の
です。

PC同士だと同じメソッドを使ってもすぐにつながるのに、
WindowsCE機からだと遅いのでした。
そのコードは以下の様な物でした。

// クライアントのソケットを用意
TcpClient client = new TcpClient();
               
client.Connect(”192.168.0.20”, 9901);

このConnectのところで時間がかかるんですね。
そこでConnectには3つの引数違いのメソッドがありその中
のIPAddress という変数を使う方法に変更してみた

// クライアントのソケットを用意
TcpClient client = new TcpClient();
                
IPAddress IP = IPAddress.Parse(”192.168.0.20”);
                
client.Connect(IP, 9901);

これに変えるとめちゃくちゃ速くなったのでした。
ということは従来の方法では「”192.168.0.20”」を
ホスト名と解釈して探しに行くのに時間がかかっていた、
と言うことなんでしょうね。。




2010.04.30 Friday

.NET Framework 2.0 のライブラリーオプション

WindowsCE 用の .NET Framework 2.0 のライブラリーを
作っているとどうもおかしいことに気づく。

・EXEをリビルドすると余計なDLLまでくっついてくる。。

・WindowsCE用のライブラリーなのにどうもWindows用の
 ライブラリーでコンパイルチェックされている模様・・・。

この2点がずっと気になっていたのだが、いざ実機でテストを
すると上手く動かないことが判明

O/S:WindowsCE5.0
.NET:Framework Ver2.0

いろいろ設定をいじったのだが変わらず・・・。

そこでFirebirdのDLLを作ったときのバッチファイルを見て
ライブラリーの参照パスに以下のパスを追加してみる。

c:¥Program Files¥Microsoft.NET¥SDK¥CompactFramework¥v2.0¥WindowsCE¥

すると、余計なDLLは消えてくれて希望通りの動きをしてく
れました。。


2010.04.22 Thursday

TCP/IPの通信がエラー???

WindowsCE5.0が載っているハンディターミナルを使って開発を
行っている。

「開発は簡単!!」

と思っていたのだが、テストプログラムを作っているとなかなか
うまくいかないことが出てきた。
まずは Firebirdの .NET 用Providorがあったのでそのまま動くか
と思ってテストプログラムを作ってやってみたが動かず。

いろいろ調べてみるとどうもこのDLLは .NET Framework3.5用
のようである。
WindowsCE5.0に載っているFrameworkは2.0なので動くわけ
無いのですな、、、

どうやったら動くかというとソースを持ってきてコンパイルする
しかないらしい。しかしこれがまたやっかい・・・
いろんなバージョンが有るのだが、最新のバージョンでやるとコ
ンパイルエラーが出まくって断念。。

SourceForge.net に NET Provider 2.1.0 があったのでこれで
なんとかコンパイルを通し、2.0用のDLLができた。

で、いざ動かしてみると今度は FirebirdへのConnectの部分で
通信エラーになる。
設定をいろいろ変更してもダメだし、バージョンを変えてもダメ。

ここで考えたのは
・WindowsCEの設定が悪い
・Firebird Providorの設定が悪い
・サーバー側の設定が悪い
・無線のアクセスポイントの設定が悪い
などでしたが、いづれも違うようでした。

困り切って通信だけする小さいプログラムを作ってやってみた。
するとTCP/IPのConnectはすんなりいった。

この違いは何?

と思い調べてみると通信のクラスが違っていた

Providor側のソースはSystem.Net.SocketsのSocketクラスを使って
Connect
していたのですが、テストはSystem.Net.SocketsのTcpClient
クラス
を使ってやっていました。

つまりソースをSystem.Net.SocketsのTcpClientを使って接続する形
変えるといけるようになりました。

よく分かりませんがmemoということで、、

Calendar
    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>
**
会社概要
profilephoto
大阪のソフトウェア開発会社です。 主に物流関係やゴルフ場のソフトを作っています。 http://www.kabel.jp
Facebookページ
Selected Entries
Categories
Archives
Recent Comment
Recent Trackback
Links
Profile
Search this site.
Others
Mobile
qrcode
Powered by
30days Album
無料ブログ作成サービス JUGEM