边缘计算网关二次开发指导手册

库函数接口介绍

(适用于:BMG800系列)

目录

1. 获取温湿度(硬件设备为sht10)

2. 获取大气压(硬件设备为bmp180)

3. 读取ADC值(硬件设备为ms1112)

4. 状态灯控制(硬件设备为pcal6416)

5. GPIO控制继电器

5.1设置继电器状态

5.2 查询继电器状态

6. DI控制操作

7. COM口

BMG800边缘计算网关,是一款功能强大的智能网关。该系列网关盒子,采用工业级ARM处理器, DDR3 内存最大1GB(可选),和大容量 FLASH,为边缘节点业务提供强大计算资源, 有效分担云端负荷。BMG800系列边缘计算网关采用Linux 操作系统,集成Python开发环境和C语言开发环境,提供标准API接口及开发指导,为用户的二次开发提供稳定快捷的平台。

边缘计算网关二次开发,首先定义的库函数、宏定义包含在了libgeneral.so动态库中,其次使用时需要包含头文件:

#include

#include

1. 获取温湿度(硬件设备为sht10)

原型:int get_humidity_tempareture(sht10_st *value)

参数:sht10_st结构体指针,读取的结果填充该结构体。结构体定义见后面

返回值:0-成功,-1 - 参数错误,-2 - 设备节点不存在,-3 - 读取失败

typedef struct{

int humidity;  // 单位:mRH到RH得除以1000

int temperature;//单位:m℃到℃得除以1000

}sht10_st;

2.获取大气压(硬件设备为bmp180)

原型:int get_pressure_temparature(atmos_st *value)

参数:atmos_st结构体指针,读取的结果填充该结构体。结构体定义见后面

返回值:0-成功,-1 - 参数错误,-2 - 设备节点不存在,-3 - 读取失败

typedef struct{

int temperature;

int pressure;  //单位:Pa

}atmos_st;

3.读取ADC值(硬件设备为ms1112)

原型:int adc_channel_get(int channel_no,int *value)

参数:channel_no - 通道 (取值范围1-8),int型指针-adc采样结果。

返回值:0-成功,-1 - 参数错误,-2 - 设备节点不存在,-3 - 读取失败

该函数原始的adc,还需要原始值转为采样电压。

采样电压 = ( (*value) * 2.048)/32768/0.4,单位= V

若输入的为电流模式,需进一步换算,输入电流 = 采样电压/250,电流单位为A

4.状态灯控制(硬件设备为pcal6416)

原型:int led_control_set(led_num_e led_no,led_state_e enable)

参数: led_no - led编号,enable - led设置状态

返回值:0-成功,-1 - 参数错误,-2 - 设备节点不存在,-3 - 设置失败

typedef enum {

LED_SINGAL_C,

LED_SINGAL_B,

LED_SINGAL_A,

LED_WIRELESS,

LED_GPS,

LED_ONLINE,

}led_num_e;

typedef enum{

LED_OFF,

LED_ON,

}led_state_e;

5.GPIO控制继电器

5.1设置继电器状态

原型:int gpio_direction_output(int gpio_no,int state)

参数:gpio_no: gpio编号,state: 0 断开(低电平),1 闭合(高电平)

返回值:0-成功,负数-失败

5.2 查询继电器状态

原型:int  gpio_get_value(int gpio_no,int *gpio_state)

参数:gpio_no: gpio编号,int型指针: 存放读取结果,*gpio_state=0 当前继电器断开(低电平), *gpio_state =1 当前继电器闭合(高电平)

返回值:0-成功,负数-失败

继电器对应的GPIO编号:(内核中已经注册了继电器管脚,可直接用提供的gpio函数控制):

#define RELAY_1_BY_GPIO  GET_CPU_RELAY_GPIO(3)

#define RELAY_2_BY_GPIO  GET_CPU_RELAY_GPIO(2)

#define RELAY_3_BY_GPIO  GET_CPU_RELAY_GPIO(4)

#define RELAY_4_BY_GPIO  GET_CPU_RELAY_GPIO(1)

RELAY_1_BY_GPIO - RELAY_4_BY_GPIO分别对应继电器1到继电器4

6. DI控制操作

DI对应的GPIO编号:

#define GPIO(n,x)       ((n-1)*32 + x)

#define GPIO_DI1_IN_EN          GPIO(4,28)

#define GPIO_DI2_IN_EN          GPIO(4,27)

#define GPIO_DI3_IN_EN          GPIO(4,26)

#define GPIO_DI4_IN_EN          GPIO(4,25)

GPIO_DI1_IN_EN - GPIO_DI4_IN_EN分别对应DI1到DI4

linux应用控制gpio的方法如下:

以下为控制DI1的操作过程参考:

6.1 进入 /sys/class/gpio/ 目录

6.2 其次如下

echo 124 > export

//124=(4-1)*32 + 28

//GPIO(n,x)->((n-1)*32 + x)

//GPIO_DI1_IN_EN->GPIO(4, 28)

6.3 此时会产生一个gpio124 的目录.

6.4  cd gpio124

6.5 关注以下几个文件:

direction     这个文件是控制你是输出还是输入模式

如果想设置为输入:echo in > direction

如果想设置为输出:echo out > direction

value        这个文件记录当前状态

