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

网站怎么做移动的窗口网页建站平台建设

网站怎么做移动的窗口,网页建站平台建设,海南新闻在线中心,合肥网站建设制作价格tx-nx设置wifi和接口前言基础知识点1.创建和删除一个wifi连接2. 启动连接和关闭连接代码和调试1. 代码展示2. 调试写到最后前言 针对嵌入式开发#xff0c;有时候通过QT或PAD跨网络对设备设置WIFI#xff0c;在此记录下#xff0c;方便后续的查阅。 基础知识点 1.创建和删… tx-nx设置wifi和接口前言基础知识点1.创建和删除一个wifi连接2. 启动连接和关闭连接代码和调试1. 代码展示2. 调试写到最后前言 针对嵌入式开发有时候通过QT或PAD跨网络对设备设置WIFI在此记录下方便后续的查阅。 基础知识点 1.创建和删除一个wifi连接 创建WIFI 连接 nmcli device wifi connect SSID password passwd每次创建在/etc/NetworkManager/system-connections/目录下TR106-4文件多个分别为TR106 “TR106-4 1” TR106-4 2 …为什么有多个笔者可能觉得是因为存在相同的SSID不同的PASSWD的原因吧 删除wifi连接 p.s:不允许手动rm删除删除依然会保留到nmcli con show中 nmcli con del SSID2. 启动连接和关闭连接 启动 nmcli connection up TR106或 nmcli device con wlan0 nmcli device con wlan0关闭wifi连接 nmcli connection down TR106或nmcli device dis wlan0创建热点 暂不描述,后续如增加再做记录。 代码和调试 1. 代码展示 #ifndef WIFI_MANAGE_H__ #define WIFI_MANAGE_H__#include vector #include string#ifndef NMCCLI_CON_SHOW_ACTIVE #define NMCCLI_CON_SHOW_ACTIVE nmcli con show -active |grep wifi |grep wlan #endif #define OUT //param out #define IN //param in #define MAX_STRING (1024) #define MIN_STRING (128) namespace NMV {}; class CWifiManage { public:static CWifiManage *inst(){static CWifiManage wm;return wm;}/**获取设备WIFI扫描的列表*/int getWifiSSIDScanf();const std::vectorstd::string getSsidList()const {return m_ssid_list;}/**获取当前wlanx已连接的WIFI ssid和passwd当前只有wlan0,如果有多个wlan,需要做修改*/int getSystemWlanxInfo(std::string rhs_ssid, std::string rhs_passwd);/**获取当前的SSID和PASSWD*/int getWifiInfo(std::string rhs_ssid, std::string rhs_passwd)const {rhs_ssid m_WifiSsid; rhs_passwd m_WifiPasswd;}/**设置一个wifi信息到系统,切换WIFI的操作*/int setWifiInfo2SystemNetwork(const std::string rhs_ssid, const std::string rhs_passwd,OUT char *sys_response);/**外部接口设置WIFI*/int setWifiInfo(const std::string rhs_ssid, const std::string rhs_passwd); private:CWifiManage();~CWifiManage();std::string m_WifiSsid, m_WifiPasswd;std::vectorstd::string m_ssid_list; };#endif#include unistd.h #include stdlib.h #include stdio.h#include string.h#include string #include iostream #include codecvt#include wifi_manage.hCWifiManage::CWifiManage():m_WifiSsid(), m_WifiPasswd() {m_ssid_list.clear(); }CWifiManage::~CWifiManage() {}int CWifiManage::getSystemWlanxInfo(OUT std::string rhs_ssid, OUT std::string rhs_passwd) {char pipeBuf[MAX_STRING] {0};char tssid[MIN_STRING] {0};FILE * pPipe popen(NMCCLI_CON_SHOW_ACTIVE, r);if(!pPipe){printf(PIPE ERROR\n);return -1;}size_t pipeSiz ftell(pPipe);fseek(pPipe, 0, SEEK_SET);fread(pipeBuf, 1, pipeSiz, pPipe);if(pPipe){pclose(pPipe); pPipe (FILE*)0;}if(!strlen(pipeBuf)){printf(无连接上的WIFI!\n);return -1;}sscanf(pipeBuf, %s, tssid);/*根据SSID查看Passwd*/char ssidFileConfigure[MIN_STRING] {0};snprintf(ssidFileConfigure, MIN_STRING-1, /etc/NetworkManager/system-connections/%s, tssid);FILE *fp fopen(ssidFileConfigure, r);if(!fp){printf(打开%s失败!\n, ssidFileConfigure);return -1;}char line_buf[MIN_STRING] {0};char tpasswd[MIN_STRING] {0};while(!feof(fp)){memset(line_buf, 0, MIN_STRING);fgets(line_buf, MIN_STRING, fp);if(strstr(line_buf, psk)){size_t line_siz strlen(line_buf);if(line_buf[line_siz-1] \n) line_buf[line_siz-1] \0;memcpy(tpasswd, line_bufstrlen(psk), strlen(line_bufstrlen(psk)));printf(passwd:%s, siz:%lu!\n , tpasswd, strlen(tpasswd));}}if(fp){fclose(fp); fp (FILE*)0;}if(strlen(tssid) strlen(tpasswd)){rhs_ssid tssid; rhs_passwd tpasswd;}return 0;}int CWifiManage::setWifiInfo2SystemNetwork(const std::string rhs_ssid, const std::string rhs_passwd,char *sys_response) {char cmd_string[MIN_STRING] {0};memset(cmd_string, 0, MIN_STRING);snprintf(cmd_string, MIN_STRING, nmcli device wifi connect %s password %s, rhs_ssid.c_str(), rhs_passwd.c_str());FILE *pPipe popen(cmd_string, r); //阻塞if(!pPipe){printf(cmdString: %s, err:%s\n , cmd_string, strerror(errno));memcpy(sys_response, pipe null, strlen(pipe null));return -1;}fread(sys_response, 1, MAX_STRING-1, pPipe);pclose(pPipe); pPipe (FILE*)0;if(!strstr(sys_response, successfully)) //如果设置失败{return -2;}printf(SSID:%s 设置成功!\n, rhs_ssid.c_str());/*重置wifi为设置的ssid和信息更新 nmcli con show*///1. 关闭之前的连接pPipe popen(nmcli device dis wlan0, r);if(pPipe){pclose(pPipe); pPipe (FILE*)0;}//2 开启设置的连接memset(cmd_string, 0, MIN_STRING);snprintf(cmd_string, MIN_STRING, nmcli connection up %s, rhs_ssid.c_str());pPipe popen(cmd_string, r);if(pPipe){pclose(pPipe); pPipe (FILE*)0;}#if 0 //配置暂先不做处理//3 删除(忘记)不需要的WIFI连接 cmd:nmcli con del SSID,仅保留设置的wifi有效pPipe popen(ls /etc/NetworkManager/system-connections/ |grep -v Wire, r);char ssid[MIN_STRING];if(pPipe){while(!feof(pPipe)){memset(ssid, 0, MIN_STRING);fgets(ssid, MIN_STRING-1, pPipe);if(ssid[strlen(ssid)-1] \n) ssid[strlen(ssid)-1] \0;if(rhs_ssid std::string(ssid)){continue;}comm_sys_cmd(nmcli con del %s, ssid);}} #endifreturn 0; }int CWifiManage::getWifiSSIDScanf() {//扫描WIFI ESSID//do somethingschar cmd_string[MIN_STRING] {0};char sline[MIN_STRING], ssid[MIN_STRING];memset(cmd_string, 0, MIN_STRING);snprintf(cmd_string, MIN_STRING, iw wlan0 scan |grep SSID); FILE *pPipe (FILE*)0;pPipe popen(cmd_string, r);if(!pPipe){printf(cmdString: %s, err:%s\n , cmd_string, strerror(errno));return -1;}while(!feof(pPipe)){memset(sline, 0, MIN_STRING);memset(ssid, 0 , MIN_STRING);fgets(sline, MIN_STRING, pPipe);int j 0;for(int i 0; i strlen(sline); i){if(sline[i] \t || sline[i] \n || sline[i] ){continue ;}ssid[j] sline[i];j;}//printf(ssid:%s, siz:%lu\n, ssid, strlen(ssid));if(0 strlen(ssid) - strlen(SSID:) || strlen(sline) 0 ){//printf(ssid为空\n);continue;}if(strstr(ssid, x00)){printf(含有x00\n);continue;}static std::wstring_convertstd::codecvt_utf8wchar_t strCnv;// std::wstring test strCnv.from_bytes(ssid);printf(%s\n, test.c_str());m_ssid_list.push_back(ssidstrlen(SSID:));}auto vit m_ssid_list.begin();for(; vit ! m_ssid_list.end();vit){ static int cnt 0;std::cout SSID_siz: (*vit).size() *vit std::endl;;}if(pPipe){pclose(pPipe); pPipe (FILE*)0;}return 0; }int CWifiManage::setWifiInfo(const std::string rhs_ssid, const std::string rhs_passwd) {char sys_resp[MAX_STRING] {0};if(setWifiInfo2SystemNetwork(rhs_ssid, rhs_passwd, sys_resp)){printf(设置wifi失败!);}std::cout 设置wifi系统提示: sys_resp std::endl;m_WifiSsid rhs_ssid;m_WifiPasswd rhs_passwd;return 0; }int main(int argc, char *argv[]) {int ret 0; #if 0std::string str_ssid , str_passwd ;ret CWifiManage::inst()-getSystemWlanxInfo(str_ssid, str_passwd);if(ret 0){printf(当前wifi已连接成功, ssid:%s, passwd:%s\n, str_ssid.c_str(), str_passwd.c_str());}if(CWifiManage::inst()-setWifiInfo(HONOR-Hello-Ouyang_2.4, woshisunouyangaaaa)){printf(设置wifi失败!\n);} #else CWifiManage::inst()-getWifiSSIDScanf(); #endif }2. 调试 扫描中踢出了空格换行和制表符 获取WIFI扫描 {Jsonrpc: 1.0,Method: GetWifiScan,Result: true,SsidList: [TR106-4,HONOR-Hello-Ouyang_2.4,HUAWEI-WANG,Maxvision-2.4G,HUAWEI-MV_SLAM_02,ymg,fanyiji-ceshi,Tenda_1D0130,cleanRobot,Xiaomi_DESKT,YUN,siweite7wifi,HUAWEI-MV_SLAM_00,HONOR-xunjian-Mast,HONOR-xunjian-Mast,jxkjc,Trans-4G-SanFanTest,TP-LINK_2.4G_D6D088,TR106-4,Maxvision-2.4G,ChinaNet-5pV3-5G,HUAWEI-MV_SLAM_00,HONOR-Hello-Ouyang_5G,HUAWEI-MV_SLAM_02,ROBOT_TEST,HONOR-0J14YA,xunjian] } 设置wifi过程中遇到的问题: 1. SSID不存在返回如下错误 {Jsonrpc: 1.0,Method: SetWifiConnect,Params: null,ResponseMsg: ERROR:未扫描到SSID:TR106-41,Result: false } 之前使用PAD对设备设置用的是android的API扫描WIFI SSID可能设备和WIFI处的位置不同以及无线网卡的差异性导致PAD搜索的SSID可能设备网卡搜不到的情况。2.输入的密码错误 {Jsonrpc: 1.0,Method: SetWifiConnect,Params: null,ResponseMsg: ERROR:Error: Connection activation failed: (7) Secrets were required, but not provided.\n,Result: false }写到最后 1. 每次设置一个新WIFI将之前的配置都删除掉让设备只连最近更新的WIFI后面考虑合理性以及手机android等 都采用保存配置的情况 该功能就删除了。 2. 还有比较多的功能可以实现比如忘记WIFI名称等功能。忘记WIFI名称 pPipe popen(ls /etc/NetworkManager/system-connections/ |grep -v Wire, r);char ssid[128];if(pPipe){while(!feof(pPipe)){memset(ssid, 0, MIN_STRING);fgets(ssid, MIN_STRING-1, pPipe);if(ssid[strlen(ssid)-1] \n) ssid[strlen(ssid)-1] \0;if(rhs_ssid std::string(ssid)){continue;}std::string str_cmd nmcli con del ssid;system(str_cmd.c_str());}}
http://www.w-s-a.com/news/741352/

