自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET Micro Framework:細(xì)說軟件人的硬件

開發(fā) 后端
毫無疑問,我是一個(gè)軟件人。在學(xué)校,我學(xué)習(xí)了電氣工程專業(yè)的相關(guān)課程,然后我學(xué)習(xí)了LED課程,再然后,像其他人一樣,我學(xué)習(xí)了小型計(jì)算機(jī),我知道了大多數(shù)零件的“伏特”和“安培”,但是,我的硬件知識(shí)也就到此為止了。我的硬件技能的上限也就是在某處添加一個(gè)LED和一些電阻來關(guān)閉USB適配器。

毫無疑問,我是一個(gè)軟件人。在學(xué)校,我學(xué)習(xí)了電氣工程專業(yè)的相關(guān)課程,然后我學(xué)習(xí)了LED課程,再然后,像其他人一樣,我學(xué)習(xí)了小型計(jì)算機(jī),我知道了大多數(shù)零件的“伏特”和“安培”,但是,我的硬件知識(shí)也就到此為止了。我的硬件技能的上限也就是在某處添加一個(gè)LED和一些電阻來關(guān)閉USB適配器。

我對(duì)像Clint Rutkas那樣的硬件愛好者心生敬畏,我的意思是他只是基于個(gè)人的興趣,就從零開始制作了一個(gè)T-shirt炮,真的很令人吃驚。今天,Clint郵寄給我一塊“Netduino”板(具體可以參考:http://netduino.com/)。除了使用.NET Micro Framework以外,它幾乎和“Arduino”板一樣。你說“Micro”嗎?它是“tiny ass(Analog imulation System:模擬仿真系統(tǒng)) framework”的技術(shù)術(shù)語(yǔ)。

2004年我制作了一份SPOT表。它使用的是Smart Personal Objects Technology,這是“tiny ass(Analog imulation System:模擬仿真系統(tǒng)) framework”的營(yíng)銷術(shù)語(yǔ)。這個(gè)表已經(jīng)使用6年了(它一直運(yùn)行的很好,實(shí)際上,現(xiàn)在它正放在我的書桌上),它使用的是.NET。

[[16012]]

讓我們回到現(xiàn)在,我發(fā)現(xiàn)我自己正在把這塊“Netduino ”板插到我的計(jì)算機(jī)上,通過Pete的Hello World教程(關(guān)于這個(gè)教程,具體可以參考如下頁(yè)面:http://10rem.net/blog/2010/09/02/first-experiences-with-netduino-and-the-net-micro-framework),我看到了這些命名空間:

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

一切又回來了!

OK,把它們一起放到上下文環(huán)境中。“Netduino”是一塊基本上和“Arduino”兼容的板,而且,它還提供了一張電路圖(“Netduino”電路圖的PDF版本,可以參考如下頁(yè)面:http://www.netduino.com/netduino/schematic.pdf),所以,如果你有興趣的話,也可以自己制作一個(gè)這樣的板。.NET Micro Framework(一些人也叫他TinyCLR)只是字面上的叫法而已——實(shí)際上它是運(yùn)行.NET字節(jié)碼的一個(gè)微型的CLR(Common Language Runtime:公共語(yǔ)言運(yùn)行時(shí))。你可以編寫C#代碼,然后使用很小的內(nèi)存(比如64K)在微型的CPU上運(yùn)行這些代碼。它已經(jīng)存在相當(dāng)長(zhǎng)的一段時(shí)間了,圍繞它已經(jīng)建立起了一個(gè)強(qiáng)大的社區(qū)。

.NET Micro Framework 4.1的源代碼可以從如下頁(yè)面下載:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=CCDD5EAC-04B1-4ECB-BAD9-3AC78FB0452B&displaylang=en,它是開源的(開源許可證是:Apache 2.0 License)。(新的微軟簡(jiǎn)直令我激動(dòng)萬分,居然有這么多的代碼悄悄地通過開源許可證來公開。)詳細(xì)情況可以參考Pete的blog(關(guān)于Pete的Blog,具體可以參考如下頁(yè)面:http://10rem.net/blog/2010/09/02/first-experiences-with-netduino-and-the-net-micro-framework)。

這是“Netduino”板的外觀:
 

我正在思考一些硬件方面的創(chuàng)意——我可以用它來制作些什么呢?我獲得了更多的功能和傳說中的Tahoe II(帶有觸摸屏,加速計(jì),按鈕等等)(關(guān)于Tahoe II,具體可以參考:http://devicesolutions.net/Products/TahoeII.aspx)。如果你對(duì)快速構(gòu)建原型或使用現(xiàn)成的板構(gòu)建一個(gè)完整的系統(tǒng)感興趣,請(qǐng)不要錯(cuò)過它!這是Tahoe II的外觀。記住,所有這些板都是使用C#和.NET的。使用我過去熟悉的語(yǔ)言和框架來為硬件編寫程序是多么令人嘆為觀止啊!毫不夸張地說,在學(xué)習(xí)曲線方面,它讓我節(jié)省了80%的時(shí)間和精力。
 

這是GHI Electronics EMX Development system,我們可以有很多的選擇。
 

要使用這些板(和其他類似的板),你只需要Micro Framework 4.1和針對(duì)特定的板的SDK就可以了。它已經(jīng)集成到了Visual Studio 2010中。如果你想對(duì)這個(gè)產(chǎn)品做出改進(jìn),他們正在.NETMF論壇中征集各種建議:http://www.netmf.com/Discussion/Forums/SingleForum.aspx?mode=singleForum&forum=5d5ba383-e09d-470c-af8b-988cbf828630

入門:

你需要的東西:

Netduino板(Scott:或其他.NET Micro Framework板)
USB線(早期的Netduino單元帶有USB線)(Scott:通常是一個(gè)微型的或模擬的USB)
Visual Studio 2010和.NET Micro Framework 4.1 SDK(可以從如下頁(yè)面下載:http://blogs.msdn.com/b/netmfteam/archive/2010/07/19/netmf-versions-4-1-released-to-web.aspx)(如果你沒有Visual Studio,你可以使用C# Express 2010)
32位的Netduino SDK或64位的Netduino SDK,這主要取決于你的主機(jī)操作系統(tǒng)是32位的還是64位的。
可選:在netduino版上,shields和starter kits(具體可以參考如下頁(yè)面:http://www.makershed.com/SearchResults.asp?Cat=43)可以做很多很“酷”的事情。它和現(xiàn)有的Arduino shields是兼容的。一個(gè)shield只是一個(gè)附加的“卡”,它和板上的引腳是匹配的。

為了和Netduino進(jìn)行交互,這個(gè)SDK會(huì)安裝一個(gè)設(shè)備驅(qū)動(dòng)。你一定要選擇和你的主機(jī)操作系統(tǒng)相匹配的位數(shù)(64位/32位),并且你一定要在Netduino連接到PC以前安裝它。在安裝這個(gè)SDK以前,我已經(jīng)安裝了Visual Studio 2010,但是這并不是很重要。

如果你使用USB線插入了Netduino,你應(yīng)該可以看到這個(gè)設(shè)備的驅(qū)動(dòng)已經(jīng)安裝好了,同時(shí),這個(gè)板上的電源指示燈也應(yīng)該被點(diǎn)亮了。

使用Morse Code的Hello World

現(xiàn)在,我只有一塊Netduino板,我并沒有得到其他的任何附件。如果我是一個(gè)硬件愛好者,我相信我會(huì)嘗試著拆開一個(gè)烤面包機(jī),來實(shí)現(xiàn)遠(yuǎn)程控制,并且我會(huì)清楚這樣一些事情(比如:在引腳輸出***的情況下,這個(gè)烤面包機(jī)只需要1歐姆的電阻,所以我可以反轉(zhuǎn)電壓,然后我就可以通過藍(lán)牙來烤面包了),但是,我不知道這些事情。我能用Netduino做的所有事情就是讓它的LED燈不停地閃爍,就像Pete指出的那樣:

public static void Main()
{
   OutputPort onboardLed = new OutputPort(Pins.ONBOARD_LED, false);
  
   while (true)
   {
      onboardLed.Write(true);
      Thread.Sleep(500);
 
      onboardLed.Write(false);
      Thread.Sleep(500);
   }
}

讓我們把它變得更新奇一點(diǎn)。使用Morse Code來輸出字符串怎么樣?維基上說一個(gè)點(diǎn)是100ms長(zhǎng),一個(gè)短劃線是300ms長(zhǎng)。這很難做到嗎?

我參考了StackOverflow站點(diǎn)上的實(shí)現(xiàn),因?yàn)樗麄冞M(jìn)行了一項(xiàng)比賽,比賽的內(nèi)容是看看誰(shuí)能編寫出體積最小的程序,程序的功能很簡(jiǎn)單,就是獲取一個(gè)字符串,然后輸出Morse Code。他們有一個(gè)極端優(yōu)化的解決方案(相對(duì)于代碼行數(shù)而言)。我也可以使用了一個(gè)Hashtable,但是兩個(gè)平行的數(shù)組會(huì)更好一些。.NET Micro Framework,是“微型”的,所以它并沒有提供完整的框架所提供的所有功能。但是它是開源的,它已經(jīng)采用了一些社區(qū)的貢獻(xiàn),4.1版本已經(jīng)包含了一個(gè)Hashtable的實(shí)現(xiàn)。我甚至可以直接調(diào)試連接的那塊板!
 

這是我那“可悲的”小程序(它十分簡(jiǎn)單?。?/p>

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Text;
using System.Collections;
 
namespace NetduinoApplication1
{
    public class Program
    {
        public static void Main()
        {
            OutputPort onboardLed = new OutputPort(Pins.ONBOARD_LED, false);
            
            while (true)
            {
                onboardLed.Write(false);
 
                foreach (char c in " hello scott hanselman ")
                {
                    string morse = ConvertTextToMorse(c);
                    Debug.Print(c + " = " + morse);
                    TransmitDotOrDash(onboardLed, morse);
                }
                
            }
        }
 
        private static Char[] Letters = new Char[] {'a', 'b', 'c', 'd', 'e', 'f', 'g',
          'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
          'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8',
          '9', ' '};
 
        private static String[] MorseCode = new String[] {".-", "-...", "-.-.",
          "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..",
          "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
          "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---",
          "...--", "....-", ".....", "-....", "--...", "---..", "----.", " "};
 
        public static String ConvertTextToMorse(char c)
        {
            int index = -1;
            index = Array.IndexOf(Letters, c);
            if (index != -1)
                return MorseCode[index];
            return string.Empty;
        }
 
 
        public static void TransmitDotOrDash(OutputPort port, string dotordash)
        {
            foreach (char c in dotordash)
            {
                TransmitDotOrDash(port, c);
            }
            Thread.Sleep(300); //gap between letters
        }
 
        public static void TransmitDotOrDash(OutputPort port, char dotordash)
        {
            if (dotordash == ' ')
            {
                port.Write(false);
                Thread.Sleep(700); //gap between words
            }
            else //it's something
            {
                port.Write(true);
                if (dotordash == '.')
                    Thread.Sleep(100); //dot
                else
                    Thread.Sleep(300); //dash
                port.Write(false);
            }
        }
    }
}

當(dāng)我在這塊板上閃爍“hello scott hanselman”時(shí)候,這是調(diào)試輸出:
 

沒有什么比這更容易的了。下次,我將會(huì)在Tahoe II上做一些工作,也許我會(huì)給男孩子們制作一個(gè)游戲。也許我會(huì)連接一個(gè)揚(yáng)聲器和一個(gè)近距離的傳感器,然后看看它們是否可以在上面工作。

責(zé)任編輯:馬沛 來源: 51CTO.com
相關(guān)推薦

2009-07-09 09:28:19

.Net Micro

2009-06-29 10:19:42

.NET Micro性能優(yōu)化

2009-07-16 15:02:33

Shapes命名空間Net Micro F

2009-11-17 10:29:39

.NET Micro

2009-07-17 14:51:22

.Net Micro

2009-07-17 13:56:44

.Net Micro

2009-07-17 13:46:52

.Net Micro

2009-07-17 13:35:12

IO模擬器研究.Net Micro

2009-05-11 09:24:53

微軟.Net Micro 源代碼

2009-12-14 10:19:23

.NET Framew

2009-07-17 14:38:49

Micro Frame

2009-04-11 15:12:24

.Net MicroI2C總線模擬器

2020-01-14 08:00:00

.NET緩存編程語(yǔ)言

2020-07-21 00:26:46

APaaS軟件代碼

2009-04-28 16:18:29

.Net MicroSideShow

2011-04-18 13:07:58

2009-07-20 16:04:37

ASP.NET fra

2010-01-05 18:49:57

.NET Framew

2009-08-18 11:08:24

.Net Framew

2009-08-26 15:10:34

脫離.net fram
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)