реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> определение местоположения по сотам, можно ли узнать координаты по сотам
Rst7
сообщение May 18 2009, 07:41
Сообщение #31


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А где вообще найти спецификацию GSM-a


Не вопрос smile.gif

http://webapp.etsi.org/key/queryform.asp

Кое чего тут не достает. Описания криптографических алгоритмов GSM либо ищете на просторах инета (старые версии, но еще вполне применяемы), либо получается лиценизию оператора и с этой лицензией подписываете NDA и получаете их у ETSI.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
antisingle
сообщение May 22 2009, 10:54
Сообщение #32





Группа: Участник
Сообщений: 12
Регистрация: 15-01-09
Пользователь №: 43 428



Цитата(alx125 @ May 18 2009, 06:19) *
Подскажите пожалуйста, как GSM-модуль Вы используете? Помоему SIM300 не выдает параметр <TA>.


Hilo, прошивка - 6.00, в более ранних версиях ТА, кажись, также не было.
Go to the top of the page
 
+Quote Post
kslabs
сообщение May 27 2009, 13:25
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 3-08-06
Пользователь №: 19 291



Цитата(antisingle @ May 22 2009, 14:54) *
Hilo, прошивка - 6.00, в более ранних версиях ТА, кажись, также не было.


Спрашивалось про SIM300, а Вы про что?
Go to the top of the page
 
+Quote Post
antisingle
сообщение Jun 2 2009, 12:54
Сообщение #34





Группа: Участник
Сообщений: 12
Регистрация: 15-01-09
Пользователь №: 43 428



Цитата
Подскажите пожалуйста, как GSM-модуль Вы используете?


Цитата(kslabs @ May 27 2009, 17:25) *
Спрашивалось про SIM300, а Вы про что?


Блин, вопрос прочитал как "...какой GSM-модуль..." smile.gif
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 5 2013, 16:18
Сообщение #35


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Попробовал отправить данные на www.google.com/glm/mmap
В ответ получаю
Код
HTTP/1.1 501 Not Implemented
Content-Type: text/html; charset=UTF-8
Date: Tue, 05 Mar 2013 16:31:17 GMT
Expires: Tue, 05 Mar 2013 16:31:17 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked

<HTML>
<HEAD>
<TITLE>Not Implemented</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Not Implemented</H1>
<H2>Error 501</H2>
</BODY>
</HTML>

Вопрос - этот сервис все еще работает, а то появлялась информаия, что он закрыт? http://code.google.com/p/gears/wiki/GeolocationAPI
Возможно, конечно я запрос криво составляю, но ответ подозрителен.

Сообщение отредактировал kan35 - Mar 5 2013, 16:20
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 5 2013, 19:32
Сообщение #36


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата
Вопрос - этот сервис все еще работает, а то появлялась информаия, что он закрыт? http://code.google.com/p/gears/wiki/GeolocationAPI


Сервис google на основе JSON насколько знаю никогда не выдавал координат на основе базовых станций.
Самое интересное что он мог это выдать адрес на основе переданных ему координат.

А сервис www.google.com/glm/mmap это закрытый протокол. Исходники для которого тут выше показали.
Только что проверил, этот сервис работает идеально.
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 6 2013, 05:20
Сообщение #37


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(AlexandrY @ Mar 5 2013, 23:32) *
Сервис google на основе JSON насколько знаю никогда не выдавал координат на основе базовых станций.
Самое интересное что он мог это выдать адрес на основе переданных ему координат.

Это тоже интересно, кстати. Но я понял, что координаты он выдавать должен...
Цитата(AlexandrY @ Mar 5 2013, 23:32) *
А сервис www.google.com/glm/mmap это закрытый протокол. Исходники для которого тут выше показали.
Только что проверил, этот сервис работает идеально.

