電子工程網
標題: BMG8200系列智慧桿智能網關 二次開發教程 [打印本頁]
作者: baimatech77 時間: 2020-11-25 10:08
標題: BMG8200系列智慧桿智能網關 二次開發教程
佰馬BMG8200網關,是佰馬科技專為智慧路燈桿、智能燈桿、5G路燈桿、多功能桿等場景應用而研發的智能網關,配置7路LAN口、1路WAN口、4路POE供電、2路千兆光口等,具有強大的交流與直接電源供給能力、設備接入能力、通信協議轉換、運算處理能力、聯動控制能力。智慧燈桿上眾多設備包括:智能照明、視頻監控、環保監測、氣象監測、LED 顯示屏、無線 WIFI 覆蓋、 公共廣播、一鍵報警,充電樁,微基站等,可以通過BMG8200 網關一站式接入。
智慧燈桿網關融入智能網關、邊緣計算等功能模塊,高性能的工業級ARM高端處理器,Linux 操作系統,集成Python開發環境和C語言開發環境,提供標準API接口及開發指導,為用戶的二次應用開發提供穩定快捷的平臺。
二次開發要求
此文檔只適用于佰馬科技智慧桿網關BMG8200,開始二次開發之前,請務必確認手上的設備是BMG8200系統智能網關。
操作系統要求:
64位CPU,2G內存,10G硬盤
二次開發只能在centos,redhat,ubuntu等linux系統,無法在windows系統上開發。
編程語言要求:
二次開發只能使用C、C++開發;需要開發者熟練掌握socket,linux設備文件操作。
軟件接口說明
1.串口對應設備文件
a) RS485對應的設備接口是/dev/ttyS1
2.讀取adc
int read_adc_raw(int adc_num)
參數說明:
adc_num: 取值1,2,用來指示讀取哪一路adc
返回值:返回一個0~4096的原始值
假設返回值是X,需要使用公式Y =(X/4096)*6.72 轉化成實際電壓值
3.設置GPIO輸入,輸出方向
int gpio_set_dir(unsigned int gpio_num, unsigned int dir)
參數說明:
gpio_num: 取值GPIO_DI1,GPIO_DI2或者GPIO_RELAY1, GPIO_RELAY2,指示要操作哪一路gpio
dir: 取值DIR_IN,DIR_OUT,控制要配置成輸入,還是輸出
返回值:
配置成功返回1,配置失敗返回0
4.獲取GPIO的值:
int gpio_get_val(unsigned int gpio_num, unsigned int *val)
gpio_num: 取值GPIO_DI1,GPIO_DI2或者GPIO_RELAY1, GPIO_RELAY2,指示要操作哪一路gpio
val: 對應gpio的值,有0,1兩個取值
返回值:
獲取成功返回1,獲取失敗返回0
5.配置GPIO的值
int gpio_set_val(unsigned int gpio_num, unsigned int val)
gpio_num: 取值GPIO_DI1,GPIO_DI2或者GPIO_RELAY1, GPIO_RELAY2,指示要操作哪一路gpio
val:只能0或者1,其它值無法配置
返回值:
配置成功返回1,配置失敗返回0
編碼編譯
準備交叉編譯環境
如要您已經拿到我司的交叉編譯工具,那么可以先把交叉編譯工具拷貝到linux系統。
現假設您已經把交叉編譯工具拷貝到linux系統,比如拷到/opt/,接下來是解壓縮交叉編譯工具:
tar xzvf BMG8200_toolchain.tgz –C /opt/
配置交叉編譯環境:
export PATH=$PATH:"/opt/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin/"
在命令行輸入命令:
mipsel-openwrt-linux-gcc,如果命令可以運行, 說明編譯環境已經正常
一個簡單的例子:
下面以一個簡單例子來說明如果進行網關二次開發:
比如現在要讀取adc1的電壓值,DI1的開關量,控制繼電器閉合,代碼如下:
#include
#include
#include /* 必須 include , GPIO_DIx, GPIO_RELAYx定義在這個頭文件 */
int main(void)
{
int ret;
int raw_adc;
float voltage;
unsigned int val;
printf("start to test \n");
raw_adc = read_adc_raw(1); /* 讀ADC通道1 */
printf("raw adc 1 value is %d\n", raw_adc);
voltage = (float)raw_adc / 4096;
voltage *= 6.72;
printf("adc1 voltage is %.3f\n", voltage);
ret = gpio_set_dir(GPIO_DI1, DIR_IN); /* 配置DI1為輸入 */
if (ret == 1) {
ret = gpio_get_val(GPIO_DI1, &val);
printf("GPIO_DI1 value is %d\n", val);
} else {
printf("Fails to set di dir %d\n", GPIO_DI1);
}
ret = gpio_set_dir(GPIO_RELAY1, DIR_OUT); /* 配置RELAY1為輸出 */
if (ret == 1) {
val = 1;
ret = gpio_set_val(GPIO_RELAY1, val);
} else {
printf("Fails to set relay dir %d\n", GPIO_RELAY1);
}
return 0;
}
Makefile的內容如下:
LIB_DIR=/opt/staging_dir/target-mipsel_24kc_musl /usr/lib/
INCLUDE_DIR=/opt/staging_dir/target-mipsel_24kc_musl/usr/include
CC= mipsel-openwrt-linux-gcc
CFLAGS=-I $(INCLUDE_DIR)
LDFLAGS=-L $(LIB_DIR)
all: test
%.o:%.c
$(CC) $(CFLAGS) -c -o $@ $^
test: test.o
$(CC) $(LDFLAGS) -o $@ $^ -lgpio
我司會提供該程序代碼;您可以在該示例代碼上直接修改。
如果上面的交叉編譯環境配置好了,那么直接make,會生成test的可執行程序,如下圖:
編譯好的可執行文件test現在可以tftp到設備主板上運行,比如你的電腦IP是192.168.1.10;(注:路由器通過網線與電腦相連,接LAN口中的任何一個)
a. 那么先在你的電腦上運行tftpd32程序,把當前目錄改成test文件所在的目錄
b. telnet 192.168.1.1到設備,默認用戶名跟密碼都是admin
c. 運行命令tftp –r test –g 192.168.1.10 //下載test到設備
d. chmod a+x test //修改程序為可運行
e: ./test //運行程序
如果程序調試OK,可以把該程序放到/usr/bin/目錄下
f. 如果要把該程序配置成開機運行,那么只要在/etc/rc.local加上該程序,如下圖:
后面的&是必須的
歡迎光臨 電子工程網 (http://m.qingdxww.cn/) |
Powered by Discuz! X3.4 |
主站蜘蛛池模板:
亚洲愉拍一区二区精品|
天天插天天操天天干|
我想看一级黄色毛片|
色综合天天五月色|
一本岛高清v不卡免费一三区|
97人妻AV天天澡夜夜爽|
小向美奈子av|
在醉酒熟睡夫面前侵犯我在线播放
|
四虎影视永久免费观看网址|
人人爱干|
特级淫片日本高清视频|
天堂 在线最新版在线|
色字当头|
99久久蜜臀亚洲AV无码精品|
久久青草热热在线精品|
性做久久久久免费观看|
三级国产精品|
青春草在线观看播放免费视频|
婷婷色九月|
亚洲国产欧美日韩一区二区三区|
99热久久久无码国产精品性麻豆|
日韩 国产 中文 无码|
一级黄免费|
亚洲成a|
亚洲爱爱网站|
亚洲精品视频在线播放|
大肚婆孕妇网|
青娱乐极品视觉盛宴av|
视频一区二区在线观看|
青青草国产精品久久|
四虎欧美|
90后美女乳沟|
色妺妺免费影院|
午夜视频福利在线|
色综合欧美|
天天晚上开着日|
99久久久精品|
无人影院在线播放|
亚洲欧美专区精品伊人久久|
五月婷婷丁香花|
亚洲国产一区二区a毛片|