当前位置: 首页 > news >正文

淘宝app网站建设网站正在建设中模板免费下载

淘宝app网站建设,网站正在建设中模板免费下载,做seo营销网站,酒店定房网站开发大家好#xff0c;我是 Hello阿尔法#xff0c;这段时间参与了保定飞凌嵌入式技术有限公司举办的 ElfBoard 共创社招募活动#xff0c;并有幸成为了一名共创官#xff0c;官方寄来了一块 ELF 1 开发板#xff0c;开箱看这里 ELF 1 开箱初体验。 作为共创官#xff0c;我…大家好我是 Hello阿尔法这段时间参与了保定飞凌嵌入式技术有限公司举办的 ElfBoard 共创社招募活动并有幸成为了一名共创官官方寄来了一块 ELF 1 开发板开箱看这里 ELF 1 开箱初体验。 作为共创官我使用 ELF 1 完成了一个智能家居的小项目。除了 ELF 1 开发板之外还使用了一块其他厂商的 Linux 开发板 IMX6U主要原因是在多次抽奖中都没有抽中显示屏只有我的 IMX6U 有屏幕其实这样也正好符合项目背景带有屏幕的 IMX6U 作为智能家居的控制面板ELF 1 作为被控终端设备它可以是电灯、电扇、空调器也可以是冰箱、彩电、洗衣机……实现效果如下图所示 项目简介 IMX6U 模拟智能家居中的主控面板实时刷新显示时间、天气、空气质量、温湿度等信息实现对家居设备电灯、窗帘、通风扇的控制天气数据来自于心知天气ELF 1 模拟终端设备三个 LED 分别代表电灯、窗帘、通风扇ADC 模拟空气质量检测器温湿度则用来检测环境中的温湿度。IMX6U 和 ELF 1 两者通过以太网实现交互ELF 1 和 IMX6U 均基于 Linux 系统开发资源使用情况如下所示 ELF 1 开发板3 个 LED、ADC、温湿度传感器、以太网口IMX6U 开发板5inch RGB 显示屏、以太网口 IMX6U 工程 IMX6U 源码工程结构如图所示 IMX6U 源码工程以 LVGL 的 Linux 移植工程为基础具体实现请阅读 嵌入式 Linux 下的 LVGL 移植app 文件夹存放应用源码build 文件夹为编译输出目录ui 文件夹存放 UI 界面源码具体实现请阅读 基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面。 app app 文件夹包括有 cJSON 解析器、通信协议 Protocol、网络编程接口 Socket、天气获取、按键以及时间、温湿度数据更新等cJSON 是使用了一个开源的、C 语言编写的超轻量级 JSON 解析器关于 Protocol 请阅读 一个简洁实用的自定义通信协议socket 文件夹主要内容为 TCP 服务端和客户端的创建请阅读 Linux 下 socket 编程介绍及 TCP 客户端与服务端创建示例天气数据通过心知天气 API 获取相关实现代码如下 // weather.c int weather_init(void) {weather_client_fd client_init_socket();/* 组合 GET 请求 */sprintf(weather_buffer, GET_REQUEST_PACKAGE, DAILY_JSON, API_KEY, WUHAN);/* 发送请求 */client_send_data(weather_client_fd, weather_buffer, strlen(weather_buffer));/* 接收天气数据 JSON 格式*/client_receive_data(weather_client_fd, weather_json, weather_json_size);/* 解析天气数据 */cJSON_Daily_WeatherParse(weather_json, Weather_now);/* 更新天气显示 */memset(weather_buffer, 0, BUFFER_SIZE);sprintf(weather_buffer, %s / %s, Weather_now.text_day[0], Weather_now.text_night[0]);lv_label_set_text(ui_TextDay, weather_buffer);lv_label_set_text(ui_MinTemp, Weather_now.low[0]);lv_label_set_text(ui_MaxTemp, Weather_now.high[0]);lv_label_set_text(ui_outHum, Weather_now.humidity[0]);/* 更新天气图片 */int code *Weather_now.code_day[0] - 48;switch (code){case 0: lv_img_set_src(ui_weatherImg, ui_img_icons_00_png); break;......case 99: lv_img_set_src(ui_weatherImg, ui_img_icons_99_png); break;default: break;}client_close_socket(weather_client_fd);return 0; }以按键为例实现数据打包、发送相关代码 static void led_ryg_turn(int cmd, int code) {/* 组合命令 */msg_frame_t led_msg_frame;led_msg_frame.type LED_RYG;led_msg_frame.cmd cmd;led_msg_frame.code code;led_msg_frame.datalen 0;/* 打包命令 */msg_buf_t *_msg_buf pkg_frame(led_msg_frame);/* 发送按键命令 */server_send_data(client_fd, (char *)_msg_buf-buf_ptr, _msg_buf-buf_size); }static void btn1_click_cb(lv_event_t *event) {printf(Button1 clicked\n);static char flag 0;if(flag 0){flag 1;led_ryg_turn(LED_R, LED_ON);}else{flag 0;led_ryg_turn(LED_R, LED_OFF);} }static void btn2_click_cb(lv_event_t *event) {// ... }static void btn3_click_cb(lv_event_t *event) {// ... }int button_init(void) {lv_obj_add_event_cb(ui_Button1, btn1_click_cb, LV_EVENT_CLICKED, NULL);lv_obj_add_event_cb(ui_Button2, btn2_click_cb, LV_EVENT_CLICKED, NULL);lv_obj_add_event_cb(ui_Button3, btn3_click_cb, LV_EVENT_CLICKED, NULL);return 0; }数据接收、解析、命令执行相关代码 static int ctrl_dev_aht20(msg_frame_t *_msg_pack) {// ...return 0; }static int ctrl_dev_adc(msg_frame_t *_msg_pack) {printf(--- ctrl_dev_adc ---\r\n);uint16_t adc_raw (uint16_t)(_msg_pack-data[0] 8) _msg_pack-data[1];uint8_t pm2_5 adc_raw / 16;char pm2_5_src[4];printf(adc raw value: %d, pm2_5 value: %d \r\n, adc_raw, pm2_5);lv_arc_set_value(ui_Air, pm2_5);snprintf(pm2_5_src, sizeof(pm2_5_src), %d, pm2_5);lv_label_set_text(ui_AirValue, pm2_5_src);return 0; }static int ctrl_cmd_func(const msg_pkg_t *_msg_pkg) {printf(--- ctrl_cmd_func ---\r\n);switch(_msg_pkg-pkg-type){case AHT20: ctrl_dev_aht20(_msg_pkg-pkg); break;case ADC: ctrl_dev_adc(_msg_pkg-pkg); break;default: return -1;}return 0; }static void *recv_thread(void *arg) {recv_msg_buf-buf_ptrrecv_msg_buf-buf;while(1){if(server_receive_data(client_fd, (char *)recv_msg_buf-buf_ptr, (ssize_t *)recv_msg_buf-buf_size) 0){printf(thread recv \r\n);msg_buf_print(recv_msg_buf);/* 解析数据包命令 */msg_pkg_t *_msg_pkg unpkg_frame(recv_msg_buf-buf_ptr, recv_msg_buf-buf_size);/* 执行命令 */ctrl_cmd_func(_msg_pkg);} }return NULL; }/* 线程创建 */ pthread_create(recv_thread_id, NULL, recv_thread, NULL);ELF 1 工程 ELF 1 源码工程结构如图所示 src 文件夹存放源文件inc 文件夹存放头文件obj 为编译输出目录客户端创建、数据打包、发送、接收、命令执行与 IMX6U 工程实现类似不再介绍数据采集、LED 控制采用文件操作实现。 功能演示 抖音视频链接 更多内容 CSDN博客Hello阿尔法哔哩哔哩Hello阿尔法知乎Hello阿尔法
http://www.w-s-a.com/news/64030/

