LINUX.ORG.RU

Как управлять GPS-модулем


0

1

GPS-модуль Telit SL869 подключен к порту /dev/ttyS1. Если я подключаюсь к нему миникомом, то вижу примерно следующую информацию:

$GNGS,99.0,9917,036,,04,25,06GSV,3,2,10,14,057,289,*75
$GPGS,74,30,1,,76,33,305,,75,82,047,*6A
$GLGSV,,,83,07,023,,67,7,*66
$GN17,036,,04,25,064,,06,10,139,,12,26,261,7,289,*75
$GPGSV,3,3,10,26,12,189,,28,26,33,305,,75,82,047,*6A
$GLGSV,3,2,09,83,09,85,56,150,,,,,,,,,,,,,*56
В общем обычный NMEA протокол. Сообщения обновляются каждую секунду. В мануале к GPS написано, что можно отправлять команды типа $PST........... Но там расписано, как это делать с помощью специализированного ПО под Windows.
А можно зауправлять модулем средствами Linux прямо в терминале или в миникоме?



Последнее исправление: podovalov5 (всего исправлений: 1)

Сделай по аналогии:

http://www.thinkwiki.org/wiki/Ericsson_F3507g_Mobile_Broadband_Module

+

sci-geosciences/gpsd (gentoo)

--

Но скорее всего после перехода в режим выдачи данных, ты его сможешь только отключить — он будет игнорировать все команды, и только выдавать данные от спутников.

soomrack ★★★★★
()
Последнее исправление: soomrack (всего исправлений: 2)

Открой два терминала, в одном

cat /dev/твое устройство
тут будешь смотреть как команды отрабатывают

в другом

echo -e "АТ-команда\r\n" > /dev/твое устройство
тут ты их посылаешь

Google_Play
()
Ответ на: комментарий от Google_Play

Спасибо за помощь. А наоборот: как заполучить строку вида

$GNGS,99.0,9917,036,,04,25,06GSV,3,2,10,14,057,289,*75 
не через миником, а прямо в терминале? Посоветуй, пожалуйста.

podovalov5
() автор топика
Ответ на: комментарий от podovalov5

как заполучить строку вида $GNGS,99.0,9917,036,,04,25,06GSV,3,2,10,14,057,289,*75 не через миником, а прямо в терминале?

Я же выше написал, открываешь два терминала, в одном вводишь теже команды, что и в minicom, а в другом смотришь вывод. Какие команды ты вводишь в minicom, что бы NMEA получить?

Google_Play
()
Ответ на: комментарий от podovalov5

Сразу же нагуглился User_Guide, где подробно описаны АТ-команды. Как я писал выше, открываешь два терминала в одном будешь смотреть, в другом вводишь

echo -e "PSTMINITGPS\r\n" > /dev/ttyS1
- инициализируешь модуль, и
echo -e "PSTMNMEAONOFF\r\n" > /dev/ttyS1
- смотришь NMEA.

Google_Play
()
Ответ на: комментарий от Google_Play

может понадобится stty -F /dev/ttyS1 со скоростью и возможно другими параметрами

Elyas ★★★★★
()
Ответ на: комментарий от KivApple

Модуль сам каждую секунду плюётся данными.

Вот мне из этих данных только одна строчка нужна. Как получить?

podovalov5
() автор топика

"миником" на баше, лол

cat at.sh

#!/bin/bash

MODEM=$2
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT

function get_response
{
        local ECHO
        # cat will read the response, then die on timeout
        cat <&5 >$TMP &
        echo -e "$1\r" >&5
        # wait for cat to die
        wait $!

        exec 6<$TMP
        read ECHO <&6
        if [ "$ECHO" != "$1" ]
        then
                exec 6<&-
                return 1
        fi

        read RESPONSE <&6
        exec 6<&-
        return 0
}

RESPONSE=""

# Set modem with timeout of 5/10 a second
stty -F "$MODEM" 9600 -echo igncr -icanon onlcr ixon min 0 time 8

# Open modem on FD 5
exec 5<>"$MODEM"

get_response "$1" || echo "Bad response"
echo ${RESPONSE}
exec 5<&-

юзать так: ./at.sh your_at_cmd /dev/ttyS1

aol ★★★★★
()
Ответ на: "миником" на баше, лол от aol

Остается еще в пару раз увеличить количество строчек кода, сделать это на сях — и получится простейший терминальный клиент.

// ТСу советую попробовать утилиту com из пакета tinyserial.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

зачем мне оно на сях, если оно и так из удева неплохо дёргается ;)
//не спрашивай, зачем :-D

aol ★★★★★
()
Ответ на: комментарий от Eddy_Em

С задачами справляется. Народу нравится.

podovalov5
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.