【XR806开发板试用】基于XR806实现智能小车

一、实验功能:

1、 基于XR806实现WIFI连接路由器
2、 XR806设备创建TCP socket服务器,局域网内通过PC端TCP客服端连接XR806 TCP服务器进行指令控制小车运行(指令A:前进、B:后退、C:左转、D:右转、I:停止)。
3、 小车行进由GPIO控制电机转动,行进速度通过XR806硬件定时器实现GPIO的PWM脉宽调制来控制小车行进速度。
4、 创建双线程实现智能小车,一个线程负责小车运行,一个线程主要用于TCP socket服务器完成与TCP客服端的指令收发。
实物图:
在这里插入图片描述

二、开发环境安装配置

开发环境安装配置参考https://aijishu.com/a/1060000000291606博文,实现基于优麒麟ubuntukylin-20.04,使用的OpenHarmony代码版本是1.0.1_release。

鸿蒙系统固件烧录参考了下面这个贴子:
https://aijishu.com/a/1060000000287250 全志 XR806 OpenHarmony 鸿蒙系统固件烧录。
tcp socket通信参考帖子:
https://aijishu.com/a/1060000000286948 【XR806开发板试用】xr806使用tcp socket与手机通信

三、硬件连接电路

小车驱动板电路图
电源电路:输入7.2V-12V电源,通过LM2596S稳压IC输出5V电源
在这里插入图片描述

车轮驱动电路,采用L293芯片驱动电机。EN使能默认悬空为高电平,只需控制电机的GPIO口输出高低电平即可实现车轮的转动,如车轮电机T1,控制GPIO口为PD
在这里插入图片描述
XR806开发板接口图如下:
在这里插入图片描述

电机控制信号与XR806开发板IO口定义:
在这里插入图片描述

四、项目实现
参考了官方的点灯教程
创建工程
在device/xradio/xr806/ohosdemo中新建一个文件夹,并命令为smart_car。
在文件夹中新建文件
~/share/XR806/openharmony/device/xradio/xr806/ohosdemo/smart_car$ tree -L 2 . ├── BUILD.gn └── smart_car ├── BUILD.gn └── main.c ├── motor.h └── motor.c ├── tcp_net_socket.h └── tcp_net_socket.c
修改device/xradio/xr806/ohosdemo/smart_car/BUILD.gn
`import(“//device/xradio/xr806/liteos_m/config.gni”)

static_library(“app_smart_car”) {
configs = []

sources = [
“src/main.c”,
“src/tcp_net_socket.c”,
“src/motor.c”,
]

cflags = board_cflags

include_dirs = board_include_dirs
include_dirs += [
“//kernel/liteos_m/kernel/arch/include”,
“//base/iot_hardware/peripheral/interfaces/kits”,
“//utils/native/lite/include”,
“//foundation/communication/wifi_lite/interfaces/wifiservice”,
“//third_party/lwip/src/include”,
“//third_party/cJSON”,
]
}`
电机控制信号与XR806开发板IO口定义:

#define GPIO_ID_PA11 11
#define GPIO_ID_PA12 12
#define GPIO_ID_PA13 13
#define GPIO_ID_PA19 19
#define GPIO_ID_PA20 20
#define GPIO_ID_PA21 21
#define GPIO_ID_PA22 22
#define GPIO_ID_PA23 23