相关文章:

  • 重庆网站设计公司价格贵阳网站建设app开发
  • dw做网站怎么换图片编写网页所用的语言是
  • 外贸网站收录工具个人网站的备案
  • 正规的网站建设工作室海外高延迟服务器做网站
  • 网站设计确认函合肥做网站维护的公司
  • 小说网站推荐网站开发语言怎么查
  • 网页制作基础教程慕课版电子版那种登录才能查看的网站怎么做优化
  • 制作网站用的域名网站域名注册信息查询
  • 公司域名查询官方网站女教师遭网课入侵直播录屏曝
  • 网站开发社交网络功能的作用腾讯公司网站
  • 网站建设需要微信账号和密码网站建设工作汇报
  • 国家城乡住房和建设部网站西安私人网站
  • 天津高端网站定制seo实战教程
  • 网站文章怎么做才能被快速收录网站备案核验系统
  • 子网站建设方案l建设银行网站
  • 免费看舆情网站网站备案用户名忘了怎么办
  • 地方门户网站的分类网站的方案
  • 沧州哪里做网站网站的建设是什么
  • 设计公司海报秦皇岛seo网站推广
  • 网站导航规划wordpress做漫画
  • jsp体育用品网站建设wordpress 10万篇文章
  • 沈阳做微信和网站的公司网站在线支付接口
  • 重庆整合网络营销百度seo快速提升排名
  • 设计师网站外网百度分析工具
  • 旅游网站建设技术解决方案wordpress主题安装后找不到
  • 网站图片文字排版错误管理系统界面设计
  • 网站建设 台州广州惠科互联网技术有限公司
  • 网站页面尺寸大小四川鸿业建设集团网站
  • 做女朋友的网站局网站建设方案word
  • 做阿里国际网站会有成效吗科技网站有哪些