夸克之书

  • 首页
  • 科普
  • 笔记
  • .NET/C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
夸克之内,别有洞天
  1. 首页
  2. 树莓派
  3. 正文

树莓派.Net Core Iot入门系列篇(1):点亮一个LED灯

2019-09-18 5396点热度 3人点赞 0条评论

前言

这是.Net Core Iot系列入门教程中的第一篇,旨在为大家提供一个思路:不懂底层没关系,照样可以玩得转IOT。这句话不是说底层不重要,底层(操作系统、计算机网络、C等)依然很重要,要想走得更远,就要尽可能的了解并学习这些相关知识。

先不说这些,回到主题,来看如何使用C#来控制GPIO。不得不说,微软老大哥确实牛逼,直接封装了树莓派等开发板的GPIO操作类库,可以通过Nuget安装使用。

注意

System.Device.GPIO 仍处于早期预览状态。并且目前仅支持部分 Raspberry Pi 、 Pine64 和 Hummingboard 的板子。

前提

在继续往下之前,默认是具备了以下这些条件的。

  • 有树莓派的开发板,且安装的是官网操作系统(未测试第三方操作系统)
  • 树莓派能够联网
  • 按照上一篇的教程安装了.Net Core Sdk
  • 有一台安装了visual studio 2019的计算机,并安装了.Net Core SDK(2.2及以上)

正文

1、新建项目

使用VS2019创建一个.Net Core 控制台应用程序,然后使用Nuget安装System.Devices.Gpio和Iot.Device.Bindings(如果仅操作GPIO可以不安装Iot.Device.Bindings)

%title插图%num

安装完成之后是这样的。

%title插图%num

2、编写程序

然后将替换Program中的程序。

using System;
using System.Device.Gpio;
using System.Threading;

namespace _1.Gpio
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Start!");
            try
            {
                int pin = 7;
                using (GpioController controller = new GpioController(PinNumberingScheme.Board))
                {
                    //注册退出事件
                    Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs eventArgs) => 
                    {
                        if (controller.IsPinOpen(pin))
                        {
                            controller.ClosePin(pin);
                        }
                        controller.Dispose();
                        Console.WriteLine("Close pin and exit successful!");
                    };
                    // 设置引脚
                    controller.OpenPin(pin, PinMode.Output);
                    if (!controller.IsPinOpen(pin))
                    {
                        Console.WriteLine($"Set pin {pin} output mode failed.");
                    }
                    while (true)
                    {
                        // 打开
                        controller.Write(pin, PinValue.High);
                        Thread.Sleep(500);
                        // 关闭 
                        controller.Write(pin, PinValue.Low);
                        Thread.Sleep(500);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

3、安装部署

程序写好之后是不能直接在Windows当中运行的,虽然说.Net Core是跨平台的,但是Windows没有GPIO控制器,运行会报错。

%title插图%num
Windows中运行提示错误

所以需要将程序部署到树莓派中运行。

右键单击项目,选择发布

%title插图%num

发布培配置文件如下

%title插图%num

配置选择Debug,方便调试。正式发布的话,选择Release。

部署模式可以选择框架依赖或者独立,建议选择框架依赖,不会包含.net core的二进制文件,生成的内容只有项目相关的。

目标运行时一定要选择linux-arm,不然在树莓派中无法运行。

保存之后点击发布,发布成功之后将publish文件夹复制到树莓派当中。至于如何上传,选择自己喜欢的上传方式即可。我用的是FileZilla通过sftp上传。

4、运行

首先接入LED灯,对应程序中的7号引脚(硬件编码)。

%title插图%num
树莓派引脚

然后通过SSH登录到树莓派当中,进入publish文件夹当中。运行发布后代码

sudo dotnet 1.Gpio.dll

可以看到LED灯开始闪烁。

%title插图%num

5、调试

写程序免不了会出现问题,出现问题就要调试程序。而程序是运行在树莓派当中的,可以通过Visual Studio自带的SSH远程调试功能对运行在树莓派当中的程序进行调试。

在树莓派中运行发布后的程序,然后点击调试菜单当中的“附加到进程”

%title插图%num

按照图示步骤连接到树莓派。

注意:要开启树莓派ROOT登录。开启方式传送门

%title插图%num

(1)连接类型选择SSHbr>(2)连接目标输入root@树莓派IP地址(3)点击刷新
(4)找到程序的运行进程,点击附加。

调试代码类型选择托管

%title插图%num

第一次调试时间要长一点,可能还会报一个超时的错误,不用管。然后就可以对程序进行调试了。

%title插图%num

可以看到已经进入断点,开始调试了。

Demo和参考资料

Demo下载:Github

参考资料:
(1)张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用
(2)https://docs.microsoft.com/en-us/uwp/api/windows.devices.gpio

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2021-05-24

afirefish

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论
放松一下
https://www.quarkbook.com/wp-content/uploads/2021/05/凤凰传奇-海底(Live).flac
分类
  • .NET/C#
  • Linux
  • 树莓派
  • 物联网
  • 科普
  • 笔记
  • 算法
  • 默认
最新 热点 随机
最新 热点 随机
Windows Server 2022安装Intel I225-V驱动 System.Text.Json与Newtonsoft.Json Json序列化与反序列化性能对比 R86S散热改造 Windows移除多余输入法'Unknown Locale (qaa-Latn)' 【算法】具有层级关系的城市,例如"中国 广州","中国 浙江 杭州" 一个 List 最后应该是转成树状图输出 树莓派安装Golang环境
Windows Server 2022安装Intel I225-V驱动
基于.NET 6和Vue开发的企业级前后端分离权限管理开发框架 OpenWrt x86安装Frpc 树莓派等ARM开发板C#串口通信(.NET Core) 在ASP.NET Core中使用Session Visual Studio调试时不中断自定义异常 解决问题:The context cannot be used while the model is being created
最近评论
afirefish 发布于 2 个月前(11月28日) 非常感谢,非常棒!
》随缘《 发布于 3 个月前(11月20日) 最新【一键处理】方法: https://github.com/MrXhh/VSTools/rele...
管理员 发布于 8 个月前(06月22日) emmmm....服务器好一点???
wking 发布于 9 个月前(05月23日) 请问贵博客是怎么优化的,网页响应速度非常快。我博客同样的WordPress和kratos主题,但点一...
去月球 发布于 1 年前(01月17日) 如果使用CSI的摄像头应该怎么修改命令呢
书签
  • 打赏
  • 毒鸡汤
  • 米店
  • 金鱼直播间

COPYRIGHT © 2022 quarkbook.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备15036129号-9

登录
注册|忘记密码?