Я и делаю по аналогии.
Это хорошая новость, значит у меня что то не так в запросе, прошу посмотреть, а то я в html совсем плохо... Или в теле запроса что то не то...
Код
                        char string_out[1500] = "";
                        unsigned short strleftlen = sizeof(string_out) - 1;
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "000E00000000000000000000000000001B0000000000000000000000030000");
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "0000%.4X0000%.4X", u_tri.ya.cellid, u_tri.ya.lac);
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "000000%.4X000000%.4X", u_tri.ya.operatorid, u_tri.ya.countrycode);
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "FFFFFFFF00000000");

                        // PREAMBULA
                        char preambula[200] = "";
                        strleftlen = sizeof(preambula)-1;
                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "POST /glm/mmap HTTP/1.1\r\n");
                        //strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Host: www.google.com\r\n");
                        //strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Accept-Encoding: identity\r\n");
                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Content-length: %d\r\n", strlen(string_out));
                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Content-type: application/x-www-form-urlencoded\r\n");
                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "\r\n");
                        
                        if ( netconn_write(google_locator, preambula, strlen(preambula), NETCONN_NOCOPY) == ERR_OK )
                        {
                            printf("\r\n1\r\n");
                        }
                        if ( netconn_write(google_locator, string_out, strlen(string_out), NETCONN_NOCOPY) == ERR_OK )
                        {
                            printf("\r\n2\r\n");
                        }
                        struct netbuf * in_buf = netconn_recv(google_locator);

Ответ сервера - в предыдущем моем сообщении
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 6 2013, 08:01
Сообщение #38


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Вот непосредственно что отправлено на www.google.com:

POST /glm/mmap HTTP/1.1
Content-length: 114
Content-type: application/x-www-form-urlencoded

000E00000000000000000000000000001B000000000000000000000003000000002FAF00006D0100
0000006300000000FAFFFFFFFF00000000
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 6 2013, 10:33
Сообщение #39


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(kan35 @ Mar 6 2013, 10:01) *
Вот непосредственно что отправлено на www.google.com:

POST /glm/mmap HTTP/1.1
Content-length: 114
Content-type: application/x-www-form-urlencoded

000E00000000000000000000000000001B000000000000000000000003000000002FAF00006D0100
0000006300000000FAFFFFFFFF00000000


Вот дамп запроса и ответа чтоб была полная ясность:

