Windows Mobile 用の GPS 地図 - Part 7 - ツールアップデート ― 2011/03/21 00:00
ReagGPS.exe をアップデートしました。
http://www.ne.jp/asahi/net/pockey/program/readgps_1.4.0.zip
Bluetooth 接続の GPS では何ら問題なく動いていたのですが、Omnia II 内蔵の GPS を使ってしばらくすると、ハングアップすることに気づき、約一ヶ月かかって問題を見つけました。
Windows Mobile がサスペンドするときに、ファイルシステムへのアクセスを行うとそこでフリーズするのですね。そのファイルシステムが、内部フラッシュなのか、microSD フラッシュ上なのか、また FreeOTFE で作った仮想ボリュームで構成されているのかなどの依存性はあるようですが。
Windows CE 特有の電源 state のメッセージを別途取得するため、もう一つ thread を起動して、サスペンド移行前にログ出力を止め、復帰後に再開する処置をしました。
本件で、すごく参考になった情報のリンクを記しておきます。
http://forum.xda-developers.com/showthread.php?t=379366
http://forum.xda-developers.com/showpost.php?p=2414537&postcount=10
http://www.ne.jp/asahi/net/pockey/program/readgps_1.4.0.zip
Bluetooth 接続の GPS では何ら問題なく動いていたのですが、Omnia II 内蔵の GPS を使ってしばらくすると、ハングアップすることに気づき、約一ヶ月かかって問題を見つけました。
Windows Mobile がサスペンドするときに、ファイルシステムへのアクセスを行うとそこでフリーズするのですね。そのファイルシステムが、内部フラッシュなのか、microSD フラッシュ上なのか、また FreeOTFE で作った仮想ボリュームで構成されているのかなどの依存性はあるようですが。
Windows CE 特有の電源 state のメッセージを別途取得するため、もう一つ thread を起動して、サスペンド移行前にログ出力を止め、復帰後に再開する処置をしました。
本件で、すごく参考になった情報のリンクを記しておきます。
http://forum.xda-developers.com/showthread.php?t=379366
http://forum.xda-developers.com/showpost.php?p=2414537&postcount=10
Bluetooth ActiveSync を自動切断したい ― 2011/03/21 01:00
Bluetooth で ActiveSync すると、ずっとつながっているのと、ActiveSync が Windows Mobile をサスペンドさせないので、電池の減りが早くて、半日放っておくと電池残量が半分になっている! なんてことがたびたびです。
この対策をしようと、Mortscript を利用して、ActiveSync が idle の状態なら Bluetooth ActiveSync 接続(以下 BTAS) を自動的に切り、また一定期間後に BTAS 接続をしようと組んでみましたが、BTAS 接続を切った後、WinMo がサスペンド状態になると、Mortscript 自体のタイマーが継続されずに、次回の接続が行われません。ここで、定期的に WinMo をサスペンドさせないよう細工も出来ますが、そうすると電池の減り対策にならないようです。BTAS で電池を食うのは、Bluetooth 通信で食うパワーかと思っていましたが、実際には、WinMo がサスペンド状態にならないことが支配的に見えます。
Mortscript で実現した機能はそれは魅力的でしたが、志半ばで頓挫し、心の中で突っかかっていたので、C で組んでみました。
http://www.ne.jp/asahi/net/pockey/program/autobtas_1.0.5.zip
あと、本プログラムの作成にはネット上の多くの情報を参考にしたため、メモ的に、Mortscript で組んだときの code も記しておきます。
この対策をしようと、Mortscript を利用して、ActiveSync が idle の状態なら Bluetooth ActiveSync 接続(以下 BTAS) を自動的に切り、また一定期間後に BTAS 接続をしようと組んでみましたが、BTAS 接続を切った後、WinMo がサスペンド状態になると、Mortscript 自体のタイマーが継続されずに、次回の接続が行われません。ここで、定期的に WinMo をサスペンドさせないよう細工も出来ますが、そうすると電池の減り対策にならないようです。BTAS で電池を食うのは、Bluetooth 通信で食うパワーかと思っていましたが、実際には、WinMo がサスペンド状態にならないことが支配的に見えます。
Mortscript で実現した機能はそれは魅力的でしたが、志半ばで頓挫し、心の中で突っかかっていたので、C で組んでみました。
http://www.ne.jp/asahi/net/pockey/program/autobtas_1.0.5.zip
あと、本プログラムの作成にはネット上の多くの情報を参考にしたため、メモ的に、Mortscript で組んだときの code も記しておきます。
-------------------------- Host="WM_MYNAME" WinCaption="Connected to " & %Host% RepllogStr="/remote /c:" & """" & %Host% & """" RnaAppStr="-m -n -e""" & %Host% & """" fError=0 tInterval=20 #SSExe="BlackMe.exe" #SSPath="\My Storage\Program Files\BlackMe\" & %SSExe% #Run("\Windows\rnaapp.exe", %RnaAppStr%) #WaitFor(%WinCaption%, 15) #Run("\Windows\udp2tcp.exe") #Run("\Windows\rapiclnt.exe", "-dppp_peer") While(fError=0) # StatusMessage("Waiting for BT-AS Connected...", ST_MESSAGE, TRUE, TRUE) Run ("\Windows\repllog.exe",%RepllogStr%) sleep(10000) cradled = RegRead(HKLM, "\System\State\Hardware", "Cradled") if (cradled>0) # StatusMessage("BT-AS Connected.") cnt=-1 While((cnt<6)&&(cradled>0)) sleep (5000) synchronizing = RegRead(HKLM, "\System\State\ActiveSync", "Synchronizing") if (synchronizing=1) cnt=0 # StatusMessage("BT-AS...Synchronizing") elseif (cnt>=0) cnt=cnt+1 # StatusMessage("BT-AS...Idle(" & cnt & ")" ) endif cradled = RegRead(HKLM, "\System\State\Hardware", "Cradled") EndWhile if (cradled>0) # StatusMessage("BT-AS...Disconnecting...") Show(%WinCaption%) SendCancel(%WinCaption%) # StatusMessage("BT-AS...Sleeping...") # if ((Length(SSexe)>0) && (ProcExists(SSExe) = FALSE)) # Run(SSPath) # endif for cnt = 1 to (2*tInterval) IdleTimerReset sleep(30000) Next else fError=1 endif if (ProcExists("repllog.exe") = FALSE) fError=1 endif elseif (Question("Connection failed. Retry?", "Bluetooth ActiveSync", "RetryCancel") <> 1) fError=1 endif EndWhile Message("AutoBTAS...Quit")
最近のコメント