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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> определение местоположения по сотам, можно ли узнать координаты по сотам
M_Z
сообщение Oct 1 2008, 07:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Доброго времени суток!
подскажите каким образом можно определить координаты (долгота, широта) используя GSM модуль по сотам. Или только возможно получить номер соты, а координаты сот надо знать заранее.
Go to the top of the page
 
+Quote Post
Йокамон
сообщение Oct 1 2008, 11:27
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-12-05
Пользователь №: 12 391



в сетке куча проектов - видел постоянные базы москвы и питера и еще какие-то города присутствовали.... даже пользовал на mpx220-м когда то... правда опсосы периодически крутят антены и ессно базы перестают быть актуальными...
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 1 2008, 11:46
Сообщение #3


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

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



Не очень точные координаты и не для всех операторов и не для всех мест можно получить следующим образом:

1. Необходимо узнать LAI/LAC/CID текущей рабочей вышки (тут все зависит от модуля, можно ли от него эту информацию получить).
2. Затем, пользуясь сервисом гугли получить координаты этой вышки.

Но это будет координата вышки, а не модуля, как понимаете. Если сможете достать из модуля все вышки, которые он видит (обычно, около 6) и уровни сигналов, то можно оценить координаты самого модуля. Заметьте, оценить, а не измерить wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Oct 1 2008, 11:50
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Если смотреть на глобус или политическую карту мира, то очень неплохая точность получится


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 1 2008, 12:10
Сообщение #5


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

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



Ну вот примерно вот так -
Прикрепленное изображение


Круги с цифрами - это базовые станции, которые видит мой телефон в текущий момент. А я нахожусь там где крестик.

Линейку масштаба пришлось прилепить с другого места. Но соответствует.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
M_Z
сообщение Oct 1 2008, 13:01
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Цитата(Rst7 @ Oct 1 2008, 15:10) *
Ну вот примерно вот так -
Прикрепленное изображение


Круги с цифрами - это базовые станции, которые видит мой телефон в текущий момент. А я нахожусь там где крестик.

Линейку масштаба пришлось прилепить с другого места. Но соответствует.

Спасибо за ответ!
По точности у меня представление имеется. Понятно что это не GPS. Но внутри помещенияGPS не работает. Для грубой оценки это вполне приемлимо по сотам. Мне както приходилось воспользоваться ориентацией в Вашингтоне с помощью гуглевкой карты в телефоне. В Минске, где я живу постоянно, пишет что услуга временно не работает.
Просто по утверждениям некоторых людей, соты передают свои координаты. Вот у меня сомнения имеются на этот счет.
Если я всетаки правильно понимаю, то от модуля я могу получить только какой-то номер(идентификатор) соты. А дальше мне нужно где то найти таблицу координат этих сот. Ну и дальше уже простая математическая задача.
Если я не прав то подскжите мне.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 1 2008, 13:05
Сообщение #7


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

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



Цитата
от модуля я могу получить только какой-то номер(идентификатор) соты


Может быть Вы сможете получить от модуля идентификатор соты. Конкретно эти данные называются LAI,LAC и CID. Но, скорее всего, надо патчить софт модуля.

Цитата
А дальше мне нужно где то найти таблицу координат этих сот.


Сходить на сервер гугли, он по этим данным отдаст широту и долготу.


Цитата
Просто по утверждениям некоторых людей, соты передают свои координаты.


Врут.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
slog
сообщение Oct 1 2008, 13:51
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Некоторые сотовые операторы предоставляют услугу - определение положения телефона. Положение телефона приходит в виде ММСки с картой и крестиком. Точность +/- километр.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Oct 1 2008, 17:47
Сообщение #9


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Цитата(Rst7 @ Oct 1 2008, 14:46) *
1. Необходимо узнать LAI/LAC/CID текущей рабочей вышки (тут все зависит от модуля, можно ли от него эту информацию получить).
2. Затем, пользуясь сервисом гугли получить координаты этой вышки.

