百度人脸产品套件-壁虎 2.灯光简单控制
goJhou 发布于2019-11-01 22:23 浏览:851 回复:2
0
收藏

本篇功能演示

https://jhou-bucket.oss-cn-shanghai.aliyuncs.com/2019-10-18%20%E5%A3%81%E8%99%8E%E6%B5%8B%E8%AF%84/2019-10-24%20%E7%81%AF%E5%85%89%E6%8E%A7%E5%88%B6/light%20demo.mp4

 

在拿到壁虎后,我对壁虎的外设极为感兴趣。经过了近期的简单研究,我决定给各位c#玩家一个惊喜。

那就是,本次套件的使用将全程使用C#编写。

没错,你没有看错,我将用c#编写程序和代码,跑在壁虎的安卓5.1上

好了,开头就都这了~接下去开始本篇内容

本篇目的:进一步了解壁虎的硬件预留和接口,测试出调用的方法

首先映入眼帘看到第一眼,就知道这设备顶上有一排补光灯。(真的是亮,但是亮度可以调节)

那第一步,就来新建工程,唤醒灯组吧!

首先,相信使用c#的小宝贝们一定知道,xamarin开发。该技术允许c#玩家开发安卓(手机、手表、电视)、IOS、win phone应用,简直是一大杀器,更重点是,似乎vs2017之后就可以安装。简直不要太爽快了。

ps:机缘巧合,up主听说xamarin已经有数年了,但从未使用过,总算有机会正式接触该技术。也是第一次使用,如有错误请多谅解。

 

 

话不多说,我们开始吧!

新建xamarin android xaml项目。(up主 工作中经常用到wpf,所以xaml的模式比较容易上手)

那首先先来个标准的hello world到壁虎中去。

将壁虎的系统打开开发者模式(关于设备,连点版本号5次)

随后插入产品附赠的调试线到电脑USB口上。

如果一切正常,VisualStudio的运行处就能看到设备名字和版本

 

 

点击运行,将hello world项目装入壁虎中

(抱歉,暂没摸索出如何截屏,插图方式硬核)

恭喜你,达成了小试牛刀!成功将c#项目运行于安卓之上!
(嗝~)

好的,我们来做一些简单的修改(!@#!@#%!@#%$!)

界面就变成了这样子~

接着我们来新建一个.net standard类库项目,这个项目将专注于设备的控制。第一个目的是控制上方的补光灯,取名暂时就叫GoJhou.Gekko.Controllers吧

将Class更名为LightController

根据《CB008-壁虎套件外设接口软件调用文档.docx》中的说明,我们仅需要对目录为"/sys/class/leds/wled/brightness"文件进行写入操作即可成功控制灯光。

这就极度方便!

最后我的LightController封装如下:

[AddINotifyPropertyChangedInterface]
    public class BaseController : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName]string PropertyName="")
        {
            PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
        }
    }
public class LightController : BaseController
    {
        private static LightController instance;

        public static LightController Instance
        {
            get
            {
                if (instance == null)
                    instance = new LightController();
                return instance;
            }
        }

        public LightController()
        {
            Brightness = 0;
        }

        private readonly string IOPath = "/sys/class/leds/wled/brightness";

        private int _brightness = 0;

        public int Brightness
        {
            get => _brightness;
            set
            {
                try
                {
                    //位操作,可以将目标值锁定在0~255的有效值范围内,以免勿输入了非法的值
                    value = value & 0xff;

                    //上方等效于下方
                    //if (value > 255)
                    //    value = 255;
                    //if (value < 0)
                    //    value = 256-value;

                    byte[] b = Encoding.UTF8.GetBytes(value.ToString());

                    using (FileStream fs = new FileStream(IOPath, FileMode.Create))
                    {
                        fs.Write(b, 0, b.Length);
                    }

                    _brightness = value;
                    OnPropertyChanged();
                }
                catch (Exception ex)
                {
                    //如果出现异常了,强制进入断点中断到此处
                    Debugger.Break();
                }
            }
        }
    }

 

最后再为UI稍作数据绑定,更新如下

 

后台代码

public partial class MainPage : ContentPage
    {
        public LightController LightController => LightController.Instance;


        public MainPage()
        {
            InitializeComponent();
        }
    }
收藏
点赞
0
个赞
共2条回复 最后由goJhou回复于2019-11-08 13:27
#3goJhou回复于2019-11-08 13:27:46
#2 nice凝狐回复
您好,请问《CB008-壁虎套件外设接口软件调用文档》这个文档怎么获取呢???官网上没找到,谢谢                                                                                                                   期待您的回复
展开

链接:https://pan.baidu.com/s/1KVGD_HZUAbC0KL15H1G0rw

提取码:h99q

0
#2nice凝狐回复于2019-11-07 14:51:28

您好,请问《CB008-壁虎套件外设接口软件调用文档》这个文档怎么获取呢???官网上没找到,谢谢

                                                                                                                  期待您的回复

0
TOP
切换版块