какой пакет (фрейм/кадр) надо послать на COM-порт GPS, чтобы слить из него прошивку (firmware). КАк сделать это через USB - понятно, но схема не работает для COM-порта :(
Умные дядьки, подскажите
Правила форума
Для предотврашения спама первые сообщения вновь зарегистрированных пользователей проходят ручную премодерацию.
Для предотврашения спама первые сообщения вновь зарегистрированных пользователей проходят ручную премодерацию.
|
||
Re: Умные дядьки, подскажите
все так же как и для USB, только подтверждения надо посылать после каждой принятой страницы
Re: Умные дядьки, подскажите
А вот и не выходит так! Посылаю пакет с pid = 0x60 и командой 0x0e, а в ответ приходит только один ACK. Может что еще надо до или после?
Re: Умные дядьки, подскажите
void Ack(BYTE cmd) {
TGarminSerialPacket pkt;
BYTE ackdata[2]; //ack it
ackdata[0] = cmd;
ackdata[1] = 0x00;
SendCmd(0x06, ackdata, sizeof(ackdata));
}
{
BYTE area = 0x0E;
SendCmd(0x60, (BYTE *)&area, sizeof(area));
Recv(&pkt); //here should be ack
Recv(&pkt); //here should be 0x4A
while (1) {
Recv(&pkt); //here should be dump
if (pkt.func!=0x24 || pkt.data.size()<4) //0x24 - area dump? //length can be 4, for pages containing only ff s
break;
Ack(pkt.func);
}
}
примерно так
TGarminSerialPacket pkt;
BYTE ackdata[2]; //ack it
ackdata[0] = cmd;
ackdata[1] = 0x00;
SendCmd(0x06, ackdata, sizeof(ackdata));
}
{
BYTE area = 0x0E;
SendCmd(0x60, (BYTE *)&area, sizeof(area));
Recv(&pkt); //here should be ack
Recv(&pkt); //here should be 0x4A
while (1) {
Recv(&pkt); //here should be dump
if (pkt.func!=0x24 || pkt.data.size()<4) //0x24 - area dump? //length can be 4, for pages containing only ff s
break;
Ack(pkt.func);
}
}
примерно так
Re: Умные дядьки, подскажите
Спасибо за код, я так и делал, но... может это не на всяком навигаторе срабатывает? Я пробовал на Foretrex 101. Вот лог общения из GPSDaemon:
<--- Packet 10 60 02 0E 00 90 10 03 sent
COM
---> 2 (0x02) bytes received :
HEAD : 10 06 02
DATA : 60 00
TAIL : 98 10 03
ACK 60 received
Т.е. больше ничего не идет из навигатора, нет той инфы для которой предназначена строка Recv(&pkt); //here should be 0x4A
Что не так? %)
<--- Packet 10 60 02 0E 00 90 10 03 sent
COM
---> 2 (0x02) bytes received :
HEAD : 10 06 02
DATA : 60 00
TAIL : 98 10 03
ACK 60 received
Т.е. больше ничего не идет из навигатора, нет той инфы для которой предназначена строка Recv(&pkt); //here should be 0x4A
Что не так? %)
|
||
Re: Умные дядьки, подскажите
ну значит не повезло =)
Re: Умные дядьки, подскажите
и это прискорбно...
Может для него нужны "особые" команды? :)
Есть какие технологии это выяснить в домашних условиях?
Может для него нужны "особые" команды? :)
Есть какие технологии это выяснить в домашних условиях?
Re: Умные дядьки, подскажите
_WTF, а можешь сказать для какого навигатора сработал этот метод?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 77 гостей