叶帆工作室

嵌入式开发爱好者(十年开发经验,精通C/C++/VC/VB/C#...)

刘洪峰ID:yefanqiu
504906次访问,排名80好友0人,关注者137
微软MVP / CSDN 2008十大MVB/MSDN中文技术论坛版主
yefanqiu的文章
原创 215 篇
翻译 0 篇
转载 3 篇
评论 1058 篇
叶帆的公告
本博客原创文章,作者保留一切权利,需经作者同意后方可转载,转载时 请注明[叶帆工作室]及文章链接。yefan@vip.sina.com
【简介】叶帆[微软MVP]
【文章】叶帆文章列表
【软件】叶帆共享软件列表
最近评论
lvpeng52:我在无串口的笔记本电脑中安装wince 6.0, 按照http://www.cnblogs.com/walzer/archive/2008/07/10/744729.html方式安装了所有软件。

1. 但是发现 项目->属性->Debugger选项中没有CE Dump File Reader和Sample Device Emulator EXDI 2 Dr……
yefanqiu:知道这个软件,不过更深层次知识我目前也不清楚。
吴为仁:请问你熟悉神奇的Reflector软件吗?用它可以得到.NET的源码。请问Reflector输出的源码与真正的源码有什么区别?要注意那些问题?您这个MVP写一点此方面的东西,可否?
yefanqiu:在C#上直接调用该控件吧。
yefanqiu:这是支持两种不同字符集的函数(ANSI/Unicode)
文章分类
收藏
    相册
    叶帆照片
    【叶帆软件】
    [01]VB源码之友(V2.1.548)
    [02]API浏览器.net(V5.0)
    [03]叶帆成语词典(V2.0.8)
    [04]叶帆密码库(V1.2.8)
    【叶帆资源】
    DAO 2.0引擎
    叶帆快速通道
    Windows Embedded 专题
    中文MSDN
    叶帆圈子--工业自动化
    叶帆工作室(博客园)
    叶帆工控--工业自动化
    叶帆群组--工业应用开发
    微软中文技术论坛
    瑞康社区论坛
    叶帆友情链接
    张欣
    枕善居
    莫依
    葛涵涛
    郑建
    陈辉
    马宁
    马骐
    魏涛序
    黎波
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 .Net Micro Framework研究—IO读写收藏

    新一篇: .Net Micro Framework研究—串口操作 | 旧一篇: .Net Micro Framework研究—Digi开发板初探

     

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

                }

     

            }

        }

    发表于 @ 2007年10月28日 14:43:00|评论(loading...)|编辑

    新一篇: .Net Micro Framework研究—串口操作 | 旧一篇: .Net Micro Framework研究—Digi开发板初探

    评论

    #Tom.Zhou 发表于2008-04-20 19:57:31  IP: 203.173.130.*
    那是不是说当使用串口的时候不能使用那五个GPIO?
    又有点不明白的地方是Digi MF开发板中(2)和(11)这两组灯的关系是不是都是为显示连在PIN 0,1,2,5,6 的状态啊?只是当SW1的位置不同输出到LED上的位置不同?
    #yefanqiu 发表于2008-04-20 22:56:26  IP: 221.217.137.*
    对,自己在开发板上试一下就明白了
    #jacle169 发表于2008-05-17 18:39:55  IP: 125.89.143.*
    问题又来了,呵呵..找不到带IO的模拟器下载,请给我个下载地址,谢谢!
    2008-05-18 15:19:09作者回复
    过段时间我会专门把相关的SDK整理到blog上的
    #jacle169 发表于2008-06-04 19:26:13  IP: 116.16.67.*
    峰哥~!我在等你的sdk呀...上传后记得回我一下呀!!
    #yefanqiu 发表于2008-06-05 14:59:17  IP: 61.50.221.*
    好的,等忙过这阵我就会整理
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 叶帆