У меня есть компьютер с GPS, подключенным к последовательному порту, на котором работает gpsd с довольно простой конфигурацией. Вот содержимое /etc/default/gpsd:
START_DAEMON="true"
USBAUTO="false"
DEVICES="/dev/ttyS0"
GPSD_OPTIONS="-n -G"
GPSD_SOCKET="/var/run/gpsd.sock"
С этой конфигурацией gpsd работает нормально, и все клиентские утилиты gpsd, например. cgps, gpspipe, gpsmon могут получать данные с GPS.
Я пытаюсь получить доступ к данным GPS из программы Qt QML, используя элемент PositionSource
со следующим синтаксисом, но lat и long отображаются как NaN, поэтому это не работает:
PositionSource {
id: gpsPos
updateInterval: 500
active: true
nmeaSource: "socket://localhost:2947"
onPositionChanged: {
myMap.update( gpsPos.position )
}
}
Я попытался передать данные NMEA от GPS к другому порту, используя gpspipe -r | nc -l 6000
и указав nmeaSource: "socket://localhost:6000
, и все работает нормально!
Как заставить Qt общаться с gpsd напрямую?