안녕하세요.
현재 라즈베리파이에서 구동되는 Qt 어플리케이션을 개발중입니다.
이번에 사용자를 위한 와이파이 화면과 기능을 구현하고 있습니다.
처음 해당 기능에 대해 찾아봤을 때, QML로 되어있는 Wifi Manager 기능을 제공해주길래 금방 하겠구나 했는데..
Boot to Qt라는 상용 라이센스더군요.ㅠㅠ
그래서 현재 자체적으로 개발할 수 있는 방법을 찾는 중입니다.
현재 다음과 같은 코드로 되어있습니다.
{
...
connect(&ncm, SIGNAL(updateCompleted()), this, SLOT(SlotUpdateActiveWifi()));
}
void ServiceWifi::SlotFindActiveWifi()
{
ncm.updateConfigurations();
}
void ServiceWifi::SlotUpdateActiveWifi()
{
netCfgList = ncm.allConfigurations();
for( auto &x : netCfgList )
{
if(x.bearerType() == QNetworkConfiguration::BearerWLAN)
{
qDebug() << "Wifi : " << x.name();
}
else
{
qDebug() << "Something else: " << x.bearerType() << " - name: " << x.name();
}
}
}
그런데 해당 코드를 실행해보면,
Something else: 1 - name: "Wired connection 1"
Something else: 1 - name: "eth0"
Something else: 1 - name: "wlan0"
위와 같은 메세지만 출력되고 SSID가 출력이 되지 않는데 원인을 모르겠네요..
BearenWLAN 타입이 wlan에서 활성화되어있는 네트워크 검색이라고 하는데 동작이 안되네요.
답변 좀 부탁드리겠습니다!
추가) 혹시 Qt에서 Wi-fi를 검색하고 접속하기 위해 주로 사용되는 api나 다른 것들이 있을까요?
2020.03.19 12:32
2020.03.23 17:35
답변 감사합니다. 현재 레벨에서 상용 라이센스를 구매하기는 부담스러워서, 일단 QProcess를 통해 리눅스 커맨드를 날리고 들어오는 콘솔 메시지를 파싱해서 구현하였습니다. 간혹 에러가 있는 거 같긴 한데, 일단 동작은 되네요..
2020.03.23 19:01
그것도 대안이 될 수 있겠네요! 혹시라도 Qt의 Wifi Manager와 같은 메커니즘(IPC통신으로)으로 하시려면 ConnMan 프로젝트( https://01.org/connman ) 를 참고하세요~
말씀하신 Qt의 Wifi Manager의 경우 IPC(d-bus)를 통해 ssid등의 정보를 받고있는 것으로 보입니다. Qt API 만 가지고 구현 하기에는 간단하진 않을 것같습니다.