Qt Positioning NMEA 플러그인
개요
Qt Positioning 에는 NMEA 문장을 위치 업데이트 정보로 파싱하는 위치 플러그인이 포함되어 있습니다. 이 플러그인은 시리얼 포트, 소켓 또는 파일을 소스로 사용할 수 있습니다.
이 플러그인은 nmea라는 프로바이더 이름을 사용하여 로드할 수 있습니다.
매개변수
다음 표에는 nmea 플러그인에 전달할 수 있는 매개변수가 나열되어 있습니다.
| 매개변수 | 설명 |
|---|---|
| nmea.source | NMEA 데이터를 가져오는 데 사용될 소스입니다. |
| nmea.baudrate | 직렬 포트 연결에 사용될 보드 속도로, 양의 정수로 표시됩니다. 일반적으로 QSerialPort::BaudRate 열거형에 정의된 값 중 하나여야 합니다. 매개변수가 지정되지 않았거나 양의 정수가 아닌 경우, 기본값인 4800 가 사용됩니다. |
| nmea.satellite_info_simulation_interval | 시뮬레이션 모드에서 파일로부터 위성 정보 데이터를 읽어들일 간격입니다. |
소스마다 데이터를 제공하는 방식이 다릅니다. 다음 표에는 소켓, 시리얼 포트 및 파일 입력에 대한 ` nmea.source ` 매개변수를 제공하는 다양한 방법이 나열되어 있습니다.
| 구문 | 예 | 설명 |
|---|---|---|
| socket://hostname:port | socket://localhost:12345 | 소켓에서 NMEA 데이터를 가져오려면 ` socket: ` 키워드를 사용합니다. TCP 소켓이 생성되며, 이 소켓은 포트 ` port`을 사용하여 호스트 ` hostname `에 연결을 시도합니다. 연결에 성공하면 서버로부터 텍스트 NMEA 스트림을 수신하게 됩니다. |
| serial:portname | serial:/dev/ttyUSB0 | serial: 키워드를 사용하여 시리얼 포트에서 NMEA 데이터를 수신하도록 지정합니다. 플러그인은 기본 전송 속도(baudrate) 4800 Bd로 portname 포트에 연결을 시도합니다(전송 속도 값은 nmea.baudrate 매개변수를 사용하여 지정할 수 있습니다). 연결에 성공하면 시리얼 포트에서 텍스트 NMEA 스트림을 수신하게 됩니다. 포트 이름을 지정하지 않고 serial:을 사용하는 경우, 플러그인은 벤더 식별자를 사용하여 잘 알려진 직렬 장치 중 하나를 찾으려고 시도합니다. 그러나 잘 알려진 장치의 목록은 제한적이며 사용자의 하드웨어가 포함되지 않을 가능성이 높으므로, 이는 직렬 포트 연결을 사용하는 권장되는 방법이 아님을 유의하십시오. |
serial:COM1 | ||
serial: | ||
| filepath | /home/user/nmealog.txt | file:/// 또는 전체 파일 경로를 사용하여 로컬 파일의 경로를 지정합니다. |
| file:///filepath | file:///home/user/nmealog.txt | |
| qrc:///filepath | qrc:///nmealog.txt | qrc:/// 접두사를 사용하여 애플리케이션 리소스 내 파일의 경로를 지정합니다. |
참고: nmea.source 매개변수가 지정되지 않은경우 , 플러그인은 ( nmea.source = serial: 가 지정된 것처럼) 잘 알려진 직렬 장치 중 하나를 찾으려고 시도합니다.
경고: socket:// 스키마는 암호화되지 않은 연결만 지원합니다. 따라서 호스트 내부 또는 신뢰할 수 있는 네트워크에서만 사용하기에 적합합니다.
위치 소스 사용 예시
다음 예제는 다양한 데이터 소스를 사용하여 nmea PositionSource 를 생성하는 방법을 보여줍니다.
QML
// text file
PositionSource {
name: "nmea"
PluginParameter { name: "nmea.source"; value: "qrc:///nmealog.txt" }
}
// socket
PositionSource {
name: "nmea"
PluginParameter { name: "nmea.source"; value: "socket://localhost:22222" }
}
// serial port
PositionSource {
name: "nmea"
PluginParameter { name: "nmea.source"; value: "serial:/dev/ttyACM0" }
PluginParameter { name: "nmea.baudrate"; value: 4800 }
}C++
// text file
QVariantMap params;
params["nmea.source"] = "qrc:///nmealog.txt";
QGeoPositionInfoSource *textPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);
// socket
params["nmea.source"] = "socket://localhost:22222";
QGeoPositionInfoSource *socketPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);
// serial port
params["nmea.source"] = "serial:/dev/ttyACM0";
params["nmea.baudrate"] = 4800;
QGeoPositionInfoSource *serialPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);참고: PositionSource 가 생성된후에는 다른 유형의 소스 데이터를 사용하도록 재구성할 수 없습니다.
위성 정보 소스 사용 예시
위치 정보 외에도 nmea 플러그인은 위성 정보도 제공할 수 있습니다.
QML
// serial port
SatelliteSource {
name: "nmea"
PluginParameter { name: "nmea.source"; value: "serial:/dev/ttyUSB0" }
PluginParameter { name: "nmea.baudrate"; value: 9600 }
}
// socket
SatelliteSource {
name: "nmea"
PluginParameter { name: "nmea.source"; value: "socket://localhost:22222" }
}C++
// serial port
QVariantMap parameters;
parameters["nmea.source"] = "serial:/dev/ttyUSB0";
params["nmea.baudrate"] = 9600;
QGeoSatelliteInfoSource *serialSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);
// socket
parameters["nmea.source"] = "socket://localhost:22222";
QGeoSatelliteInfoSource *socketSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);사용자 지정 시뮬레이션 속도 설정
QGeoSatelliteInfoSource 를 사용하여 NMEA 스트림이 포함된 파일을 읽으려면, 추가 매개변수 "nmea.satellite_info_simulation_interval" 를 사용할 수도 있습니다. 이 매개변수는 위성 정보 메시지의 재생 속도(밀리초 단위)를 지정하는 데 사용됩니다. 허용되는 최소 빈도는 ` minimumUpdateInterval()`로 지정됩니다. 이보다 작은 값을 지정하면 무시됩니다. 값을 지정하지 않으면 기본값은 ` qMax(100, minimumUpdateInterval())`입니다. 실행 시 ` QNmeaSatelliteInfoSource::setBackendProperty()` 메서드를 사용하여 이 매개변수를 업데이트할 수 있습니다.
// file
QVariantMap parameters;
parameters["nmea.source"] = "qrc:///nmealog.txt";
parameters["nmea.satellite_info_simulation_interval"] = 1000;
QGeoSatelliteInfoSource *fileSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);이 매개변수는 위치 소스에는 적용되지 않습니다. NMEA 프로토콜의 위치 메시지에는 이미 타임스탬프가 포함되어 있기 때문입니다. 이러한 타임스탬프는 QGeoPositionInfoSource 를 사용할 때 파일을 데이터 소스로 지정하여 올바른 메시지 전송 속도를 시뮬레이션하는 데 사용됩니다.
참고: QGeoSatelliteInfoSource 가 생성된후에는 다른 유형의 소스 데이터를 사용하도록 재구성할 수 없습니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.