.Net Micro Framework研究—IO读写

news/2024/5/17 13:53:26
 

试验平台: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);

            }

 

        }

    }





http://www.niftyadmin.cn/n/3655844.html

相关文章

JavaScript----- 列表练习题

增加一个向列表中插入元素的方法&#xff0c;该方法只在待插元素大于列表中的所有元素时才执 行插入操作。这里的大于有多重含义&#xff0c;对于数字&#xff0c;它是指数值上的大小;对于字母&#xff0c;它 是指在字母表中出现的先后顺序。 题目 分析 1、一个向列表中插入…

.NET Framework/.NET Compact Framework/.NET Micro Framework功能集比较

该资料来源于三亚许云老师的 .NET Micro Framework的讲座&#xff0c;图片中红色部分表示支持的功能&#xff0c;绿色部分表示不支持&#xff0c;不过该图片我看了应该不是最新的&#xff0c;如.NET Compact Framework &#xff0c;xml是支持序列化的&#xff0c;但图片上显示不…

javaScript --- 队列学习

队列是一种列表&#xff0c;不同的是队列只能在队尾插入元素&#xff0c;在队首删除元素。 队列用于存储按 顺序排列的数据&#xff0c;先进先出&#xff0c;这点和栈不一样&#xff0c;在栈中&#xff0c;最后入栈的元素反而被优先处 理。 队列是一种先进先出(First-In-Firs…

.Net Micro Framework研究—Digi开发板初探

9月18日&#xff0c;.Net Mirco Framework 2007技术大会在北京召开&#xff08;相关文章请参见&#xff1a;http://blog.csdn.net/yefanqiu/archive/2007/09/18/1790404.aspx&#xff09;&#xff0c;张欣第一时间写了关于Digi开发板的相关文章&#xff08;文章请参见&#xff…

javaScript面试题整理 --- 什么是闭包,什么是立即执行函数,它的作用是什么?简单说一下闭包的使用场景

什么是闭包&#xff0c;简单说一下闭包的使用场景 要理解闭包&#xff0c;首先必须理解Javascript特殊的变量作用域 变量的作用域无非就是两种&#xff1a;全局变量和局部变量。 Javascript语言的特殊之处&#xff1a; 1、函数内部可以直接读取全局变量。 2、在函数外部自然无…

JavaScript----- 链表学习

1、数组的缺点 在其他语言中 数组的长度是固定的&#xff0c;所以数组被填满后在添加新的元素是非常困难的。在数组中添加和删除也是很麻烦的&#xff0c;需要把其他元素向前或者向后平移&#xff0c;以反映数组刚刚进行了添加或删除操作。 在JavaScript 中数组的主要问题是&a…

JavaScript ---- 字典学习

字典是一种以键-值对形式存储数据的数据结构 JavaScript的object类就是以字典的形式设计的&#xff0c; function Dictionary() {this.add add;this.datastore new Array();this.find find;this.remove removethis.showAll showAllthis.count countthis.clear clear}f…

VS2005 IDE的bug?

在修改医疗程序的时候&#xff0c;遇到这样的一个问题&#xff0c;原来的程序是VS2003开发的VB.net程序&#xff0c;目前我转移到VS2005来&#xff0c;发现有些窗体界面无法打开&#xff0c;报出如下错误&#xff1a;&#xff08;注&#xff0c;以前记得打开成功过几次&#xf…