1. Обратный случай просто нет смысла рассматривать. Если модуль молчит, то меняем на тот, который скажет smile.gif
2. Не обязательно гуглевским - там может быть устаревшая информация, может быть ложная или не быть вовсе. Это может быть и собственный сервис - на "ремэксперте" и на сайте microchip.ua этой темой интересовались; просили создать устройство, привязывающее текущие координаты, полученные от GPS-приёмника, к параметрам БС, полученным от модуля GSM. То, что такое устройство должно периодически перемещаться по интересуемой географической зоне с целью обновления данных - вроде вопросов не вызывает. smile.gif
Но координаты конкретных БС априори известны операторам сотовой связи, чем они, собственно, и пользуются, предлагая за (не очень большую) плату услуги по определению местоположения абонента. С точностью до нескольких трамвайных остановок - проверено wink.gif


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
Йокамон
сообщение Oct 1 2008, 22:27
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-12-05
Пользователь №: 12 391



из источника, имеющего прямое отношение к СБ КС(украинский опсос ) есть инфа - постоянная (по крайней мере раз в месяц) перенаправка антен. и о каких координатах в итоге мона говорить? только если у тебя есть порядка 1000 динамических объектов на средний город которые постоянно обновляют тебе связку жпс-гсм-сот. про географический центр украины с точки зрения операторов я вообще молчу...
Go to the top of the page
 
+Quote Post
uriy
сообщение Oct 2 2008, 03:53
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
из источника, имеющего прямое отношение к СБ КС(украинский опсос ) есть инфа - постоянная (по крайней мере раз в месяц) перенаправка антен.
Никогда еще такого не слышал. И как они объясняют зачем это надо? Но даже если чисто гипотетически предположить что они их крутят, координаты антенны от этого же не меняются.
Go to the top of the page
 
+Quote Post
san822
сообщение Oct 2 2008, 04:06
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 195
Регистрация: 26-07-05
Из: Санкт-Петербург
Пользователь №: 7 111



Цитата(M_Z @ Oct 1 2008, 11:39) *
Доброго времени суток!
подскажите каким образом можно определить координаты (долгота, широта) используя GSM модуль по сотам. Или только возможно получить номер соты, а координаты сот надо знать заранее.


У МТС есть такая услуга www.mpoisk.ru
На номер 7788 отправляется запрос, приходит ответ в текстовом формате(город, ближайшие улицы, метро).
Возможно, с ними можно договориться о предоставлении информации в другом виде.
Точность, правда, не очень большая.
Бывает, что находясь на одном месте, можно получить несколько ответов о своем положении.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 2 2008, 04:59
Сообщение #13


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

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



Цитата
есть инфа - постоянная (по крайней мере раз в месяц) перенаправка антен.


Прямо под окном вышка КС. Че-то никто раз в месяц не приезжает и антенны не крутит. Да и где взять столько народу, чтобы все время крутить антенны? smile.gif Так что слушайте Ваш источник через байт wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Oct 2 2008, 05:22
Сообщение #14


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Да крутить могут (изредка) разве что в случае установки дополнительных БС или изменения рельефа (например, многоэтажку построили лишнюю wink.gif ), по просьбам трудящихся - оптимизация сети называется.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
Alechek
сообщение Oct 3 2008, 05:33
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Насколько я помню, помимо LAI/LAC/CID телефон для каждой вышки отслеживает расстояние до нее, кратное 512 метрам. Это ему необходимо для вычисления задержки сигнала для подавления эха в акустическом тракте.
Отсюда и точность определения координат +-1км при наличии как минимум 3-х БС.
Мобильными яндекс-картами не пробовали ни разу пользоваться??
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 3 2008, 05:43
Сообщение #16


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

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



Цитата
телефон для каждой вышки отслеживает расстояние до нее


Не для каждой, а только для текущей, и только при разговоре (точнее, в состоянии обмена данными с BS).


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
ovik89
сообщение Oct 3 2008, 06:01
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-10-08
Пользователь №: 40 659



На яндекс карты поддерживается для мобильников точьность не измерял но районы соответствуют
Go to the top of the page
 
