Microsoft  CSIP   WindowsMobile   MEDC   合作伙伴   体验中心 设为首页 加到收藏夹

 
登录       点击换一张     注册新用户 找回密码

.Net Micro Framework研究—IO读写
2007年11月01日03:53   编辑:叶帆工作室 来源: 叶帆工作室 浏览: 430

  试验平台:Digi MF开发板

  与IO相关的部分如下:

  (3)拨码开关SW1 (4)拨码开关SW2 (11)GPIO灯—output (10)GPIO—input.

  首先,要操作相关IO部分,必须拨码开关SW1的拨码全部拨到右边,这时候GPIO有效。(SW1开关是切换串口和GPIO的)。

  这时候如果你对拨码开关SW2进行操作,你会发现,当SW2的拨码在右边的时候相对应GPIO灯会亮,拨到左边则灭(这时候要保证没有任何程序运行或有程序运行但无操作GPIO灯的指令操作)。

  如果你要使用最右边的GPIO入来控制GPIO灯,你必须使SW2的拨码在左边,这时候GPIO灯亮。你用一个短接线,把pin9和pin10端口短接,这时候你发现GPIO第1个灯灭,断开,则IO灯亮。相对应你也可以控制GPIO其它灯的亮灭。

  好了,知道上面的知识,我们就可以进行相应的IO编程了。

  首先我们要知道GPIO的pin。

  很遗憾,SW1、SW2、GPIO共用同一批GPIO Pin。

  分别为0,1,2,5,6。对编程的影响就是,不能同时操作 GPIO入和GPIO出,如果强行同时操作,虽然代码可以编译成功,但运行时会跳出如下异常。

  下面是读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);
            }
 
        }
    }
发表评论
评论标题 :
评论内容 :

    查看评论

请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。 本站拥有管理笔名和留言的一切权利。
相关文章推荐
· 浅谈Morse Code与.NET Micro Framework 2007-11-1  breakstring
· Visual Studio 2005 Sp1 Beta 和 .NET Micro Framework 2007-9-18  维生素C.NET
· 齐头评论.NET Micro Framework与J2ME CLDC 2007-5-21  郭长佑

  

论坛推荐  
热点活动
更多»

© CSIP 信息产业部软件与集成电路促进中心 All Rights Reserved 版权所有 京ICP备06020771号
联系电话:010-63951881-8003 王先生        邮件:wangj@csip.org.cn