飞凌嵌入式
直播中

风语者199104

12年用户 177经验值
擅长:存储技术
私信 关注
[技术]

【飞凌嵌入式OK527N-C开发板体验】- 4. c函数中进行wifi连接

人啊,有无线的就不想用有线的了,板子上带了wifi,就不想折腾有线网卡了。

这一节实现通过c函数开启wifi。

研究了下官方提供的cmd测试程序,里面是一个脚本文件fltest_wifi.sh,执行的时候附带ssid和password并指定节点名就可以连接了,示例如下:

fltest_wifi.sh -i wlan0 -s H3C_708 -p 12345678
  • -i表示无线网卡节点名
  • -s表示要连接的wifi名
  • -p表示要连接的wifi密码

连接上之后可以试着ping 百度和主机ip确定是否ok

ping百度成功
image.png

开发板ping主机失败

image.png

主机ping开发板成功
image.png

猜测可能是主机防火墙问题,将主机防火墙关闭,ps应该是设置过滤规则就可以的,这里为了方便就直接关闭防火墙了。

关闭主机防火墙后再ping开发板就通了。
image.png

--------------------------------分割线----------------------------

以上是在命令窗口通过shell命令实现的,相当于先验证了通路并确保链路是正常的可以实现的,下面就通过c函数进行实现wifi连接

上面已经说了官方的wifi测试是shell 脚本命令实现的,关键还没断开wifi的命令。物理吐槽

要实现预定功能就要新建wifi.c以及Makefile

如下给出简要的测试代码

Makefile.c

CC=/home/long/work/OKT527/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/aarch64-none-linux-gnu-gcc  
CFLAGS=-Wall -I.  
LDFLAGS=  
SRCS=$(wildcard *.c)  
OBJS=$(SRCS:.c=.o)  
TARGET=app  

all: $(TARGET)  

$(TARGET): $(OBJS)  
	$(CC) $(LDFLAGS) -o $@ $^  
%.o: %.c  
	$(CC) $(CFLAGS) -c -o $@ $<  
clean:  
	rm -f $(OBJS) $(TARGET)  
help:  
	[url=home.php?mod=space&uid=70594]@echo[/url] "make - 编译所有源文件并生成可执行文件 $(TARGET)"  
	[url=home.php?mod=space&uid=70594]@echo[/url] "make clean - 清理编译生成的文件"  

.PHONY: clean help

wifi.c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) 
{
    // 使用system()函数执行fltest_wifi.sh命令  
    int status = system("fltest_wifi.sh -i wlan0 -s CMCC-p3Hp -p xh5mbggl");  
    if (status == -1) 
    {  
        // system()调用失败  
        printf("system() failed");  
        return 1;  
    } 
    else if (WIFEXITED(status)) 
    {  
        // 命令正常结束,WEXITSTATUS宏用于获取命令的退出状态  
        printf("Command exited with status %d\\\\n", WEXITSTATUS(status));  
    } 
    else
    {  
        printf("Command was interrupted by a signal\\\\n");  
    } 
    return 0;
}

这里只是一个简单的demo,先实现通过应用程序连接wifi,后面再完善其他功能。

通过交叉编译链编译生成app,将其拷贝到开发板,最简单的方式就是通过adb push命令将其推送到开发板的指定目录。不过这需要另外一根usb-typec线连接主机usb和开发板的usb0口,另外一根串口线也不要拔掉,可以看日志和执行app,当然在adb shell界面也可以执行app。我这里usb0主要用于推送文件到开发板,在串口界面执行命令并打印log。
image.png

我将其推送到了/home/forlinx目录下。

在该目录下执行如下命令,即可运行app程序了

chmod +x app
./app

image.png

至此完成初步实验,可以在c程序中进行wifi连接,同时也可以修改要连接的wifi名称和密码,以便后续功能实现。

更多回帖

发帖
×
20
完善资料,
赚取积分