ActiveSync が無限ループで終了しない2011/04/19 00:00

Outlook 2007 にしてから、ActiveSync での同期がいくらたっても終わらないことがしばしば発生するようになりました。
それより、予定表の予定がなくなることもしばしばありますが...

e-mail の同期が数件残っていて、例えば
E-mail: 0/3
のような status で、普通は 1/3 とか 2/3 とか進んで同期終了するのですが、0/3 のまま、再度 update を確認して、その繰り返しで永遠に終わらないのです。

いろいろと調べた結果、会議開催通知などの予定表を誰かに転送 (FW:) すると、これが発生することが分かり、
送信済みアイテムフォルダから転送したメールを取り除くと、嘘のように同期が完了します。

単なるメールの転送ではこの問題は発生しません。なんなんでしょうか....

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 も記しておきます。

--------------------------
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")

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

Windows Mobile 用の GPS 地図 - Part 6 - ツールアップデート2011/01/09 19:29

gm_lite 改造版 (ver 0.1.4 ベースにした、rev 5.2) を update しました。

http://www.ne.jp/asahi/net/pockey/program/gm_lite-0.1.4_r5.2.patch.zip

全バージョンは、ランドマークファイルの読み込みに bug があったので修正しています。また、前の key bind "Q" は "D" に変更しました("V" で保存したランドマークを削除する機能)。

利用法は、
「Windows Mobile 用の GPS 地図 - Part 4 ― 」
http://gethtmlw.asablo.jp/blog/2009/08/23/4533241
をご覧ください。

また、ReagGPS.exe もアップデートしました。

http://www.ne.jp/asahi/net/pockey/program/readgps_1.3.0.zip

WinMo 版で、画面off など、電源 state が変わったときにハングアップする不具合を修正しました。

ネットワーク越しの ActiveSync (ActiveSync over network) - ツールアップデート/Win72011/01/09 18:51

下記のプログラムをアップデートしました。

Remote Dialog Control (rmtdlgctl) ver 1.2.0
http://www.ne.jp/asahi/net/pockey/program/rmtdlgctl-1.2.0.zip
・コマンド実行後、実行終了後の dialog box が出るようにした。

ちなみに、Windows 7 の場合、デフォルトの Bluetooth スタックや、Lenovo から提供されているスタック(おそらく Broadcom の?)では、Bluetooth COM に COM ポート番号が付かないようで、以前紹介した方法で、Window Mobile Device Center のフックが出来ません。

今回は安易な解決方法として、Bluesoleil 7 を購入し、Bluetooth スタックの入れ替えをしました。

http://www.bluesoleil.com/products/SoftwareDetail.aspx?ProductID=S0001201008080001

これであれば、Bluetooth COM ポート番号を、Device Center (ActiveSync) で使える形で付加してくれる(要は、Windows XP 時代と同じ実装にしてくれるだけですが)のです。

$20- 掛かりますが、この方法が使えるだけましです。