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

.Net Micro Framework研究—IO讀寫

編輯:.NET實例教程

試驗平台:Digi MF開發板

(圖MF071028001.jpg

IO相關的部分如下:

3)撥碼開關SW1 4)撥碼開關SW2 11GPIO—output 10GPIO—input(參見下圖)

(圖MF071028003.jpg

 

首先,要操作相關IO部分,必須撥碼開關SW1的撥碼全部撥到右邊,這時候GPIO有效。(SW1開關是切換串口和GPIO的)。

 

這時候如果你對撥碼開關SW2進行操作,你會發現,當SW2的撥碼在右邊的時候相對應GPIO燈會亮,撥到左邊則滅(這時候要保證沒有任何程序運行或有程序運行但無操作GPIO燈的指令操作)。

 

如果你要使用最右邊的GPIO入來控制GPIO燈,你必須使SW2的撥碼在左邊,這時候GPIO燈亮。你用一個短接線,把pin9pin10端口短接(如上圖),這時候你發現GPIO1個燈滅,斷開,則IO燈亮。相對應你也可以控制GPIO其它燈的亮滅。

 

好了,知道上面的知識,我們就可以進行相應的IO編程了。

首先我們要知道GPIOpin,請參見下表。

(圖MF071028002.jpg

 

很遺憾,從上表得知,SW1SW2GPIO共用同一批GPIO Pin

分別為01256。對編程的影響就是,不能同時操作 GPIO入和GPIO出,如果強行同時操作,雖然代碼可以編譯成功,但運行時會跳出如下異常。

(圖MF071028004.jpg

 

下面是讀IO入的代碼:

    using System;

    using System.Collections;

    using System.Net;

    using System.Net.Sockets;

    using System.Runtime.CompilerServices;

    using System.Text;

    using System.Threading;

    using Microsoft.SPOT;

    using Microsoft.SPOT.Hardware;

    using Microsoft.SPOT.Net;

    using Microsoft.SPOT.Net.NetworkInformation;

 

    public class DigiTest

    {

        public static void Main()

        {

            InputPort[] input = new InputPort[5];

            Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };

 

            for (int i = 0; i < 5; i++)

            {

                input[i] = new InputPort(pin[i], false, Port.ResistorMode.PullUp);

            }

            while (true)

            {           

                Debug.Print(input[0].Read().ToString() + " " + input[1].Read().ToString() + " " + input[2].Read().ToString() + " " + input[3].Read().ToString() + " " + input[4].Read().ToString());

        Thread.Sleep(1000);

            }

        }

    }

 

下面是寫IO出的代碼,部署運行後你會發現,GPIO會閃爍。

    using System;

    using System.Collections;

    using System.Net;

    using System.Net.Sockets;

    using System.Runtime.CompilerServices;

    using System.Text;

    using System.Threading;

    using Microsoft.SPOT;

    using Microsoft.SPOT.Hardware;

    using Microsoft.SPOT.Net;

    using Microsoft.SPOT.Net.NetworkInformation;

 

    public class DigiTest

    {

        public static void Main()

        {

            OutputPort[] output = new OutputPort[5];

            Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };

 

            for (int i = 0; i < 5; i++)

            {

                output[i] = new OutputPort(pin[i], false);

            }

            while (true)

            {

                for (int i = 0; i < 5; i++)

                {

           output[i].Write(!output[i].Read());

                }                

                Thread.Sleep(1000);

            }

 

        }

    }



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