程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .Net Micro Framework研究—Digi開發板初探

.Net Micro Framework研究—Digi開發板初探

編輯:.NET實例教程
9月18日,.Net Mirco Framework 2007技術大會在北京召開(相關文章請參見:http://blog.csdn.Net/yefanqiu/archive/2007/09/18/1790404.ASPx),張欣第一時間寫了關於Digi開發板的相關文章(文章請參見:http://mobileside.cn/blogs/breakstring/archive/2007/10/06/MorseCodeOnDotNETMF.ASPx),寫的比較基礎全面,由於我們北航的研發團隊先研究了Digi的開發板,所以直到今天Digi開發板才到我的手上,我的《Micro Framework研究》系列文章以後也會陸續推出,內容方面和張欣寫的並不重復,應該是一個有力補充吧。

 

我的開發場景:

(圖:MF071027001.JPG

張欣的筆記本由於沒有串口,所以串口方面的內容並沒有寫,這裡我優先測試的了串口部分內容,我的筆記本本身也沒有串口,我是擴充了一個PCMCIA串口卡,這種方式的串口比USB轉串口要好一些,特別是連接需要RTS/CTS控制的設備。

 

Digi指導作業書上關於連接串口的步驟是這樣的:

1、  MFDeploy選擇菜單中選擇”Serial”這一項,我的當前串口是“COM1

2、  用串口連接線連接PCMF開發板

3、  確保MFDeploy程序唯一使用COM1

4、  重啟開發版

5、  單擊Ping按鈕

6、  如看到“ErrorNo response from device”,則繼續單擊Ping按鈕

7、  出現“Pinging … TinyBooter”則表示通信成功

(圖:MF071027000.JPG

很遺憾,我試了多次都是失敗。

 

我打開超級終端程序,參數配置如下:115200,無校驗,8個數據位

重啟開發板,串口在5~6秒鐘會收到如下信息:

(圖:MF071027004.JPG

在出現“Program found at 0x0a070000之前會等待3~5秒鐘的時間(其實這個3~5時間就是等待接收上位機串口命令的)。

 

然後關閉該程序,重新打開MFDeploy程序,在此之前,先打開串口監控程序“PORTMON.EXE”,注意MFDeploy程序單擊ping按鈕的串口操作如下:

(圖:MF071027005.JPG

 

這時候仍然是失敗,但是請注意串口參數是:115200,偶校驗,8個數據位

 

關上該程序,打開串口調試程序,參數設置為:115200,無校驗,8個數據位

 

MFDeploy程序串口會發送如下四種指令(每個指令會重復發出6遍)

4D 53 70 6B 74 56 31 00 3A AA 3A 1D 94 B9 43 B7 00 00 00 00 4B 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

4D 53 70 6B 74 56 31 00 28 03 FA 0A 94 B9 43 B7 00 00 00 00 4C 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

4D 53 70 6B 74 56 31 00 2E E0 0C 0D 94 B9 43 B7 00 00 00 00 4D 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

4D 53 70 6B 74 56 31 00 24 C5 17 05 94 B9 43 B7 00 00 00 00 4E 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

圖:MF071027006.JPG

 

在出現“Program found at 0x0a070000之前,開發發送這四條指令,這時候你發送digi開發板是響應該命令的,並且等待時間被延長,上圖的數據是我設置16進制/ascii交替顯示的。

如果把參數修改為:115200,偶校驗,8個數據位,則出現亂碼,digi開發板對命令也沒有什麼響應了。

 

到了這裡我只能得出如下結論:MFDeploy程序有問題(但看指導書上,圖例是用串口通信成功了的)或digi開發板的默認串口參數可修改。

 

由於MFDeploy串口參數無法設置,我用.Net反編譯程序反編譯MFDeploy程序,不過效果不是很好,大部分代碼可以正確反編譯出來,但工程無法正確編譯,所以也就無法通過源碼修改串口參數了。

有時間再深入研究,同時也希望這方面有研究的朋友,提出自己的看法。


 

 

下面該通過網口和digi開發版進行連接了,我的筆記本有wifi和普通網卡兩種,如張欣的文章所說,同時連接是有問題的,所以只好關閉wifi連接了。

 

(圖:MF071027002.JPG

 

多次切換到tcp/ip選項,它會自動探測digi開發版的ip地址,我探測到的ip地址為169.254.128.66,這時候如果你單擊“ping”按鈕,是無法連接成功的,你必須修改你ip地址為同一個網段,才能連接成功。連接成功後直接單擊“plug-in”菜單中的參數配置選項,修改digi開發板的ip地址,如下圖:

(圖:MF071027003.JPG

 

注意:DHCP Enable要取消掉,然後在單擊update按鈕,修改後,記得修改你PCip地址,好與新修改的ip為同一個網段。


 

 

 

開始調試程序,相關配置請參見張欣的文章,我這裡偷懶省略了J

默認的示例程序是三個燈連續亮的,我們修改為5個燈。相關代碼修改如下:

BlinkingLed led0 = new BlinkingLed((Cpu.Pin)0, true);

            BlinkingLed led1 = new BlinkingLed((Cpu.Pin)1, true);

            BlinkingLed led2 = new BlinkingLed((Cpu.Pin)2, true);

            //------------

            //新加代碼

            BlinkingLed led3 = new BlinkingLed((Cpu.Pin)5, true);

            BlinkingLed led4 = new BlinkingLed((Cpu.Pin)6, true);

 

 

            while (true)

            {

                led0.On = false;

                led0.Blink(200);

                Thread.Sleep(200);

                led0.StopBlink();

 

                led1.On = false;

                led1.Blink(200);

                Thread.Sleep(200);

                led1.StopBlink();

 

                led2.On = false;

                led2.Blink(200);

                Thread.Sleep(200);

                led2.StopBlink();

 

          //------------

            //新加代碼

 

                led3.On = false;

                led3.Blink(200);

                Thread.Sleep(200);

                led3.StopBlink();

 

                led4.On = false;

                led4.Blink(200);

                Thread.Sleep(200);

                led4.StopBlink();

 

            }

注意,你直接編譯運行,你會發現,還是三個燈交替閃爍,這是因為下面還是原先的程序,必須要單擊菜單中的“部署”選項,先把程序部署下去,這時候在調試就是5個燈交替閃爍了。

不足之處:從Digi開發板來看,啟動時間還是偏長,實際測試大約25秒左右(由上面可知,要5~6後TinyBooter才加載成功),從這一點上與以往單片程序相比差距甚大,希望以後性能能進一步提升。 

好,今天先寫到這裡,後續的文章我會陸續詳細介紹串口、網口、IO入等等相關操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved