Qt之连接wifi

2023-10-29

最近因为项目需要,我的文件系统是移植好wifi驱动的,所以前面的部分就不描述了,在界面添加wifi的连接,所以记录一下自己在探索中的经验和误区

一、无线路由器常见加密方式有WPA-PSK、WPA2-PSK,wpa加密需要用wpa_supplicant工具连接,连接又可以用wpa_cli和wpa_supplicant.conf两种方式,这里选择wpa_supplicant.conf的方式。 

二、wpa_supplicant.conf的编写

ctrl_interface=DIR=/var/run/wpa_supplicant 
ctrl_interface_group=wheel 
ap_scan=1 
update_config=1
//开始无线接入点的具体配置
network={ 
//接入点名称
ssid="aaa" 
//接入点密码
psk="12345678" 
//如果你的无线接入点是隐藏的,那么这个就是必须的
scan_ssid=1
//支持的协议列表,不设置就默认
proto=WPA2 WPA 
//认证密钥管理协议,不设置就默认支持WPA-EAP WPA-PSK
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE 
//加密方式CCMP就是AES,不设置的话是CCMP TKIP,但是有的路由器会无法识别,最好设置
pairwise=CCMP TKIP 
group=CCMP TKIP WEP104 WEP40 
eap=PEAP TTLS TLS 
priority=2 
} 
将以上内容保存为/etc/wpa_supplicant.conf (路径不唯一)

三、操作步骤

ifconfig –a        //如果出现wlan0,则说明初始化成功;  
ifconfig eth0 down    //先关闭eth0,不然wlan0可能会有小问题
ifconfig wlan0 up     //启用wlan0 
killall wpa_supplicant //杀死以前配置进程
wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d //(-i 指定网络节点 –B 后台运行 –c指定配置文件路径) 
iwconfig wlan0         //出现:ESSID:”aaa” 说明成功连接
killall udhcpc //杀死以前的dhcp进程
udhcpc –i wlan0  //自动获取ip ,和添加dns,不然可能会连不上网或者ping不通,但是每个人都不一样   
route  //获取路由 

四、完成上面的操作,你会发现你的wifi已经连接成功了

五、但是,你会有想切换热点的时候,你会发现添加失败,它会提示你

ctrl_iface bind(PF_UNIX) failed: Address already in use
ctrl_iface exists and seems to be in use - cannot override it
Delete '/var/run/wpa_supplicant/wlan0' manually if it is not used anymore
Failed to initialize control interface 'DIR=/var/run/wpa_supplicant'.
You may have another wpa_supplicant process already running or the file was
left by an unclean termination of wpa_supplicant in which case you will need
to manually remove this file before starting wpa_supplicant again.
Failed to add interface wlan0

你千万不要听到的手动删除'/var/run/wpa_supplicant/wlan0'

六、在这里只能提供大概的思路,qt界面的就是将这些步骤依次执行而已

此外,还有一些常用的wlan0命令

iwconfig wlan0       // 查看是否连接wifi,已经信息
udhcpc –i wlan0    // 自动获取ip和添加dns
route     //获取路由表
iwlist wlan0 scan //扫描wlan0
wpa_cli status  //查看连接状态
killall wpa_supplicant //杀死以前配置进程
killall udhcpc//杀死以前的dhcp进程
route add default gw 192.168.1.1//添加默认网关
route del default//删除默认网关
// 连接有线,其实就是获取有线的IP,添加默认网关,
ifconfig wlan0 down/关闭wlan0 
ifconfig eth0 up//启用wlan0 ,保险起见,避免可能会有小问题
killall udhcpc //删除之前的自动获取进程残余
udhcpc //udhcpc 默认eth0

一般有了这些就足够了,如果有别的需求可以自行查找

七、开辟新线程

因为调用系统函数执行命令时会阻塞当前进程,所以使用新线程运行

qt的moveTothread函数,新开一个进程,然后通过connect发送信号连接,监控网络即可。

其中调用moveTothread的对象:

// 1.不能有父对象! ,因为源码的判断即是is->parnet!=0

if (d->parent != 0) { 
    qWarning("QObject::moveToThread: Cannot move objects with a parent"); 
    return; 
}
// 2.不能是窗口类型! 
if (d->isWidget) { 
    qWarning("QObject::moveToThread: Widgets cannot be moved to a new thread"); 
    return; 
}
// 3.该函数必须在对象关联的线程内调用!
if (d->threadData != currentData) {
    qWarning("QObject::moveToThread: Current thread (%p) is not the object's thread (%p)./n"
}

moveTothread的用法就是这三句话

QThread *thread = new QThread;  
wifiClass->moveToThread(thread);  
thread->start();  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt之连接wifi 的相关文章

  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 程序意外完成 - QT Creator

    我正在尝试使用 QT Creator 使用 QT 框架开发 GUI 控制台应用程序 我使用的是Windows XP 我安装了QT 4 8 3和mingw 两者均已安装 没有任何错误 然后我安装了QT Creator QT 版本 路径中的 Q
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • QTimer 一点也不准确?

    运行在 Windows7 64 位机器上 具有非常强大的 CPU 8 核 16 线程 我使用 QTimer 以 50Hz 触发函数调用 但我最终得到了 30Hz 函数调用本身肯定需要不到 10 毫秒才能完成 整个过程发生在一个单独的线程中
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 有没有办法通过 WiFi 部署/调试 Cordova Android Ionic 应用程序? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 这是一个双胞胎this https stackoverflow com questions 46596236 is there a w
  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • 如何在 QtQuick 2 中对 QML TableView 进行排序?

    我想使用 Qt 5 1 实现具有自定义角色的可排序 TableView 但我不知道当用户单击标题时该怎么做才能对其进行排序 在我的 Qt pro 文件中 我添加了 android ios blackberry qtHaveModule wi
  • QSerialPort 中的 readAll() 不包括最后发送的响应

    我正在使用 Qt 来控制串行设备 如果我向串行设备发送命令 我会执行类似的操作serial gt write command r n 我制作了一个按钮 它将纯文本小部件内的文本更改为串行端口的响应 为了获得串口的响应 我使用serial g
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my

随机推荐

  • 树莓派 python3.9降级为python3.7

    今天烧录了一个官方烧录器中的最新的镜像 打开之后python的版本是3 9的 之前做的一些东西都是基于python3 7的 再重新架构十分麻烦 于是干脆就把python3 9进行降级 降为python3 7 这个镜像不像之前的一些镜像 同时
  • sql 插入一条记录并查询出记录的id值

    String sql SET NOCOUNT ON insert into yaComVehicle plateNum deComId values plateNum deComId select ident current yaComVe
  • 160825、互联网架构,如何进行容量设计?

    一 需求缘起 互联网公司 这样的场景是否似曾相识 场景一 pm要做一个很大的运营活动 技术老大杀过来 问了两个问题 1 机器能抗住么 2 如果扛不住 需要加多少台机器 场景二 系统设计阶段 技术老大杀过来 又问了两个问题 1 数据库需要分库
  • 1156 十个成绩排序(运用sort函数倒序排出)

    题目描述 期末考试结束了 陈老师找到集训队的同学 希望帮忙开发一个成绩排序的系统 这个应该难不倒集训队员的 先做一个内部小测试吧 随意输入10个学生的成绩 按从高到低的序列显示 输入要求 输入10个学生的成绩 输出要求 输出从高到低的排序结
  • “此Flash Player 与您的地区不相容”,谷歌高版本,亲测2019-2-28可以解决

    这是原地址 解决方法如下 翻墙后才是打开的正确的Adobe的官网下载地址 https get adobe com cn flashplayer 这里下载的Flash Player版本经过安装后问题得到圆满解决 不再出现地区不兼容的提示 由于
  • 代理导致安装依赖失败 vue-admin connect ETIMEDOUT 104.16.21.35:443

    今天在安装百度地图依赖时 报了下面这个错误 翻译过来的意思大概是 npm犯错 代码ETIMEDOUT npm犯错 系统调用连接 npm犯错 errno ETIMEDOUT npm犯错 网络请求https registry npmjs org
  • 「ML 实践篇」模型训练

    在训练不同机器学习算法模型时 遇到的各类训练算法大多对用户都是一个黑匣子 而理解它们实际怎么工作 对用户是很有帮助的 快速定位到合适的模型与正确的训练算法 找到一套适当的超参数等 更高效的执行错误调试 错误分析等 有助于理解 构建和训练神经
  • Openwrt添加python3 package出现错误:提示缺少对libssl的依赖

    在Openwrt中添加python3 package时出现错误 Package python3 light is missing dependencies for the following libraries libcrypto so 1
  • AES加密解密

    import javax crypto Cipher import javax crypto spec SecretKeySpec 功能 加密解密工具类 日期 2022 5 5 author lf public class AesUtil2
  • 2023华为OD机试真题【星际篮球争霸赛/动态规划】

    题目描述 在星球争霸篮球赛对抗赛中 最大的宇宙战队希望每个人都能拿到MVP MVP的条件是单场最高分得分获得者 可以并列所以宇宙战队决定在比赛中尽可能让更多队员上场 并且让所有得分的选手得分都相同 然而比赛过程中的每1分钟的得分都只能由某一
  • (9.2)A*搜索算法

    A 算法是在Dijstra算法上进行改进 知道起点和终点位置Dijstra算法是四面八方全部寻找 而A 算法则可以往一个最优方向寻找 即启发式的搜索 在提高算法效率的同时 保证找到一条最优路径 一 原理 A 算法的核心在于估价函数的设计上
  • 鹅厂优文

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由鹅厂新鲜事儿发表于云 社区专栏 作者 卢文喆 腾讯云 UI工程师 导语 当React 刚开始红的时候 一直觉得 JSX 的设计思想极其独特 属于革命性的创新 它性能出众 代码逻
  • RSA加密算法及一般攻击方式

    RSA算法 RSA公钥加密算法是RSA公钥加密算法是1977年由罗纳德 李维斯特 Ron Rivest 阿迪 萨莫尔 Adi Shamir 和伦纳德 阿德曼 Leonard Adleman 一起提出的 1987年7月首次在美国公布 当时他们
  • 【ReID】AlignedReID ++ : Dynamically matching local information for person re-identification

    ReID AlignedReID Dynamically matching local information for person re identification 模型 实验 问题 参考文献 阅读了AlignedReID Dynami
  • 重庆通信学院计算机专业,2017年重庆通信学院计算机应用技术408计算机学科专业基础综合之计算机操作系统考研题库...

    一 选择题 1 计算机系统的二级存储包括 A CPU 寄存器和主存缓冲区 B 超高速缓存和内存储器 C ROM 和RAM D 主存储器和辅助存储器 答案 D 解析 由于主存储器能被处理器直接访问 而辅助存储器则不能 因此 在进程运行时 必须
  • 让setInterval在React-Hooks中成为声明式

    Making setInterval Declarative with React Hooks 原文 Making setInterval Declarative with React Hooks 原译文 让setInterval在Reac
  • kali部署dvwa靶场

    DVWA Damn Vulnerable Web Application 是一个用来进行安全脆弱性鉴定的PHP MySQL Web应用 旨在为安全专业人员测试自己的专业技能和工具提供合法的环境 帮助web开发者更好的理解web应用安全防范的
  • 机器人编程学什么

    要了解机器人编程学什么 首先要知道机器人编程是什么 一句话概括就是 机器人编程为使机器人完成某种任务而设置的动作顺序描述 所以关键就是学习机器人和编程 为了方便理解机器人编程学习什么 所以我将按年龄阶段来划分 儿童阶段 3 6岁 由于孩纸心
  • Elasticsearch更新某条信息中的字段

    样例 PUT megacorp employee 1 first name John last name Smith age 25 about I love to go rock climbing interests sports musi
  • Qt之连接wifi

    最近因为项目需要 我的文件系统是移植好wifi驱动的 所以前面的部分就不描述了 在界面添加wifi的连接 所以记录一下自己在探索中的经验和误区 一 无线路由器常见加密方式有WPA PSK WPA2 PSK wpa加密需要用wpa suppl