2008年6月25日 星期三

搬家

搬到成大附近了,以後上下學也方便許多.

這搬家的過程還真曲折,先是颱風要來臨時變更日期
再來,成哥原本要開車幫忙我們的,但卻腳扭傷,前一晚趕緊聯絡bbs上的網友幫忙,夢大bbs的andy5667人真的蠻nice,一整個就很老實樣,價格也非常平易,大推阿!
搬家當天周屁屁說要來幫忙,結果機車騎到一半還壞掉...
周屁屁不禁要說:慘了慘了~跟廢成一樣廢了XD
當然要非常感謝大家的幫忙,lab同學也大力贊助~

不過房間小了很多,只有原本一半不到,不能再像之前那樣5,6個人擠一間...
前兩個睡地板,第三個睡床底下,第四個睡廁所,第五個開始就要疊疊樂了
昨天還跑去探望成哥,成哥媽超好客的啦,一直請我們吃東西,希望他的腳趕快好摟!

2008年6月14日 星期六

推荐对岸的好网站

提供一個電子書下載的網站ebookee.com.cn
我是拿來搜原文書的,連2008新出的都有,電子書在外國網站價格也都是逼近實體書
不過在這邊免註冊就可以download,而且還是完整版的,整套歐萊禮載回去都不是問題
阿共仔對於智慧財產權似乎沒什麼概念,共產黨嘛~你的就是我的

就我自己做嵌入式的方面來說,對岸那邊的資源真的很豐富,很多時候有現成的料得可以撿
CSDN.NET-中国最大的IT技术社区,为IT专业技术人员提供最全面的信息传播和服务平台
盜版合法化?取這個名字是想跟MSDN打對台?
這裡面很多好東東,註冊一次有20點,下載是需要點數的.
www.pudn.com-最大的源码下载中文网站 源代码40多万个
另一個網站,主要以SourceCode為主. 註冊之後上傳5個file就可以擁有200多點吧.

2008年6月13日 星期五

跳脫

這一年沒有從前的快活,我面臨了人生的關卡,我無法適應我的生活...

記得川普說過一句話:「當你無法享受你的工作時,就是你該換工作了」
從國中開始我就確立要走這一行,沒動搖過 ~ I love my job!
我需要是不是一個新環境?

很高興這次能幫自己作主
從前遇到挫折總是忍氣吞聲,這次我選擇了我想要的
離開這裡,但也不完全是逃避

這個抉擇漫長且煎熬,我稱它為revolution
為了讓自己心情好一點,我得不斷找人訴說,儘管最後還是要自己去面對
無數次談判,爭辯,激進的手段...
目的是達成了,但 是我要的結果嗎?

過程使人成長
也因這次的際遇,我得到了"另類"的經驗,也發現自己的所欠缺的
這期間曾和幾位教授聊過,這當然也包括我的舊老闆
當雙方見解不同時,所需要的就是溝通
話講開了,也讓彼此更了解

回頭再看看,好像也沒那麼嚴重
沒錯,不同的時期見解也不一樣
只是當下陷在那泥沼中,有幾個人能跳脫,越想越悲觀
還說自己有多理性...

寫這些有的沒的,當然是抒發自己的情感摟
對於"研究"兩字也有新的看法
論文有時只為了論文而論文,重要的是這過程中你得到了什麼
事情沒有絕對的好與壞
從不同的時間角度切入,所散發出來的價值也不同,別只用當下的結果去斷定它

Alright!
既然已經做了決定,就好好的去經營,明天 又會衍生不同的問題
人生不是那麼容易地

2008年5月30日 星期五

GPS Intermediate Driver

Windows Mobile 5.0引進了GPS Intermediate Driver (GPSID),開發基於GPS的應用程式變得簡單多了。原因是它在開發人員編寫的應用程序和 GPS 設備之間加入了一個中間層,使開發人員不需要通過串口直接存取GPS設備,而是透過GPSID提供的API由GPSID再去存取GPS,這樣一來,編寫出來的GPS應用程式具有設備無關性。另外,GPSID還有兩個好處:1.多個應用程式可以同時一個 GPS設備 2.不需要再去解析NMEA資訊 《以上出自Windows Mobile 6 SDK 中的 GPS 工具