为输出时:

输出高电平:echo 1 > value

输出低电平:echo 0 > value

为输入时:

当前的输入状态

edge         这个控制中断触发模式

无: echo none > edge

上升沿触发:echo rising > edge

下降沿触发:echo falling > edge

轮询:echo both >edge

6.6 关闭这个GPIO控制。

cd /sys/class/gpio/

echo 124 > unexport

以上为控制DI1的操作过程参考

7.COM口

各com口对应的设备节点如下:

Com2-"/dev/ttymxc1"

Com3-"/dev/ttymxc2"

Com4-"/dev/ttymxc3"

Com5-"/dev/ttymxc6"

Com6-"/dev/ttymxc4"

Com7-"/dev/ttymxc5"

Com口可以直接用文件操作函数处理(open/read/write/close等)进行初始化和读写。

边缘计算网关linux开发,边缘计算网关(BMG800系列)二次开发指导手册相关推荐

  1. Linux下使用WPS做office的二次开发

    Linux下使用WPS做office的二次开发 序 上个版本WPS在Linux上就已经支持二次开发了,可以直接去看官网相关的介绍.https://open.wps.cn/ 我们选择WPS的客户端进行二 ...

  2. 织梦二次开发写php,PHP教程—DedeCMS二次开发(二)

    织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概念进行明确分析和定位. ...

  3. 2013汇总计算 广联达gcl_36h就可成造价高手:广联达GTJ2018实操指导手册,实用

    一入造价深似海,苦算算量难下班 36h就可成造价高手:广联达GTJ2018实操指导手册,实用 很多刚进入造价行业的朋友,不会使用造价软件,每天一个劲的算算量,还是要加班到深夜才能做完工作,其实算量软件 ...

  4. abaqus python二次开发攻略_基于CAE二次开发进行弹簧批量建模

    一. 为什么要进行弹簧批量建模 当一个公司或者学者从事科研任务时,往往通过有限元进行建模分析,建模的时间通常与工作效率挂钩.例如ABAQUS/CAE建模,想必很多老用户都有某种共同的感受,那就是实体模 ...

  5. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  6. python二次开发bim软件_BIM软件的二次开发有哪些工具?API工具你用过吗?

    今天跟大家聊一聊api二次开发的问题,在传统的CAD软件或者现有的BIM软件都涉及到一个软件内核的问题.因为内核软件多由外国开放的,针对该软件所适应的设计规范往往都是内置了外国的设计规范,而国内不能过 ...

  7. 鼎捷ERP二次开发教程 Tiptop GP开发资料大全 Tipto开发实战经验 鼎捷开发实战例子 Tiptop GP二次开发项目例子 4GL开发Demo 鼎捷二次开发完整例子 鼎捷ERP二次开发入门

    本人在ERP实施公司做顾问四五年,参与企业实施ERP十多个项目,非常熟悉企业ERP流程,在实施过程遇到众多问题,提出了不少根据企业具体情况的解决方案. 曾经参与鼎捷Tiptop GP实施十多个项目,具 ...

  8. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  9. 使软件可二次开发_基于C++的?UG二次开发

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以 ...

  10. sw二次开发 python_基于C#的SolidWorks二次开发.doc

    摘要: 气动电阻点焊钳已经被各大汽车制造厂商广泛运的用于汽车焊接工艺中.它以无污染.压力稳定.动作敏捷等优点逐步替代了国内常见的液压传动焊钳,改变了液压传动滞缓的现象,从而达到了焊接循环的要求.本次毕 ...

最新文章

  1. 给你30秒的时间,你会用Excel制作出一个抽奖功能吗?
  2. 数据结构算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)...
  3. cocos2dx动作讲解
  4. C#中Path类的常用方法
  5. CodeForces - 1287C Garland(贪心)
  6. leetcode 328. Odd Even Linked List | 328. 奇偶链表(Java)
  7. SAP Commerce Cloud 2011装好之后,访问Accelerator时遇到错误
  8. 休息一下,或者:如何使用Java 12制作出色的拼图游戏
  9. STL14-set/multiset容器
  10. Scala学习--《Scala编程》
  11. Freebsd上使用pf防火墙
  12. 获取URL Schema
  13. 696.计数二进制子串(力扣leetcode) 博主可答疑该问题
  14. Oracle数据库下载安装教程
  15. adb 静默安装_android 非root实现静默安装
  16. window7 右下角图标消失解决方法
  17. 用java编程实现java代码的次行代码风格转化为尾行代码风格
  18. 2021.3.8-第一次MD作业
  19. Npm 安装提示 EUNSUPPORTEDPROTOCOL 错误
  20. 记一次流量分析实战——安恒科技(八月ctf)

热门文章

  1. web安全漏洞加固方案简析
  2. Chrome浏览器取代火狐的十大理由
  3. matlab画二维颜色深浅,MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 colorbar
  4. 分布式光伏发电并网无功补偿问题
  5. Retrofit解析网页Json数据简单实例
  6. runfile python_python文件执行路径问题
  7. windows系统用什么web服务器好_墙体保温系统用什么材料比较好
  8. vb6 datagrid表格垂直居中_Word文档中表格的定位方式
  9. 正确的 send recv 行为
  10. shell脚本一键安装nginx