【英飞凌 Edgi Talk评测】以UDP方式与手机通信

📅 2026/7/22 17:36:57
【英飞凌 Edgi Talk评测】以UDP方式与手机通信
为了测试在局域网里面的通信链路是否畅通于是打算做个小实验。先附上相关的图再附上相关代码下面是手机通信应该是成功了在 IDE 左侧的项目管理器中右键点击 applications 文件夹 → 新建 → 源文件 (Source File)。命名为 voip_app.c。把以下代码全部复制粘贴进 voip_app.c 中并保存复制#include rtthread.h#include sys/socket.h#define DBG_TAG voip#define DBG_LVL DBG_INFO#include rtdbg.h// 你的核心线程代码void audio_recv_thread(void *param) {int sock socket(AF_INET, SOCK_DGRAM, 0);if(sock 0) {LOG_E(Socket 创建失败);return;}struct sockaddr_in local_addr;local_addr.sin_family AF_INET;local_addr.sin_port htons(8888);local_addr.sin_addr.s_addr INADDR_ANY;if (bind(sock, (struct sockaddr *)local_addr, sizeof(local_addr)) 0) {LOG_E(端口绑定失败);return;}LOG_I(UDP 监听已启动端口: 8888...);uint8_t recv_buf[1024];while(1) {int len recvfrom(sock, recv_buf, sizeof(recv_buf), 0, NULL, NULL);if (len 0) {LOG_I(收到数据: %d bytes, len);}}}// 写一个启动包装函数void start_voip_rx(void) {rt_thread_t tid rt_thread_create(voip_rx, audio_recv_thread, RT_NULL, 2048, 15, 10);if (tid ! RT_NULL) {rt_thread_startup(tid);} else {LOG_E(VoIP 线程创建失败);}}// 神奇的魔法宏把这个启动函数变成一个控制台命令MSH_CMD_EXPORT(start_voip_rx, Start UDP VoIP Receiver);在手机的termux里面在 Termux 里输入 nano send.py粘贴以下 Python 代码复制import socketBOARD_IP 192.168.124.61 # 开发板的 IPBOARD_PORT 8888 # 开发板监听的端口sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM)message bHello Xiaozhi, I am your masters phone!sock.sendto(message, (BOARD_IP, BOARD_PORT))print(f成功将消息发给开发板: {BOARD_IP})重启开发板就可以看到上面的现象了看来UDP通信没有问题下一步希望能够研究一下microsip相关看看能不能实现最初的设想。---------------------作者yinxiangxv链接https://bbs.21ic.com/icview-3514136-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。