能提供這麼好的API,寫起程式事半功倍阿,沒什麼好說的了,程式碼再簡單不過:
'自行加入參考:Microsoft.WindowsMobile.Samples.Location.dll (一樣在WM5 SDK內)
Imports Microsoft.WindowsMobile.Samples.Location

Dim gps1 As New Gps
Private Sub GPS_OPEN(...) Handles Button1.Click
If (Not gps1.Opened) Then
gps1.Open()
End If
End Sub

Private Sub GPS_CLOSE(...) Handles Button2.Click
If (gps1.Opened) Then
gps1.Close()
End If
End Sub

Private Sub GPS_GET(...) Handles Button3.Click
If (Not gps1.Opened) Then
Label1.Text = "GPS NOT OPEN"
Else
Dim position As GpsPosition = gps1.GetPosition
Label2.Text = "經度:" & position.Longitude.ToString
Label3.Text = "緯度:" & position.Latitude.ToString
End If
End Sub

另外發現一個好東東Fake GPS,它可以模擬出GPS接收訊號的動作,而數據也可以自行定義,這個tool被放在WM6 SDK之中(C:\Program Files\Windows Mobile 6 SDK\Tools\GPS),如此programer就不用跑到戶外去傻傻的等了. 記得要配合GPS Settings把COM Port設定好.

Ref:
在WM6 SDK Sample下有兩支關於GPS的程式
GPSID相關:
Example GPS Intermediate Driver Registry Settings
Topic: GPS sample and Windows Mobile 2005

2008年5月28日 星期三

CameraCaptureDialog

延續上一篇,Windows Mobile 5 SDK提供了CameraCaptureDialog物件讓programer能夠存取device上的camera,算是一大福音啦,不過"拍照"這個動作卻一定要使用者用"手"去觸發,真是個半殘的東東. 真慘,非得用low level的function去實現:
Imports System.Runtime.InteropServices

<DllImport("CoreDll")> _
Public Shared Function FindWindow(ByVal className As String, _
ByVal WindowsName As String) As IntPtr
End Function