#define GPIO_ID_PB3 27
#define GPIO_ID_PB4 28
#define GPIO_ID_PB5 29
#define GPIO_ID_PB6 30
#define GPIO_ID_PB7 31
#define GPIO_ID_PB14 38
#define GPIO_ID_PB15 39#define FRONT_LEFT_F_PIN        GPIO_ID_PA12 
#define FRONT_LEFT_F_SET        IoTGpioSetOutputVal(FRONT_LEFT_F_PIN,1);
#define FRONT_LEFT_F_RESET      IoTGpioSetOutputVal(FRONT_LEFT_F_PIN,0);#define FRONT_LEFT_B_PIN        GPIO_ID_PA13 
#define FRONT_LEFT_B_SET        IoTGpioSetOutputVal(FRONT_LEFT_B_PIN,1);
#define FRONT_LEFT_B_RESET      IoTGpioSetOutputVal(FRONT_LEFT_B_PIN,0);#define FRONT_RIGHT_F_PIN       GPIO_ID_PB7
#define FRONT_RIGHT_F_SET       IoTGpioSetOutputVal(FRONT_RIGHT_F_PIN,1);
#define FRONT_RIGHT_F_RESET     IoTGpioSetOutputVal(FRONT_RIGHT_F_PIN,0);#define FRONT_RIGHT_B_PIN       GPIO_ID_PB5
#define FRONT_RIGHT_B_SET       IoTGpioSetOutputVal(FRONT_RIGHT_B_PIN,1);
#define FRONT_RIGHT_B_RESET     IoTGpioSetOutputVal(FRONT_RIGHT_B_PIN,0);#define BEHIND_LEFT_F_PIN       GPIO_ID_PA19
#define BEHIND_LEFT_F_SET       IoTGpioSetOutputVal(BEHIND_LEFT_F_PIN,1);
#define BEHIND_LEFT_F_RESET     IoTGpioSetOutputVal(BEHIND_LEFT_F_PIN,0);#define BEHIND_LEFT_B_PIN       GPIO_ID_PA20
#define BEHIND_LEFT_B_SET       IoTGpioSetOutputVal(BEHIND_LEFT_B_PIN,1);
#define BEHIND_LEFT_B_RESET     IoTGpioSetOutputVal(BEHIND_LEFT_B_PIN,0);#define BEHIND_RIGHT_F_PIN      GPIO_ID_PB6
#define BEHIND_RIGHT_F_SET      IoTGpioSetOutputVal(BEHIND_RIGHT_F_PIN,1);
#define BEHIND_RIGHT_F_RESET    IoTGpioSetOutputVal(BEHIND_RIGHT_F_PIN,0);#define BEHIND_RIGHT_B_PIN      GPIO_ID_PB4
#define BEHIND_RIGHT_B_SET      IoTGpioSetOutputVal(BEHIND_RIGHT_B_PIN,1);
#define BEHIND_RIGHT_B_RESET    IoTGpioSetOutputVal(BEHIND_RIGHT_B_PIN,0);

小车电机驱动配置


//左前
#define FRONT_LEFT_GO    FRONT_LEFT_F_SET; FRONT_LEFT_B_RESET//前进
#define FRONT_LEFT_BACK  FRONT_LEFT_F_RESET; FRONT_LEFT_B_SET//后退
#define FRONT_LEFT_STOP  FRONT_LEFT_F_RESET; FRONT_LEFT_B_RESET//停止//右前
#define FRONT_RIGHT_GO     FRONT_RIGHT_F_SET;  FRONT_RIGHT_B_RESET
#define FRONT_RIGHT_BACK   FRONT_RIGHT_F_RESET;FRONT_RIGHT_B_SET
#define FRONT_RIGHT_STOP   FRONT_RIGHT_F_RESET;FRONT_RIGHT_B_RESET//左后
#define BEHIND_LEFT_GO     BEHIND_LEFT_F_SET;BEHIND_LEFT_B_RESET
#define BEHIND_LEFT_BACK   BEHIND_LEFT_F_RESET;BEHIND_LEFT_B_SET
#define BEHIND_LEFT_STOP   BEHIND_LEFT_F_RESET;BEHIND_LEFT_B_RESET//右后
#define BEHIND_RIGHT_GO    BEHIND_RIGHT_F_SET;BEHIND_RIGHT_B_RESET
#define BEHIND_RIGHT_BACK  BEHIND_RIGHT_F_RESET;BEHIND_RIGHT_B_SET
#define BEHIND_RIGHT_STOP  BEHIND_RIGHT_F_RESET;BEHIND_RIGHT_B_RESET//全局变量定义
#define SPEED_DUTY 40//默认占空比 按1ms最小分辨率 周期50ms计算
unsigned int speed_count=0;//占空比计数器 50次一周期
char front_left_speed_duty=SPEED_DUTY;
char front_right_speed_duty=SPEED_DUTY;
char behind_left_speed_duty=SPEED_DUTY;
char behind_right_speed_duty=SPEED_DUTY;