相关文章:

  • 措勤网站建设罗定城乡建设局网站
  • 苏州建网站流程wordpress不显示内容你
  • 网站流量数据golang建设网站
  • 2020电商网站排行榜如何开设网站
  • 绍兴seo网站管理创新的网站建站
  • 做网站需要的图片网站的视频怎么下载
  • 教人做家务的网站滕州网站建设网站行吗
  • 湖北专业的网瘾学校哪家口碑好seo百度百科
  • 保定网站制作软件网页制作工具程
  • o2o网站建设教程计算机培训班培训费用
  • 赤峰网站制作php智能建站系统
  • 做高防鞋 哪个网站能上架net网站开发net网站开发
  • 做网站公司郑州推广计划步骤
  • 网站建设计无形资产外国做美食视频网站
  • 创立一个网站需要什么网推技巧
  • 网站的会员功能怎么做wordpress主题开拓右边栏
  • 做个一般的网站要多少钱nas 建网站
  • 网页设计作品源代码彼岸花坊网站seo测评
  • 用什么软件做动漫视频网站好环保网站设计价格
  • 合肥网站设计服投稿网站源码
  • 为什么很多网站用php做上海口碑最好的装修公司排名
  • 运城网站推广找人做小程序要多少钱
  • 做外链哪个网站好seo诊断网站
  • 网站建设与管理考查方案上海公司免费起名
  • 哪个网站做h5好做汽车网站
  • 汝州网站制作住房和城乡建设部官网进行查询
  • 怎么做整人点不完的网站获取网站访客qq号码源码
  • 自建网站软件网站如何减少404跳转
  • 我想学制作网站吗公司起名网站十大排名
  • 广州白云手机网站建设淘宝店铺怎么推广