C# Net6通过System.Device.Gpio.GpioController实现控制Linux Arm工控机LED指示灯

28 篇文章 50 订阅

0、背景

GPIO是单片机的引脚输入输出功能,在进行嵌入式单片机研发时一般都会有关于LED指示灯的控制,一般是向GPIO接口中写入高低电平实现LED指示灯的亮与灭。

1、实现环境

硬件设备(工控机):辉为科技BOXPC820
操作系统:Linux hw335x-core 4.19.94-gbe5389fd85 #89 PREEMPT Mon Sep 6
19:27:53 CST 2021 armv7l GNU/Linux。
LED指示灯:1路电源指示灯,3路用户可定义LED,默认1路为系统心跳灯,因此剩余2路用户自定义LED(LED编号分别为113-红,116-绿)。
设备默认如下图:
在这里插入图片描述

2、LED设备初始化

通过C# Net6程序控制LED指示灯之前,需要对剩余的2路可定义LED设备进行初始化定义,具体如下:

113号LED指示灯初始化

echo 113 > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio113/direction

113号LED指示灯置亮测试

echo 1 > /sys/class/gpio/gpio113/value

在这里插入图片描述
113号LED指示灯置灭测试

echo 0 > /sys/class/gpio/gpio113/value

116号LED指示灯初始化

echo 116 > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio116/direction

116号LED指示灯置亮测试

echo 1 > /sys/class/gpio/gpio116/value

在这里插入图片描述
116号LED指示灯置灭测试

echo 0 > /sys/class/gpio/gpio116/value

3、C# Net6编程实现控制LED指示灯的亮灭

LED指示灯初始化以后,就可以通过程序控制指示灯的亮灭了,步骤如下:
1、在VS2022中创建一个控制台应用程序,比如工程名称为ConsoleAppGpioTest。(选择net6)
2、鼠标右键工程依赖项->管理NuGet程序包(N)…,在依赖项中安装System.Device.Gpio包。
3、修改Program.cs代码如下:

using System;

namespace ConsoleAppGpioTest
{
    static class Program
    {
        public static void Main(string[] args)
        {
            int pinNumber = 113;                //保存LED指示灯编号
            string value = "High";              //High为高电平-亮,Low为低电平-灭
            if (args.Length > 0)
            {
                int.TryParse(args[0], out pinNumber);
            }
            if (args.Length > 1)
            {
                value = args[1];
            }
            Console.WriteLine($"测试pinNumber = {pinNumber}, Value = {value}");
            using (System.Device.Gpio.GpioController controller = new System.Device.Gpio.GpioController())
            {
                controller.OpenPin(pinNumber);          //打开指定编号LED设备
                if (value == "High")
                {
                    controller.Write(pinNumber, System.Device.Gpio.PinValue.High);          //向指定编号的LED设备写入高电平信号-亮
                }
                else
                {
                    controller.Write(pinNumber, System.Device.Gpio.PinValue.Low);           //向指定编号的LED设备写入低电平信号-灭
                }
                controller.ClosePin(pinNumber);         //关闭指定编号LED设备
            }
        }
    }
}

4、编译此项目,并把编译后的文件发布到工控机/opt/apps/ConsoleAppGpioTest目录下,如下:
在这里插入图片描述
5、通过程序控制113号LED置亮

dotnet ConsoleAppGpioTest.dll 113 High

执行如下:
在这里插入图片描述
在这里插入图片描述
6、通过程序控制116号LED置亮

dotnet ConsoleAppGpioTest.dll 116 High

执行如下:
在这里插入图片描述
在这里插入图片描述
7、控制113号LED灯灭

dotnet ConsoleAppGpioTest.dll 113 Low

8、控制116号LED灯灭

dotnet ConsoleAppGpioTest.dll 116 Low
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值