<DllImport("CoreDll")> _
Public Shared Function SendMessage(ByVal hWnd As IntPtr, _
ByVal wMsg As Integer, ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
End Function
* 注意"角括號"
* FindWindow可以用GetForegroundWindow()來取代
* SendMessage跟PostMessage相似,差別在於同步

關於SendMessage()內的做什麼用的可以參考這裡. 不過按下快門...算是那一類的Event?又帶哪些參數? 本來這個訊息是可以透過Remote Spy來獲取的,不過我的Spy卻有個大問題,是每次與device連線後,只能截取到第一則message,所以我一直重複開開關關就為了按下的一瞬間.
最後終結果 - Message:WM_KEYDOWN(0x100), WPARAM:0x0D, LPARAM:0
當然這東西會因不同的PDA而不同啦(我使用的是ASUS P535),你也可以在KEYDOWN_Enent中,WPARAM從0一直試上去...

Implement:利用程式去控制PDA自動拍照
按下button開啟CameraCaptureDialo,再利用timer去送出拍照及關閉的動作.
Imports Microsoft.WindowsMobile.Forms '這個要先安裝WM5 SDK,並且自行加入參考

Public WM_KEYDOWN As Integer = Val("&H100")
Public WM_CLOSE As Integer = Val("&H010")

Private Sub Timer1_Tick(...) Handles Timer1.Tick
Dim hwnd As IntPtr = FindWindow(Nothing, "Asus Camera")
PostMessage(hwnd, WM_KEYDOWN, Val("&H0D"), 0)
Timer1.Enabled = False
End Sub

Private Sub Timer2_Tick(...) Handles Timer2.Tick
Dim hwnd As IntPtr = FindWindow(Nothing, "Asus Camera")
PostMessage(hwnd, WM_CLOSE, 0, 0) '這樣關閉Camera會有問題
Timer2.Enabled = False
End Sub

Private Sub Button1_Click(...) Handles Button1.Click
Timer1.Interval = 5000
Timer1.Enabled = True
Timer2.Interval = 8000
Timer2.Enabled = True

Dim CCD As New CameraCaptureDialog
CCD.Owner = Me
CCD.Title = "MyCamera"
CCD.Mode = CameraCaptureMode.Still
CCD.InitialDirectory = "\My Documents"
CCD.DefaultFileName = "picture.jpg"

Try
CCD.ShowDialog() '這個function會在整個拍照動作完成才結束
Catch ex As Exception
'MsgBox(ex.ToString)
End Try

PictureBox1.Image = New Bitmap(CCD.InitialDirectory & "\" & CCD.DefaultFileName)
End Sub

關於這個問題找到四篇討論串:
1. SendKeys - MSDN Forums
2. How to press ok button to take picture automatically with CameraCaptureDialog?
3. CameraCaptureDialog in VS2005/CF2 - xda-developers
4. How to close Camera app after opening it using CameraCaptureDialog

* 意外發現一個好用的library-OpenNETCF,其針對Windows Mobile or Windows CE所設計,算是用來補足.Net Compact Framework 2.0. 至於有哪些好東東請參閱Table of Content
這個library是要錢的,若想試用可以考慮到對岸的網站找找

Windows Mobile開發相關:
Code Samples for Windows Mobile
Microsoft .NET Compact Framework 開發常見問題解答
AppleSeeker's Tech Blog - 博客园

2008年5月27日 星期二

Program in Windows Mobile 5.0

這學期唯一修的一門課-多媒體嵌入式系統,蠻有趣的,主要是以實做為主.
期末專題要在Mobile Device上開發,跟同學一起想了一個屌屌主題-『全民來抓姦』
『太太,您手中有這利器,還需要怕第三者嗎?』這是設計的動機

認真的畫了兩張架構圖:

這個功能是用來隨時監控另一半的動向,配合Google Map位置無所遁形阿!(前提是PDA要乖乖帶在身上)


這個則是有點像偷拍的功能,從遠端可以控制PDA拍照並傳回.

最大的難題就是如何去控制PDA上的GPS,Camera.而最大的挑戰則是解決無線網路下傳輸可能遇到的問題,如資料重複傳送,傳到一半斷訊.
還好挑到這台ASUS P535 with Windows Mobile 5.0,其有針對GPS與Camera提供API. 找了一些相關資料還未整理...
而Server方面使用ASP.Net+Database,算是老本行了.

ref:
GPS相關
GPS Tracking with Windows Mobile 5.0+
基于Windows Mobile 5.0的GPS应用程序开发

Camera相關
Windows Mobile Developer Center - SHCameraCapture
使用 Windows Mobile 5.0 中的圖片、視頻和照相機
cameracapture PDA等使用wince平台上 频捕获程序,vs2005 Windows CE

2008年5月15日 星期四

Big Trouble

今天解了一個大trouble,是什麼trouble?
近幾個月老是碰到網頁打不開,但bbs,MSN都正常的狀況。
但有時候就還蠻順的...

這種要壞不壞的問題最難解決了
剛開始以為Firefox外掛害的,移除之以後果真變正常,但一陣子又壞了
重裝Firefox,還用了免安裝版->失敗
用IE開有時可以有時不行,用對岸奇怪的軟體看看是不是IE被綁架->沒結果
改IP、關閉防火牆、檢查防毒軟體、重開機...甚至還懷疑網卡壞了QQ
這麼多變因交叉測試之下搞得我都快吐血,網路比別人慢學習也比別人慢阿
長期飽受這種困擾,幾乎是想要重灌電腦了-_-

ping 140.130.175.3 <- 對嘉大系上主機念念不忘
ping ptt.cc <- ok
ping yahoo.com.tw <- 失敗
突如其來的靈感,懷疑是DNS出了問題...
我使用學校用的DNS 163.28.112.1 與 163.28.113.1
把其中一個換成中華電信的 168.95.1.1 就...這樣解決了...
怪哉,莫非DNS壞了?而且還壞的不完全,edu.tw網域的還可以連(為何這麼說,因為ptt.cc是在ntu.edu.tw底下)
結論就是學校跟Hinet的混用啦~

後續:
這個鳥問題還是沒解決,不過今天似乎發現癥結所在...
在cmd下打netstat指令,發現一堆connection的狀態是TIME_WAIT,這些是開了firefox以後才產生的. 關閉firefox, connection的狀態變成CLOSE_WAIT久久不會中斷,這是中毒了嗎?到底要怎麼解決阿?


終於解決了,Avira Antivirus搞得鬼,從註冊版改成free版的就ok了,莫非...