+Quote Post
Baser
сообщение Oct 3 2008, 12:44
Сообщение #18


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Alechek @ Oct 3 2008, 08:33) *
телефон для каждой вышки отслеживает расстояние до нее, кратное 512 метрам. Это ему необходимо для вычисления задержки сигнала для подавления эха в акустическом тракте.

Модет быть все как раз наоборот? smile.gif

По измеренной задержке сигнала от БС, телефон определяет параметры для работы эхоподавителя.
А возможность вычисления расстояния это уже вторично.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 3 2008, 12:58
Сообщение #19


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

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



Окститесь, какое эхоподавление??? Ему надо знать задержку, чтобы с упреждением включить передатчик, чтобы пакет влетел в приемник BS точно в нужном тайм-слоте.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Baser
сообщение Oct 3 2008, 14:29
Сообщение #20


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Rst7 @ Oct 3 2008, 15:58) *
Окститесь, какое эхоподавление??? Ему надо знать задержку, чтобы с упреждением включить передатчик, чтобы пакет влетел в приемник BS точно в нужном тайм-слоте.

Наверное, вы правы. Я на глубину не нырял smile.gif
Мне просто показалась забавной фраза Alechek, хотя может быть он имел в виду другое...
Go to the top of the page
 
+Quote Post
Йокамон
сообщение Oct 3 2008, 19:38
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-12-05
Пользователь №: 12 391



по поводу "кручения антен" - когда в город Х. приезжала типа коммисия из стольного города К. начиналось кручение(типа, на скока я понимаю диагармы направленности не те иль покрытие не так), как только уезжали - местные возвращали взад... правда было это с годик тому.. что сичас - не знаю - не интересно.
Go to the top of the page
 
+Quote Post
antisingle
сообщение Apr 30 2009, 08:46
Сообщение #22





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



Цитата(Rst7 @ Oct 1 2008, 15:46) *
Не очень точные координаты и не для всех операторов и не для всех мест можно получить следующим образом:

1. Необходимо узнать LAI/LAC/CID текущей рабочей вышки (тут все зависит от модуля, можно ли от него эту информацию получить).
2. Затем, пользуясь сервисом гугли получить координаты этой вышки.

Но это будет координата вышки, а не модуля, как понимаете. Если сможете достать из модуля все вышки, которые он видит (обычно, около 6) и уровни сигналов, то можно оценить координаты самого модуля. Заметьте, оценить, а не измерить wink.gif


А можно немного поподробнее о том, как можно это сделать?

Мой модуль выплевывает следующие данные:
<nbcells>: number of base stations available. The first base station is the serving cell (0 ≤ i ≤ 7)
<ARFCN>: Absolute Radio Frequency Channel Number
<BSIC>: Base Station Identify Code
<PLMN>: PLMN identifiers (3 bytes), made of MCC (Mobile Country Code), and MNC (Mobile Network Code).
<LAC>: Location Area
<CI>: Cell ID, 4 hexadecimal digits, e.g. ABCD.
<RSSI>: Received signal level of the BCCH carrier, decimal value from 0 to 63.
<TA>: Timing advance. Available only during a communication (equals to 0xff=255 at any other time).

В данном случае, CID=>CI, LAC=>LAC, а что такое LAI - не совсем понимаю...
Вот в этом документе нашел информацию, что LAI - это совокупность MNC, MCC, LAC и CID (то есть всего вышеперечисленного).

Также не совсем понятно, как из этой информации можно получить задержку сигнала от определенной вышки...

Подскажите, пожалуйста, как можно переколбасить эти данные в координаты.

ЗЫ О каком, кстати, сервисе Гугла речь идет? Вроде информации по вышкам там взяться неоткуда...
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 30 2009, 09:37
Сообщение #23


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

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



Цитата
А можно немного поподробнее о том, как можно это сделать?


Ну, все данные Вы получаете, судя по тексту ниже.

Цитата
Также не совсем понятно, как из этой информации можно получить задержку сигнала от определенной вышки..


TA - это и есть задержка. В у.е. Актуальна только при наличии соединения.

