« 2010年10月 | トップページ | 2011年3月 »

2010年12月 8日 (水)

EKEN M001 とイーモバイル D02HW

androidでは動かないかもしれないが、CE6だと動くと思われる。

手元に解約済みのD02HWがあるが、
D02hw_2

差し込むと、ディスクが増え、しばらくするとCOM1, COM2 が生成される。

COM1に対して115200bps でオープンするとATコマンド(ATI1等)の応答を返すので、
動く可能性99%, ^ ^;

ドライバは PPPVSP.DLL というファイルであり、3G Modem ドライバらしい。

中身の検証をしてみたく、誰かこのソースを持っていたら、こそっと送って下さい。


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

2010年12月 6日 (月)

Windows CE6で動く PL2303 USBシリアルドライバ

ネットで探すとなぜかソースがある。

PL2303_WinCE_Driver Sourcecode:
http://www.hackchina.com/dlpre.php?lang=en&id=141923

マイクロソフトがサンプルで提供しているUSBSER.DLLをPL2303用として拡張している感じ。

CE6 Platform Builder でビルドしたものをここに置いておきます。

「USBSER_PL2303.zip」をダウンロード

■インストール方法
 ①USBSER.DLLは、Windowsフォルダへコピーしてください。
 ②USBSER.REGは、RegEditでインポートしてください。

■ほんとに、このドライバは大丈夫?

入手元がはっきりしないので、いろいろ調べてみた。

①レジストリと動作の関係

レジストリを調べると、どうやらこのドライバは3種類のドライバ共用になっている。

どうやって3種類の動きを決めているかというと、レジストリの中のDeviceArrayIndexで行っている。

レジストリの中は、以下のようになっており、

            (ベンダーID, プロダクトID)
DeviceArrayIndex = 0 ...(1118,206)
DeviceArrayIndex = 1 ...(1118,121)
DeviceArrayIndex = 2 ...(1659,8963)

USB接続時に所定のベンダーID, プロダクトIDからUSBSER.DLLがロードされて、所定のDeviceArrayIndex の値を拾って処理を分けている。

これらのベンダID, プロダクトIDの値を16進数に変換して調べると

10進数 = 16進数
1118,206 = 0x045e,0xce
1118,121 = 0x045e,0x79
1659,8963 = 0x067b,0x2303

になり、USBデバイス一覧サイト(http://www.linux-usb.org/usb.ids)からみると

ベンダーID = 0x045e、プロダクトID(0xce, 0x79)は、マイクロソフト製の製品
ベンダーID = 0x067b、プロダクトID(0x2303)は、ProlificのPL2303対応の製品

となっている。

CE6 Platform BuilderにあるサンプルソースUSBSER.DLLのレジストリでは、DeviceArrayIndex=0,1になっており、これは、それにDeviceArrayIndex=2を追加した形になっている。従来の仕様も存在し、安心できる仕様になっている。

②コーディングについて

usbdev.cppをみると、CreateSerialObject()の中で

else if (DeviceArrayIndex == 2) {
   pSerialPDD= new UsbPl2303SerialClientDriver(lpActivePath,pMdd, pHwObj);
   if (pSerialPDD && !pSerialPDD->Init()) {
     delete pSerialPDD;
     pSerialPDD = NULL;
   }
}

てな感じで、DeviceArrayIndexの値に応じてそれぞれのクラスを呼び出している。

CE6 Platform BuilderにあるサンプルソースUSBSER.DLLでもこの形をとっており、

①UsbActiveSyncSerialClientDriver()
②UsbSerClientDriver()
③UsbPl2303SerialClientDriver()

と、③のPL2303用(UsbPl2303SerialClientDriver)を追加で定義している。

でこのクラスであるが、

1) コンストラクタ
2) ::Init()
3) ::SetBreak
4) ::Pl2303VendorRead
5) ::Pl2303VendorWrite

の記述が行われており、4)::Pl2303VendorRead 5) ::Pl2303VendorWriteは、::Init()の中でしか呼び出していないため、他のドライバとの違いは、SetBreak()だけという感じ。

また、よくソースをみると ::Init()の中で

if(lpTargetUsbDevice->Descriptor.bDeviceClass == 0x02)
 m_dwHwType = PL2303_TYPE_0;
else if(lpTargetUsbDevice->Descriptor.bMaxPacketSize0 == 0x40)
 m_dwHwType = PL2303_TYPE_HX;
else if((lpTargetUsbDevice->Descriptor.bDeviceClass == 0x00) || (lpTargetUsbDevice->Descriptor.bDeviceClass == 0xFF))
 m_dwHwType = PL2303_TYPE_1;

となっており、Linuxのpl2303.cとロジックが酷似している。かなり大丈夫なドライバではないかと思う。

※メモ
・2010/12/10 カーネルモードかユーザーモードか指定していなかったので修正しました。

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

CE6 で iPhoneToday

WindowsMobileで著名なiPhoneTodayですが、CE6でも動くものがありました。

ダウンロードは、ここ

iPhoneToday-1.5.4-pnd.zipを解凍して、iPhoneToday.exeを実行すると、こんな感じになります。

きちんと800x480に調整してくれています。ありがたい。
Iphonetoday


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

2010年12月 4日 (土)

EKEN M002 で CE

どうやらEKEN M001 、M002、M003では同じCEファームウェアで動くらしい。

というわけで、M001に引き続き、M002を購入してみた。

使用したCEファームウェアは、SLATEROIDの[WinCE] Hopelessness Edition v0.4
URLは、ここ

これは、今までのCEと比べ
・スクロールバーが太い
・SIPが増えている
とても、使いやすくなっている。その上、前回同様に、
・TCPMP
・WinRar
・Youtube
も入っているし、WiFiも使える。M001用に作成したUSBホストケーブルでマウスやキーボード、GPSやPHSも使えてます。

最近 M002の後継機種でカメラ内臓のM002Sが出ているが、もともと用意されてあった30pinコネクタ内のUSBホスト側の配線が内臓カメラへ接続されているようである。つまり30pinコネクタのUSBホスト機能は、E002Sでは使えなくなっている模様。要注意。


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

« 2010年10月 | トップページ | 2011年3月 »