.Net Micro framework在開發過程中的bugs/problems及解決方案。
1.在開啟了主板的DHCP功能之后,由于主板每次重啟之后,都會需要一定的時間獲取一個IP地址,這個需要一定的時間。而在Visual Studio中debug的時候attach到電路板上面的時候,會reset一下來連接上tinyCLR的debug engine。連接和重試的時間,會小于主板獲取IP地址的時間,這個時候,就會出現attach不上主板的現象。解決
這個問題的方法可以是:
打開注冊表,在USER/SOFTWARE/MICOSOFT下面,添加.NETMICROFRAMEWORK/NONVERSIONSPECIFIC/TIMMING/ANYDEVICE,在下面添加三個Type為REG_DWORD類型的鍵:
- OVERRIDE—0
- RETRIES—21
- TIMEOUR—0X00030000
- SDFD
2.System.Ext.Uri uri = new System.Ext.Uri(remoteEndpoint);
在上面的這句代碼中,用reflector打開,看到在parseUriString方法中,如果傳入的remote Endpoint開頭的http不是全部小寫的話,就會解析錯誤:
這個相當的搓,當初被折磨毀了。。
3.GUID的問題
對于GUID的newGuid方法,在主板上面維護一個next的static變量,算法我沒仔細看,這樣就造成了每次重啟板子的第N個GUID和重啟之前的第N個GUID是一樣的。。
解決這個問題,可以自己寫個隨機算法來生成GUID。
4.在使用GPRS的時候,不能使用MF library中的DNS解析來得到hostname對應的IP地址,解決這個問題的方法,可以得到了DNS的ip地址之后,建立一個Socket連接,直接查詢hostname對應的ip地址。
5.有的時候很詭異,會在Main方法執行之前,調用另外別的模塊的static類型的單態構造函數。Clean一下sloution就好了。
6.還有一個非常惡劣的問題,在方法調用的時候,如果使用了Float類型的參數,改參數在使用了float的tostring()方法之后,譬如2.3,就會變成2.2999999998或者是2.300000004類似這樣的,解決的方法,是自己手寫一個方法來把float轉換成為string。加一些判斷。
7.另外,ms使用GHI的主板,在加載了GHI的sdk之后,decimal是用不了的。在碰到定義decimal的地方直接crash。(我沒碰到過..)
8.在使用GHI的EM的時候,Ethernet每次reset之后沒有網線卻還是保留著上次分配的一個IP地址。這個在使用的時候可以手工判斷下,然后選取要使用的網卡,或者是從設計上面避免這個問題。
另外的一些,下次想到了之后加上來。這些都是我碰到的,解決過的問題,僅供參考。:)
posted on 2009-06-17 18:49 lbq1221119 閱讀(1876) 評論(4) 收藏 舉報
浙公網安備 33010602011771號