Код
00000000  50 4f 53 54 20 2f 67 6c  6d 2f 6d 6d 61 70 20 48 POST /gl m/mmap H
00000010  54 54 50 2f 31 2e 30 0d  0a 43 6f 6e 6e 65 63 74 TTP/1.0. .Connect
00000020  69 6f 6e 3a 20 6b 65 65  70 2d 61 6c 69 76 65 0d ion: kee p-alive.
00000030  0a 43 6f 6e 74 65 6e 74  2d 54 79 70 65 3a 20 61 .Content -Type: a
00000040  70 70 6c 69 63 61 74 69  6f 6e 2f 62 69 6e 61 72 pplicati on/binar
00000050  79 0d 0a 43 6f 6e 74 65  6e 74 2d 4c 65 6e 67 74 y..Conte nt-Lengt
00000060  68 3a 20 35 35 0d 0a 48  6f 73 74 3a 20 77 77 77 h: 55..H ost: www
00000070  2e 67 6f 6f 67 6c 65 2e  63 6f 6d 0d 0a 41 63 63 .google. com..Acc
00000080  65 70 74 3a 20 74 65 78  74 2f 68 74 6d 6c 2c 20 ept: tex t/html,
00000090  2a 2f 2a 0d 0a 41 63 63  65 70 74 2d 45 6e 63 6f */*..Acc ept-Enco
000000A0  64 69 6e 67 3a 20 69 64  65 6e 74 69 74 79 0d 0a ding: id entity..
000000B0  55 73 65 72 2d 41 67 65  6e 74 3a 20 4d 6f 7a 69 User-Age nt: Mozi
000000C0  6c 6c 61 2f 33 2e 30 20  28 63 6f 6d 70 61 74 69 lla/3.0  (compati
000000D0  62 6c 65 3b 20 49 6e 64  79 20 4c 69 62 72 61 72 ble; Ind y Librar
000000E0  79 29 0d 0a 0d 0a                                y)....
000000E6  00 0e 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000F6  1b 00 00 00 03 00 00 00  f6 00 00 00 03 00 00 00 ........ ........
00000106  00 a8 5f 00 00 00 02 00  00 00 03 00 00 00 f6 ff .._..... ........
00000116  ff ff ff 00 00 00 00                             .......
    00000000  48 54 54 50 2f 31 2e 30  20 32 30 30 20 4f 4b 0d HTTP/1.0  200 OK.
    00000010  0a 43 6f 6e 74 65 6e 74  2d 54 79 70 65 3a 20 61 .Content -Type: a
    00000020  70 70 6c 69 63 61 74 69  6f 6e 2f 62 69 6e 61 72 pplicati on/binar
    00000030  79 0d 0a 43 6f 6e 74 65  6e 74 2d 4c 65 6e 67 74 y..Conte nt-Lengt
    00000040  68 3a 20 32 35 0d 0a 44  61 74 65 3a 20 57 65 64 h: 25..D ate: Wed
    00000050  2c 20 30 36 20 4d 61 72  20 32 30 31 33 20 31 30 , 06 Mar  2013 10
    00000060  3a 34 32 3a 34 35 20 47  4d 54 0d 0a 45 78 70 69 :42:45 G MT..Expi
    00000070  72 65 73 3a 20 57 65 64  2c 20 30 36 20 4d 61 72 res: Wed , 06 Mar
    00000080  20 32 30 31 33 20 31 30  3a 34 32 3a 34 35 20 47  2013 10 :42:45 G
    00000090  4d 54 0d 0a 43 61 63 68  65 2d 43 6f 6e 74 72 6f MT..Cach e-Contro
    000000A0  6c 3a 20 70 72 69 76 61  74 65 2c 20 6d 61 78 2d l: priva te, max-
    000000B0  61 67 65 3d 30 0d 0a 58  2d 43 6f 6e 74 65 6e 74 age=0..X -Content
    000000C0  2d 54 79 70 65 2d 4f 70  74 69 6f 6e 73 3a 20 6e -Type-Op tions: n
    000000D0  6f 73 6e 69 66 66 0d 0a  58 2d 46 72 61 6d 65 2d osniff.. X-Frame-
    000000E0  4f 70 74 69 6f 6e 73 3a  20 53 41 4d 45 4f 52 49 Options:  SAMEORI
    000000F0  47 49 4e 0d 0a 58 2d 58  53 53 2d 50 72 6f 74 65 GIN..X-X SS-Prote
    00000100  63 74 69 6f 6e 3a 20 31  3b 20 6d 6f 64 65 3d 62 ction: 1; mode=b
    00000110  6c 6f 63 6b 0d 0a 53 65  72 76 65 72 3a 20 47 53 lock..Se rver: GS
    00000120  45 0d 0a 43 6f 6e 6e 65  63 74 69 6f 6e 3a 20 4b E..Conne ction: K
    00000130  65 65 70 2d 41 6c 69 76  65 0d 0a 0d 0a 00 0e 1b eep-Aliv e.......
    00000140  00 00 00 00 03 41 fa b9  01 82 0b 36 00 00 06 1b .....A.. ...6....
    00000150  00 00 00 4b 00 00                                ...K..
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 6 2013, 11:06
Сообщение #40


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Спасибо за ответ, часть проблем действительно прояснилась, зато другая часть... у вас дамп данных слишком отличается от шаблона в примере. И в остальных примерах из интернета все поиному тоже, я в замешательстве.
Например, начало у всех одинаковое:
00 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1B 00 00 00 0000000000000000030000
00 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 03
(в вашем дампе)
Как интерпретировать остальные поля? Кое что понятно, типа код страны вижу F6, а остальное - не догадываюсь как идет, да и длина у вас 55, у меня 57...

Сообщение отредактировал kan35 - Mar 6 2013, 11:09
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 6 2013, 12:29
Сообщение #41


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Порблему нашел: на самом деле пример написан весьма криво. У автора написано, IntToHex каждый раз в параметре принимает длину в байт, в его конкретном случае это прокатило (2-байтные числа просто насильно выводились), а я смотря на параметр в функции подумал, этот параметр уже означает 2-байтный результат. Потом уже хелп на деkab глянул и прояснилось. Ну в общем и нарушил длину и выравнивание.
А на самом деле ВСЕ 4 параметра передаются 4-байтными числами и не будет уже значительного количества непонятных нулей.
Код
strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "000E00000000000000000000000000001B0000000000000000000000030000");
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "%.8X%.8X", u_tri.ya.cellid, u_tri.ya.lac);
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "%.8X%.8X", u_tri.ya.operatorid, u_tri.ya.countrycode);
                        strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "FFFFFFFF00000000");

Интересно, что значат остальные байты...
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 13 2013, 14:08
Сообщение #42


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



А вообще, тут нафиг не нужно работать со строками, преобразовывать их туда-сюда. Все тупо в структуру укладывается. Если бы еще не big endian, то совсем было бы красиво, но и так сойдет:
Код
                                        struct GOOGLE_REQUEST_Y{
                                            unsigned char pre[31];
                                            unsigned long cellid;
                                            unsigned long lac;
                                            unsigned long operatorid;
                                            unsigned long countrycode;
                                            unsigned char post[8];                            
                                        }send = {
                                            {0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00},
                                            ((u_tri.ya.cellid<<24)&0xFF000000) | ((u_tri.ya.cellid<<8)&0x00FF0000) | ((u_tri.ya.cellid>>8)&0x0000FF00) | ((u_tri.ya.cellid>>24)&0x000000FF),
                                            ((u_tri.ya.lac<<24)&0xFF000000) | ((u_tri.ya.lac<<8)&0x00FF0000) | ((u_tri.ya.lac>>8)&0x0000FF00) | ((u_tri.ya.lac>>24)&0x000000FF),
                                            ((u_tri.ya.operatorid<<24)&0xFF000000) | ((u_tri.ya.operatorid<<8)&0x00FF0000) | ((u_tri.ya.operatorid>>8)&0x0000FF00) | ((u_tri.ya.operatorid>>24)&0x000000FF),
                                            ((u_tri.ya.countrycode<<24)&0xFF000000) | ((u_tri.ya.countrycode<<8)&0x00FF0000) | ((u_tri.ya.countrycode>>8)&0x0000FF00) | ((u_tri.ya.countrycode>>24)&0x000000FF),
                                            {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00}
                                        };


Теперь вот столкнулся с проблемой собственно определения местоположения. Для начала тупо усреднил координаты видимых вышек и получил вполне сравнимый с яндекс-локатором результат. Даже лучче))
Но понятно, что нужно решать некую систему квадратных уравнений. У кого нибудь такое решение может имеется? поделитесь плиз.

Сообщение отредактировал kan35 - Mar 13 2013, 14:28
Go to the top of the page
 
+Quote Post
GeGeL
сообщение Mar 13 2013, 17:42
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Цитата(kan35 @ Mar 13 2013, 18:08) *
Если бы еще не big endian, то совсем было бы красиво

htonl( ) украсит код

Сообщение отредактировал GeGeL - Mar 13 2013, 17:45
Go to the top of the page
 
+Quote Post
kan35
сообщение Mar 24 2013, 12:18
Сообщение #44


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(GeGeL @ Mar 13 2013, 21:42) *
htonl( ) украсит код

Код украсил, спасибо :-)
Код
                                        #pragma pack(1)
                                        struct GOOGLE_REQUEST_Y{
                                            unsigned char pre[31];
                                            unsigned long cellid;
                                            unsigned long lac;
                                            unsigned long operatorid;
                                            unsigned long countrycode;
                                            unsigned char post[8];                            
                                        }send = {
                                            {0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00},
                                            htonl((unsigned long)u_tri.ya.cellid),
                                            htonl((unsigned long)u_tri.ya.lac),
                                            htonl((unsigned long)u_tri.ya.operatorid),
                                            htonl((unsigned long)u_tri.ya.countrycode),
                                            {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00}
                                        };
                                        #pragma pack(4)
                                        // PREAMBULA
                                        char preambula[200] = "";
                                        unsigned short strleftlen = sizeof(preambula)-1;
                                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "POST /glm/mmap HTTP/1.1\r\n");
                                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Content-type: application/binary\r\n");
                                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Content-length: %d\r\n", sizeof(send));
                                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "Accept-Encoding: identity\r\n");
                                        strleftlen -= snprintf (preambula + strlen(preambula), strleftlen, "\r\n");
                                        
                                        if ( netconn_write(google_locator, preambula, strlen(preambula), NETCONN_NOCOPY) == ERR_OK )
                                        {
                                        }
                                        if ( netconn_write(google_locator, &send, sizeof(send), NETCONN_NOCOPY) == ERR_OK )
                                        {
                                        }
                                        struct netbuf * in_buf = netconn_recv(google_locator);
                                        if ( in_buf )
                                        {
                                            unsigned long buflen = netbuf_len(in_buf);
                                            ...

Но правильно вычислить координаты все еще не получилось. Мозг зачерствел. Прошу помощи:
Нужно из координат и силы сигнала вышек базовых станций определить координату точки. Задача вроде бы для школы, где то на уровне подсознания "крутятся" вектора, но... эх..
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016