定时器实现小车PWM控制
`void timer_callback(void *arg)
{
/sec_count++;
printf(" timer irq: %d\n\r", sec_count);
IoTGpioSetOutputVal(11, sec_count%2);
/

tick_1ms++;
if(tick_1ms >= 10)
{tick_1ms = 0;speed_count++;tick_5ms++;if(speed_count >= 50){speed_count = 0;}CarMove();
}	

}
int timer_init(void)
{
HAL_Status status = HAL_ERROR;
TIMER_InitParam param;

param.arg = NULL;
param.callback = timer_callback;
param.cfg = HAL_TIMER_MakeInitCfg(TIMER_MODE_REPEAT,      /*timer mode*/TIMER_CLK_SRC_HFCLK,      /*HFCLOCK*/TIMER_CLK_PRESCALER_4); /*CLK_PRESCALER*/
param.isEnableIRQ = 1;
param.period = COUNT_TIME * (HFCLOCK / CLK_PRESCALER);status = HAL_TIMER_Init(TIMERID, &param);
if (status != HAL_OK)printf("timer int error %d\n", status);return status;

}小车前进函数,根据占空比驱动电机转动void CarMove(void)
{
//左前轮
if(front_left_speed_duty > 0)//向前
{
if(speed_count < front_left_speed_duty)
{
FRONT_LEFT_GO;
}else
{
FRONT_LEFT_STOP;
}
}
else if(front_left_speed_duty < 0)//向后
{
if(speed_count < (-1)*front_left_speed_duty)
{
FRONT_LEFT_BACK;
}else
{
FRONT_LEFT_STOP;
}
}
else //停止
{
FRONT_LEFT_STOP;
}

	//右前轮
if(front_right_speed_duty > 0)//向前
{if(speed_count < front_right_speed_duty){FRONT_RIGHT_GO;}else                //停止{FRONT_RIGHT_STOP;}
}
else if(front_right_speed_duty < 0)//向后
{if(speed_count < (-1)*front_right_speed_duty){FRONT_RIGHT_BACK;}else                //停止{FRONT_RIGHT_STOP;}
}
else                //停止
{FRONT_RIGHT_STOP;
}//左后轮
if(behind_left_speed_duty > 0)//向前
{if(speed_count < behind_left_speed_duty){BEHIND_LEFT_GO;}	else                //停止{BEHIND_LEFT_STOP;}
}
else if(behind_left_speed_duty < 0)//向后
{if(speed_count < (-1)*behind_left_speed_duty){BEHIND_LEFT_BACK;}	else                //停止{BEHIND_LEFT_STOP;}
}
else                //停止
{BEHIND_LEFT_STOP;
}//右后轮
if(behind_right_speed_duty > 0)//向前
{if(speed_count < behind_right_speed_duty){BEHIND_RIGHT_GO;}	else                //停止{BEHIND_RIGHT_STOP;}
}
else if(behind_right_speed_duty < 0)//向后
{if(speed_count < (-1)*behind_right_speed_duty){BEHIND_RIGHT_BACK;}	else                //停止{BEHIND_RIGHT_STOP;}
}
else                //停止
{BEHIND_RIGHT_STOP;
}

}

//向前
void CarGo(void)
{
front_left_speed_duty=25;//SPEED_DUTY 50
front_right_speed_duty=25;
behind_left_speed_duty=25;
behind_right_speed_duty=25;
}

//后退
void CarBack(void)
{
front_left_speed_duty=-50;//SPEED_DUTY
front_right_speed_duty=-50;
behind_left_speed_duty=-50;
behind_right_speed_duty=-50;
}

//向左
void CarLeft(void)
{
front_left_speed_duty=-20;
front_right_speed_duty=SPEED_DUTY;
behind_left_speed_duty=-20;
behind_right_speed_duty=SPEED_DUTY+10;//增加后轮驱动力
}

//向右
void CarRight(void)
{
front_left_speed_duty=SPEED_DUTY;
front_right_speed_duty=-20;
behind_left_speed_duty=SPEED_DUTY+10;//增加后轮驱动力
behind_right_speed_duty=-20;
}

//停止
void CarStop(void)
{
front_left_speed_duty=0;
front_right_speed_duty=0;
behind_left_speed_duty=0;
behind_right_speed_duty=0;
}`

项目编译
在这里插入图片描述

下载固件
device\xradio\xr806\xr_skylark\out\xr_system.img
在这里插入图片描述

PC端TCP客服端边连接小车下发指令。
在这里插入图片描述

小车指令接收串口打印
在这里插入图片描述

五、碰到问题
编译报数据溢出错误:

[OHOS ERROR] chmod 777 ../../../../../tools/mkimage && ../../../../../tools/mkimage  -c .image.cfg -o xr_system.img
[OHOS ERROR] err: bin 1 and bin 2 were overlaped!
[OHOS ERROR] Overlapped size: 1024 Byte(1kB)
[OHOS ERROR] bin 1 name:app.bin    begin: 0x00008000    end: 0x00018000
[OHOS ERROR] bin 2 name:app_xip.bin    begin: 0x00017C00
[OHOS ERROR] 
[OHOS ERROR] We've rearranged bin files and generated new cfg file 'image_auto_cal.cfg', the new one is recommended.
[OHOS ERROR] Generate image file failed
[OHOS ERROR] cfg string:
[OHOS ERROR] /*
[OHOS ERROR]  *
[OHOS ERROR]  * Automatically generated file; DO NOT EDIT.
[OHOS ERROR]  * XR806 SDK Configuration
[OHOS ERROR]  *
[OHOS ERROR]  */
[OHOS ERROR] {
[OHOS ERROR]     "magic" : "AWIH",
[OHOS ERROR]     "version" : "0.5",
[OHOS ERROR]     "image" : {"max_size": "1532K"},
[OHOS ERROR]     "section" :[
[OHOS ERROR]   {"id": "0xa5ff5a00", "bin" :"boot_40M.bin", "cert": "null", "flash_offs": "0K", "sram_offs": "0x00230000", "ep": "0x00230101", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5fe5a01", "bin" :"app.bin", "cert": "null", "flash_offs": "32K", "sram_offs": "0x00201000", "ep": "0x00201101", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5fd5a02", "bin" :"app_xip.bin", "cert": "null", "flash_offs": "95K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x2"},
[OHOS ERROR]   {"id": "0xa5fa5a05", "bin" :"wlan_bl.bin", "cert": "null", "flash_offs": "1166K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5f95a06", "bin" :"wlan_fw.bin", "cert": "null", "flash_offs": "1169K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5f85a07", "bin" :"sys_sdd_40M.bin", "cert": "null", "flash_offs": "1194K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
[OHOS ERROR]   {}
[OHOS ERROR]  ]
[OHOS ERROR] }

查找出错点:
openharmony$ grep “1532K” device/xradio/xr806/xr_skylark/project -rn

device/xradio/xr806/xr_skylark/project/example/audio_play/image/xr806/image.cfg:6:    "image"   : {"max_size": "1532K", "xz_max_size": "1200K"},
device/xradio/xr806/xr_skylark/project/example/audio_play/image/xr806/image.cfg:8:    "image"   : {"max_size": "1532K"},
device/xradio/xr806/xr_skylark/project/demo/audio_demo/image/xr806/image.cfg:4:    "image" : {"max_size": "1532K"},
device/xradio/xr806/xr_skylark/project/demo/audio_demo/image/xr806/image_auto_cal.cfg:10:    "image" : {"max_size": "1532K"},
device/xradio/xr806/xr_skylark/project/demo/audio_demo/image/xr806/.image.cfg:10:    "image" : {"max_size": "1532K"},

XR806/openharmony/device/xradio/xr806/xr_skylark/project/demo/audio_demo/image/xr806$ ls -l

总用量 2404
-rwxrwxr-x 1 boarmy boarmy   64456 1月  17 20:01 app.bin
-rwxrwxr-x 1 boarmy boarmy 1095680 1月  17 20:01 app_xip.bin
-rwxrwxr-x 1 boarmy boarmy   25024 1月  17 20:01 boot_40M.bin
-rw-rw-r-- 1 boarmy boarmy    1067 1月  17 20:01 image_auto_cal.cfg
-rwxrwxr-x 1 boarmy boarmy     982 1月   9 12:51 image.cfg
-rwxrwxr-x 1 boarmy boarmy     792 1月  17 20:01 sys_sdd_40M.bin
-rwxrwxr-x 1 boarmy boarmy    2320 1月  17 20:01 wlan_bl.bin
-rwxrwxr-x 1 boarmy boarmy   25492 1月  17 20:01 wlan_fw.bin
-rw-rw-r-- 1 boarmy boarmy 1223512 1月  17 19:51 xr_system.img

可找到image.cf

{"magic" : "AWIH","version" : "0.5","image" : {"max_size": "1532K"},"section" :[{"id": "0xa5ff5a00", "bin" :"boot_40M.bin",	"cert": "null",	"flash_offs": "0K",	"sram_offs": "0x00230000", "ep": "0x00230101", "attr":"0x1"},{"id": "0xa5fe5a01", "bin" :"app.bin",	"cert": "null",	"flash_offs": "32K",	"sram_offs": "0x00201000", "ep": "0x00201101", "attr":"0x1"},{"id": "0xa5fd5a02", "bin" :"app_xip.bin",	"cert": "null",	"flash_offs": "95K",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x2"},{"id": "0xa5fa5a05", "bin" :"wlan_bl.bin",	"cert": "null",	"flash_offs": "1166K",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},{"id": "0xa5f95a06", "bin" :"wlan_fw.bin",	"cert": "null",	"flash_offs": "1169K",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},{"id": "0xa5f85a07", "bin" :"sys_sdd_40M.bin",	"cert": "null",	"flash_offs": "1194K",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},{}]
}

将image.cfg修改为:

{"magic" : "AWIH","version" : "0.5","image" : {"max_size": "1532K"},"section" :[{"id": "0xa5ff5a00", "bin" :"boot_40M.bin",	"cert": "null",	"flash_offs": "0K",	"sram_offs": "0x00230000", "ep": "0x00230101", "attr":"0x1"},{"id": "0xa5fe5a01", "bin" :"app.bin",	"cert": "null",	"flash_offs": "32K",	"sram_offs": "0x00201000", "ep": "0x00201101", "attr":"0x1"},{"id": "0xa5fd5a02", "bin" :"app_xip.bin",	"cert": "null",	"flash_offs": "",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x2"},{"id": "0xa5fa5a05", "bin" :"wlan_bl.bin",	"cert": "null",	"flash_offs": "",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},{"id": "0xa5f95a06", "bin" :"wlan_fw.bin",	"cert": "null",	"flash_offs": "",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},{"id": "0xa5f85a07", "bin" :"sys_sdd_40M.bin",	"cert": "null",	"flash_offs": "",	"sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},{}]
}

flash_offs - 该段bin文件存放在 FLASH 中的位置偏移,若不填写,则软件自动放在上一个文件结束的位置,以1024 byte对齐。问题解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验15 MVC

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握MVC的用法。 三、源代码以及执行结果截图&#xff1a; inputMenu.jsp&#xff1a; <% page contentType"text/html" %> <% page pageEncoding "utf-8" %> &…

Nginx配置Https缺少SSL模块

1、Linux下Nginx配置https nginx下载和安装此处就忽略&#xff0c;可自行百度 1.1、配置https 打开nginx配置文件 vim /opt/app/nginx/conf/nginx.conf相关https配置 server {listen 443 ssl; #开放端口server_name echarts.net;#域名#redirect to https#ssl on; #旧版#ssl证…

C语言-嵌入式-STM32:FreeRTOS说明和详解

Free即免费的&#xff0c;RTOS的全称是Real time operating system&#xff0c;中文就是实时操作系统。 注意&#xff1a;RTOS不是指某一个确定的系统&#xff0c;而是指一类操作系统。比如&#xff1a;uc/OS&#xff0c;FreeRTOS&#xff0c;RTX&#xff0c;RT-Thread 等这些都…

应用监控(Prometheus + Grafana)

可用于应用监控的系统有很多&#xff0c;有的需要埋点(切面)、有的需要配置Agent(字节码增强)。现在使用另外一个监控系统 —— Grafana。 Grafana 监控面板 这套监控主要用到了 SpringBoot Actuator Prometheus Grafana 三个模块组合的起来使用的监控。非常轻量好扩展使用。…

JDK-Mac系统和Windows系统安装及Java版本新特性(java9 - java19)

过去岁月不可追&#xff0c; 未来日子要珍惜。 莫愁身外七八事&#xff0c; 且尽眼前两三杯。 当你纠结于过去之时&#xff0c;懊恼与悔恨难免会让你陷入不欢。 当你忧愁于未来之时&#xff0c;未知与不安又会逐渐侵蚀你的心灵。 勿要纠结于过去&#xff0c;勿要忧愁于未来&…

使 Elasticsearch 和 Lucene 成为最佳向量数据库:速度提高 8 倍,效率提高 32 倍

作者&#xff1a;来自 Elastic Mayya Sharipova, Benjamin Trent, Jim Ferenczi Elasticsearch 和 Lucene 成绩单&#xff1a;值得注意的速度和效率投资 我们 Elastic 的使命是将 Apache Lucene 打造成最佳的向量数据库&#xff0c;并继续提升 Elasticsearch 作为搜索和 RAG&a…

透视天气:数据可视化的新视角

数据可视化在天气方面能够为我们带来极大的帮助。天气是人类生活中一个重要的因素&#xff0c;对于农业、交通、航空、能源等各个领域都有着重要的影响。而数据可视化技术通过将复杂的天气数据转化为直观、易懂的图表、图像或地图等形式&#xff0c;为我们提供了更深入、更全面…

如何提升制造设备文件汇集的可靠性和安全性?

制造设备文件汇集通常指的是将与制造设备相关的各种文档和资料进行整理和归档的过程。这些文件可能包括但不限于&#xff1a; 生产数据&#xff1a;包括生产计划、订单信息、生产进度等。 设计文件&#xff1a;如CAD图纸、设计蓝图、产品模型等。 工艺参数&#xff1a;用于指…

PaddlePaddle与OpenMMLab

产品全景_飞桨产品-飞桨PaddlePaddle OpenMMLab算法应用平台

AnyMP4 Blu-ray Ripper for Mac:您的蓝光影音转换专家

AnyMP4 Blu-ray Ripper for Mac&#xff0c;一款功能强大的蓝光影音转换软件&#xff0c;让您的蓝光内容焕发新生。 AnyMP4 Blu-ray Ripper for Macv9.0.58激活版下载 它采用最高效的解决方案&#xff0c;将蓝光光盘翻录为任何您想要的视频格式&#xff0c;无论是MP4、MKV还是A…

【Excel】excel计算相关性系数R、纳什效率系数NSE、Kling-Gupta系数KGE

对于采用的数据&#xff1a; B2:B10958是观测值的所在范围 C2:C10958是模型计算值的所在范围 一、相关系数R是用来衡量两个变量之间线性关系强度和方向的统计量。在水文学和气象学中&#xff0c;常用的相关系数是皮尔逊相关系数&#xff08;Pearson correlation coefficient&am…

智能体可靠性的革命性提升,揭秘知识工程领域的参考架构新篇章

引言&#xff1a;知识工程的演变与重要性 知识工程&#xff08;Knowledge Engineering&#xff0c;KE&#xff09;是一个涉及激发、捕获、概念化和形式化知识以用于信息系统的过程。自计算机科学和人工智能&#xff08;AI&#xff09;历史以来&#xff0c;知识工程的工作流程因…

【数据结构(邓俊辉)学习笔记】向量05——排序器

文章目录 0. 概述1.统一入口2. 起泡排序2.1 起泡排序&#xff08;基础版&#xff09;2.1.1 算法分析2.1.2 算法实现2.1.3 重复元素与稳定性2.1.4 复杂度分析 3. 归并排序3.1 有序向量的二路归并3.2 分治策略3.3 实例3.4 二路归并接口的实现3.5 归并时间3.6 排序时间 4.综合评价…

基于Matlab使用深度学习的多曝光图像融合

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在图像处理领域&#xff0c;多曝光图像融合技术是一种重要的技术&#xff0c;它可以将不同曝光条件下…

备忘录模式(行为型)

目录 一、前言 二、备忘录模式 三、总结 一、前言 备忘录模式(Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;这样可以在之后将该对象恢复到原…

idea生成双击可执行jar包

我这里是一个生成xmind,解析sql的一个main方法,可以通过配置文件来修改有哪些类会执行 我们经常会写一个处理文件的main方法,使用时再去寻找,入入会比较麻烦,这里就可以把我们写过的main方法打成jar包,放到指定的目录来处理文件并生成想要的结果 1.写出我们自己的main方法,本地…

C语言.自定义类型:结构体

自定义类型&#xff1a;结构体 1.结构体类型的声明1.1结构体回顾1.1.1结构体的声明1.1.2结构体变量的创建和初始化 1.2结构体的特殊声明1.3结构体的自引用 2.结构体内存对齐2.1对齐规则2.2为什么存在内存对齐2.3修改默认对齐数 3.结构体传参4.结构体实现位段4.1什么是位段4.2位…

深入浅出DBus-C++:Linux下的高效IPC通信

目录标题 1. DBus简介2. DBus-C的优势3. 安装DBus-C4. 使用DBus-C初始化和连接到DBus定义接口和方法发送和接收信号 5. dbus-cpp 0.9.0 的安装6. 创建一个 DBus 服务7. 客户端的实现8. 编译和运行你的应用9. 瑞芯微&#xff08;Rockchip&#xff09;的 Linux 系统通常会自带 db…

OpenLayers入门①(引入的是一个高德地图)

OpenLayers入门&#xff08;一&#xff09; - 知乎 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

使用RTSP将笔记本摄像头的视频流推到开发板

一、在Windows端安装ffmpeg 1. 下载ffmpeg:下载ffmpeg 解压ffmpeg-master-latest-win64-gpl.zip bin 目录下是 dll 动态库 , 以及 可执行文件 ;将 3 33 个可执行文件拷贝到 " C:\Windows " 目录下 ,将所有的 " .dll " 动态库拷贝到 " C:\Windows\Sy…