营销网站更受用户欢迎的原因是个人博客系统毕业设计论文

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

营销网站更受用户欢迎的原因是,个人博客系统毕业设计论文,wordpress怎么加锚文本,外贸推广系统引言 我所计划的WS63E测试要实现MQTT联网#xff0c;所以首先需要确保开发板连接WiFi。今天来测试一下WiFi功能。 程序分析 WiFi客户端的例子在src/application/samples/wifi/sta_sample目录下。这个例子看上去和hi3861的例子差不多。 这段程序是一个用于嵌入式设备的Wi-F…引言 我所计划的WS63E测试要实现MQTT联网所以首先需要确保开发板连接WiFi。今天来测试一下WiFi功能。 程序分析 WiFi客户端的例子在src/application/samples/wifi/sta_sample目录下。这个例子看上去和hi3861的例子差不多。 这段程序是一个用于嵌入式设备的Wi-Fi StationSTA模式的示例程序它使用了LwIP网络堆栈和CMSIS-RTOS API。程序的主要目的是连接到一个指定的Wi-Fi网络并获取IP地址。以下是对程序的分析 头文件包含程序包含了多个头文件这些头文件提供了网络接口、Wi-Fi热点配置、基础类型定义、标准库、串口通信、操作系统服务、应用初始化和系统抽象层等功能的支持。 宏定义定义了一些常量如Wi-Fi接口名称的最大长度、SSID的最大长度、扫描AP的限制、MAC地址的长度等。 事件回调函数定义了两个静态函数wifi_scan_state_changed和wifi_connection_changed它们分别在Wi-Fi扫描状态变化和连接状态变化时被调用。 Wi-Fi事件结构体定义了一个wifi_event_stru结构体用于注册Wi-Fi事件回调。 状态枚举定义了一个枚举wifi_state_enum用于跟踪STA模式下的不同状态。 全局变量定义了一个全局变量g_wifi_state用于保存当前的Wi-Fi状态。 扫描事件回调函数wifi_scan_state_changed函数在扫描完成时被调用它将全局状态设置为扫描完成。 关联事件回调函数wifi_connection_changed函数在连接状态变化时被调用它根据连接是否成功更新全局状态。 匹配目标AP函数example_get_match_network函数用于在扫描结果中找到指定的网络并填充连接请求信息。 关联状态查询函数example_check_connect_status函数用于检查是否成功连接到AP。 DHCP状态查询函数example_check_dhcp_status函数用于检查是否成功获取IP地址。 STA功能函数example_sta_function函数是STA模式的主要逻辑它按照状态枚举的顺序执行操作包括启动扫描、连接到AP、获取IP地址等。 初始化函数sta_sample_init函数用于初始化Wi-Fi事件回调、等待Wi-Fi初始化完成并调用example_sta_function函数。 任务入口函数sta_sample_entry函数用于创建一个名为sta_sample_task的线程该线程运行sta_sample_init函数。 程序入口app_run函数调用sta_sample_entry函数启动STA模式的任务。
整体来看这个程序是一个完整的Wi-Fi Station模式的示例它展示了如何使用事件回调、状态机和网络接口来连接到一个Wi-Fi网络并获取IP地址。程序使用了CMSIS-RTOS API来创建线程和延时以及LwIP API来处理网络相关的操作。 程序测试 编译程序之前需要先修改程序中的SSID和密码设置。这个参数在example_get_match_network函数中。 td_s32 example_get_match_network(wifi_sta_config_stru expected_bss) {td_s32 ret;td_u32 num 64; / 64:扫描到的Wi-Fi网络数量 /td_char expected_ssid[] my_softAP;td_char key[] my_password; / 待连接的网络接入密码 /td_bool find_ap TD_FALSE;td_u8 bss_index;/ 获取扫描结果 */td_u32 scan_len sizeof(wifi_scan_info_stru) * WIFI_SCAN_AP_LIMIT;wifi_scan_info_stru result osal_kmalloc(scan_len, OSAL_GFP_ATOMIC);if (result TD_NULL) {return -1;}memset_s(result, scan_len, 0, scan_len);ret wifi_sta_get_scan_info(result, num);if (ret ! 0) {osal_kfree(result);return -1;}/ 筛选扫描到的Wi-Fi网络选择待连接的网络 /for (bss_index 0; bss_index num; bss_index ) {if (strlen(expected_ssid) strlen(result[bss_index].ssid)) {if (memcmp(expected_ssid, result[bss_index].ssid, strlen(expected_ssid)) 0) {find_ap TD_TRUE;break;}}}/ 未找到待连接AP,可以继续尝试扫描或者退出 /if (find_ap TD_FALSE) {osal_kfree(result);return -1;}/ 找到网络后复制网络信息和接入密码 /if (memcpy_s(expected_bss-ssid, WIFI_MAX_SSID_LEN, expected_ssid, strlen(expected_ssid)) ! 0) {osal_kfree(result);return -1;}if (memcpy_s(expected_bss-bssid, WIFI_MAC_LEN, result[bss_index].bssid, WIFI_MAC_LEN) ! 0) {osal_kfree(result);return -1;}expected_bss-security_type result[bss_index].security_type;if (memcpy_s(expected_bss-pre_shared_key, WIFI_MAX_SSID_LEN, key, strlen(key)) ! 0) {osal_kfree(result);return -1;}expected_bss-ip_type 1; / 1IP类型为动态DHCP获取 */osal_kfree(result);return 0; } 修改好SSID和密码就可以编译并下载程序了。程序启动后扫描附近的所有WiFi热点如果找到制定的热点就自动连接。  从这段日志看程序成功的连接到热点并通过DHCP协议获得了IP地址。 完整的程序日志如下  boot. Flash Init Fail! ret 0x80001341 verify_public_rootkey secure verify disable! verify_params_key_area secure verify disable! verify_params_area_info secure verify disable! verify_image_key_area secure verify disable! verify_image_code_info secure verify disable! SSB Uart Init Succ! SSB Flash Init Succ! verify_image_key_area secure verify disable! verify_image_code_info secure verify disable! Flashboot Uart Init Succ! Flashboot Malloc Init Succ! Flash Init Succ! No need to fix SR! flashboot version : 1.10.101 [UPG] upgrade init OK! No need to upgrade… flash_encrypt disable. verify_image_key_area secure verify disable! verify_image_code_info secure verify disable! APP|Debug uart init succ. [UPG] upgrade init OK! APP|init_dev_addr, mac_addr:0x80,0x 0,0x73,0xdb,0x,0x, xo_trim_temp_comp val:0 0 APP|AT uart init succ. los_at_plt_cmd_register EXCUTE APP|WARNING: main_initialise::thread[11] func is null APP|[WIFI_STA_SAMPLE]::Create sta_sample_task succ. cpu 0 entering schedulerAPP|btc open [RADAR_LOG] alg ctrl read from nv [1][2][0][0][1][1][20] device_main_init: 0! hal_initialize_phy225 device_module_init:: succ! cali_set_cali_mask:old[0x0] - new[0x1fa2]fe_rf_initialize cali_offline_cali_entry enter cali_set_cali_done_flag:old[0x0] - new[0x1]rf cali OK. time cost:22, ret:0 APP|[WIFI_STA_SAMPLE]::wifi_event_cb register succ. APP|[WIFI_STA_SAMPLE]::wifi init succ. drv_soc_ioctl ioctl_cmd-cmd7. drv_soc_ioctl ioctl_cmd-cmd9. drv_soc_ioctl ioctl_cmd-cmd17. drv_soc_ioctl ioctl_cmd-cmd13. drv_soc_ioctl ioctl_cmd-cmd35. drv_soc_ioctl ioctl_cmd-cmd2. drv_soc_ioctl ioctl_cmd-cmd2. drv_soc_ioctl ioctl_cmd-cmd2. drv_soc_ioctl ioctl_cmd-cmd2. drv_soc_ioctl ioctl_cmd-cmd2. drv_soc_ioctl ioctl_cmd-cmd2. drv_soc_ioctl ioctl_cmd-cmd41. APP|[WIFI_STA_SAMPLE]::STA enable succ. APP|[WIFI_STA_SAMPLE]::Scan start! drv_soc_ioctl ioctl_cmd-cmd14. hmac_single_hal_device_scan_complete:vap[1] time[761] chan_cnt[13] chan_0[1] back[0] event[6] mode[0] Scan::vap[1] find bss_num[28] in regdomain, other bss_num[0] Srv:548:recive event 1 APP|[WIFI_STA_SAMPLE]::Scan done!. Srv:1723:sta_scan_results cnt 28 APP|[WIFI_STA_SAMPLE]::Connect start. Srv:find ssid[CU_fjGX] auth type[2] pairwise[1] ft_flag[0] drv_soc_ioctl ioctl_cmd-cmd47. drv_soc_ioctl ioctl_cmd-cmd47. drv_soc_ioctl ioctl_cmd-cmd47. drv_soc_ioctl ioctl_cmd-cmd16. drv_soc_ioctl ioctl_cmd-cmd6. drv_soc_ioctl ioctl_cmd-cmd6. drv_soc_ioctl ioctl_cmd-cmd47. APP|Hello world! drv_soc_ioctl ioctl_cmd-cmd6. drv_soc_ioctl ioctl_cmd-cmd5. drv_soc_ioctl ioctl_cmd-cmd6. drv_soc_ioctl ioctl_cmd-cmd6. drv_soc_ioctl ioctl_cmd-cmd5. drv_soc_ioctl ioctl_cmd-cmd1. drv_soc_ioctl ioctl_cmd-cmd3. drv_soc_ioctl ioctl_cmd-cmd1. NOTICE:CONNECTED drv_soc_ioctl ioctl_cmd-cmd6. Srv:548:recive event 2 APP|[WIFI_STA_SAMPLE]::Connect succ!. APP|[WIFI_STA_SAMPLE]::DHCP start. xo update temp:4,diff:0,xo:0x3083c APP|[WIFI_STA_SAMPLE]::STA DHCP success. APP|[SYS INFO] mem: used:134448, free:229572; log: drop/all[0/0], at_recv 0. APP|[SYS INFO] mem: used:134448, free:229572; log: drop/all[0/0], at_recv 0. APP|[SYS INFO] mem: used:134448, free:229572; log: drop/all[0/0], at_recv 0.结语 WS63E上实现WiFi比较容易下一阶段将添加MQTT连接华为云的代码。