Цитата
Подскажите, пожалуйста, как можно переколбасить эти данные в координаты.
ЗЫ О каком, кстати, сервисе Гугла речь идет? Вроде информации по вышкам там взяться неоткуда...


Google Maps для мобильных устройств ходит на свой серверок, который по CID/LAC возвращает широту/долготу. Яндекс тоже имеет такой сервис. Недолгое гугление привело к коду

Код
function GetCoordFromGoogle(CountryCode, NetworkCode, LAC, CellID: Integer): string;
var
  strA, strB, strC, strAll: string;
  sResult: string;
  ms: TMemoryStream;
  dLat, dLon: Double;
  iLat, iLon: Integer;
  i: Integer;
  b: byte;
  sTmp, sTmp2: string;
  iCntr: Integer;
  HTTP: TIdHTTP;
begin
  Result := '';
  strA := '000E00000000000000000000000000001B0000000000000000000000030000';
  strB := '0000' + IntToHex(CellID, 2) + '0000' + IntToHex(LAC, 2);
  strC := '000000' + IntToHex(NetworkCode, 2) + '000000' + IntToHex(CountryCode, 2);
  strAll := strA + strB + strC + 'FFFFFFFF00000000';
  HTTP := TIdHTTP.Create(nil);
  HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
  HTTP.Request.ContentLength := Length(strAll) div 2;
  ms := TMemoryStream.Create;
  try
    iCntr := 1;
    for i := 1 to (Length(strAll) div 2) do begin
      b := StrToInt('0x' + Copy(strAll, iCntr, 2));
      iCntr := iCntr + 2;
      ms.Write(b, 1);
    end;
    ms.Seek(0, soFromBeginning);
    try
      sResult := HTTP.Post('http://www.google.com/glm/mmap', ms);
      if Length(sResult) > 14 then begin
        sTmp := '0x';
        for i := 1 to 5 do begin
          sTmp2 := Copy(sResult, i + 6, 1);
          sTmp := sTmp + IntToHex(Ord(sTmp2[1]), 2);
        end;
        iLat := StrToInt(sTmp);
        sTmp := '0x';
        for i := 1 to 4 do begin
          sTmp2 := Copy(sResult, i + 11, 1);
          sTmp := sTmp + IntToHex(Ord(sTmp2[1]), 2);
        end;
        iLon := StrToInt(sTmp);
        dLat := iLat/1000000;
        dLon := iLon/1000000;
        Result := Format('%12.7f%s%12.7f', [dLat, #13#10, dLon]);
      end;
    except
      // stub
    end;
  finally
    HTTP.Free;
    ms.Free;
  end;
end;

function GetCoordFromYandex(CountryCode, NetworkCode, LAC, CellID: Integer): string;
const
cc_URL = 'http://mobile.maps.yandex.net/cellid_location/?&cellid=%d&operatorid=%d&countrycode=%d&lac=%d';
var
  sURL: string;
  rs: TStream;
  node: IXMLNode;
  HTTP: TIdHTTP;
  XML: TXMLDocument;
begin
  Result := '';
  sURL := Format(cc_URL, [CellID, NetworkCode, CountryCode, LAC]);
  rs := TMemoryStream.Create;
  HTTP := TIdHTTP.Create(nil);
  XML := TXMLDocument.Create(HTTP); // если указать nil то будет ошибка :-D
  try
    HTTP.Request.Accept := 'text/plain';
    HTTP.Request.AcceptEncoding := 'windows-1251';
    try
      HTTP.Get(sURL, rs);
      if rs.Size > 0 then begin
        rs.Seek(0, soFromBeginning);
        XML.LoadFromStream(rs);
        XML.NSPrefixBase := 'location';
        node := XML.Node.ChildNodes.FindNode('location');
        if (node <> nil) then begin
          node := node.ChildNodes.FindNode('coordinates');
          if (node <> nil) then begin
            Result :=
              StringReplace(node.Attributes['latitude'], '.', ',', []) + #13#10 +
              StringReplace(node.Attributes['longitude'], '.', ',' ,[]);
          end;
        end;
      end;
    except
      // stub
    end;
  finally
    XML.Free;
    HTTP.Free;
    rs.Free;
  end;
end;


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





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



Rst7, спасибо!

Круто, я б не догадался, что у Гугла с Яндексом есть такой замечательный сервис smile.gif

Сейчас вижу вокруг себя 7 станций, то есть, если померить задержку до каждой - то можно получить довольно неплохую погрешность!

Осталось найти способ, как можно измерить задержку для требуемой станции, потому как я пока не вижу, как для связи можно использовать какую-то определенную БС. Для этого есть какие-то определенные АТ-команды?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 30 2009, 10:58
Сообщение #25


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

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



Цитата
Осталось найти способ, как можно измерить задержку для требуемой станции


Без ковыряний внутри софта модуля - никак, т.к. можно измерить задержку до текущей БС только в режиме разговора.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
etoja
сообщение Apr 30 2009, 12:07
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(Йокамон @ Oct 3 2008, 23:38) *
по поводу "кручения антен" - когда в город Х. приезжала типа коммисия из стольного города К. начиналось кручение(типа, на скока я понимаю диагармы направленности не те иль покрытие не так), как только уезжали - местные возвращали взад... правда было это с годик тому.. что сичас - не знаю - не интересно.


В сетях GSM используется вертикальная поляризация и ваше "кручение антен" - глупость.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Apr 30 2009, 19:24
Сообщение #27


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Почему? Крутить можно в горизонтальной плоскости, ещё как помогает.
Хотя вживую процесса кручения никогда не видел, это надо куда-то на периферию выезжать в преддверии визита каких-то высокопоставленных wink.gif


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
antisingle
сообщение May 6 2009, 06:55
Сообщение #28





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



Цитата(Rst7 @ Apr 30 2009, 14:58) *
Без ковыряний внутри софта модуля - никак, т.к. можно измерить задержку до текущей БС только в режиме разговора.


Итак, как найти задержку разобрался. Убедился, что расстояние (благо, формулу знаю) можно измерить
1.только до текущей станции
2.только в режиме разговора
smile.gif

Погрешность - около полукилометра

Сменить станцию посредством АТ-команд не предоставляется возможным - насколько я понимаю, то базовая станция выбирается не модулем, а сетью. То есть найти свои координаты по ТА не представляется возможным - можно только найти расстояние до текущей станции.

Из остальных данные здесь может помочь, видимо, только уровень сигнала - он хоть как-то коррелирует с расстоянием, однако, как количественно связать эту цифру с расстоянием, я не знаю.
Go to the top of the page
 
+Quote Post
alx125
сообщение May 18 2009, 02:19
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204



Цитата(antisingle @ Apr 30 2009, 12:46) *
А можно немного поподробнее о том, как можно это сделать?

Мой модуль выплевывает следующие данные:
<nbcells>: number of base stations available. The first base station is the serving cell (0 ≤ i ≤ 7)
<ARFCN>: Absolute Radio Frequency Channel Number
<BSIC>: Base Station Identify Code
<PLMN>: PLMN identifiers (3 bytes), made of MCC (Mobile Country Code), and MNC (Mobile Network Code).
<LAC>: Location Area
<CI>: Cell ID, 4 hexadecimal digits, e.g. ABCD.
<RSSI>: Received signal level of the BCCH carrier, decimal value from 0 to 63.
<TA>: Timing advance. Available only during a communication (equals to 0xff=255 at any other time).

...



Подскажите пожалуйста, как GSM-модуль Вы используете? Помоему SIM300 не выдает параметр <TA>.
Go to the top of the page
 
+Quote Post
av-master
сообщение May 18 2009, 07:33
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 857
Регистрация: 14-05-05
Из: Украина
Пользователь №: 4 998



А где вообще найти спецификацию GSM-a, Например свой модуль.... сделать ))) ? Насколько я понимаю нет в Интернетах ничего секретного )))
Go to the top of the page
 
+Quote Post
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 Текстовая версия Сейчас: 29th July 2025 - 20:35
Рейтинг@Mail.ru


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