저는 ARM Linux 장치에서 Qt 기반 애플리케이션을 작성하고 있습니다. 가장 효율적인 방법으로 Wi-Fi 기능을 만들고 싶습니다. 현재 저는 QProcess를 사용하여 wpa_supplicant.conf의 네트워크 블록을 수정하고 wlan0 인터페이스를 시작하여 액세스 포인트에 연결하는 스크립트를 실행하고 있습니다. sh 스크립트는 다음과 같습니다:
sed -i 's: ssid=.*: ssid="Name":' /etc/wpa_supplicant.conf
sed -i 's: psk=.*: psk="Password":' /etc/wpa_supplicant.conf
ifdown wlan0
ifup wlan0
네트워크를 스캔하기 위해 다음 명령을 실행하는 별도의 QProcess를 실행합니다.
iw wlan0 scan | grep SSID
Qt와 임베디드 개발이 처음이라 몇 가지 질문을 드리고 싶습니다. QProcess를 사용하는 것 외에도 Qt에서 스크립트를 더 효율적으로 실행하는 더 좋은 방법이 있습니까? 너무 많은 QProcess를 사용하는 데 드는 비용은 얼마입니까? 나는 또한 wpa_cli를 접했고 그것을 사용하고 싶지만 Qt나 C++ 애플리케이션을 통해 그것과 상호 작용하는 방법을 모릅니다. 누구든지 스캔을 처리하고 Wi-Fi에 연결하는 더 나은 방법(또는 일반적으로 Qt에서 Linux에서 명령을 실행하는 가장 좋은 방법)을 알려주시면 매우 감사하겠습니다. 감사해요
답변1
QProcess는 외부 프로그램을 실행하는 가장 간단한 방법입니다. 나는 그것을 자주 사용하고 Linux에서 명령의 출력을 구문 분석합니다.
예, QNetwork를 사용하여 네트워크에 직접 연결하는 또 다른 방법이 있습니다. 이 방법도 매우 간단하고 어렵지 않습니다.
QT 및 QNetwork를 사용하여 네트워크를 스캔하려면 이 링크를 참조하십시오. https://stackoverflow.com/questions/45486924/qt-scanning-wi-fi-by-qnetworkaccessmanager그리고 이 링크 https://github.com/abdularis/Wifi-Client-Scanner이 https://github.com/nlharri/WifiScannerLinux
wpa 신청자에 연결해야 하는 경우 qt를 사용하여 연결하는 방법을 보여주는 좋은 프로그램이 있습니다. https://github.com/loh-tar/wpa-cute
WPA 신청자에 대한 자세한 내용은 다음을 참조하세요. https://wiki.archlinux.org/index.php/WPA_supplicant
마지막으로 엄지손가락을 치켜세워주세요