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地址。这个在使用的时候可以手工判断下,然后选取要使用的网卡,或者是从设计上面避免这个问题。
另外的一些,下次想到了之后加上来。这些都是我碰到的,解决过的问题,仅供参考。:)