Re[3]: не коннектится OBEX
От: kiborg Россия  
Дата: 03.11.05 03:59
Оценка: 2 (1) :)
Здравствуйте, Tsnok, Вы писали:

Не понял этого выражения:
T>Проблема в том, что структура адреса и имя сервиса у меня определено.

А в чем тогда проблема? Или даже так — а почему в этом проблема?
Почему (в чём) проблема, что "структура адреса и имя сервиса" определено?
Короче я не понял вопроса.
Я вот понимаю что определено, но не так. Значит надо провильно определить. Или что?



T>Сам пишу на дельфи и с C почти незнаком.

T>Пример ( хотя бы общие вещи ) на дельфи не подкинешь.

С точностью до наоборот.-) Доже на слух морщусь от слова Pascal

T>Благодарю за помошь.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: не коннектится OBEX
От: kiborg Россия  
Дата: 03.11.05 03:59
Оценка: 2 (1)
Здравствуйте, Tsnok, Вы писали:

T>Дело в том, что для связи с мобильным устройством использую сокеты — WINSOCK, и ком порт(эмуляция его работы) мне не подходит


А где ты увидел COM порт? Если ты про (TComm), то это базовый класс работы с портами (это мной написано поэтому не ищи в справке) от которого наследуются классы для работы уже с COM, IrDA, Bluetooth.
И в функцию описанную выше
bool OBEX_FTP::Open(TComm *p)

Я уже передаю готовый открытый порт (а что это за порт это не важно).
Просто если это COM порт то его надо предварительно перевести (на мобильном устройстве) в двоичный (точнее в данном случае OBEX, потому что существуют и другие режимы) режим AT коммандой (какой зависит от устройсва, фирмы, модели).
А в случае с открытием через Инфракрасный порт или BT посредством сокетов ты указывая в свойсвах SOCKADDR_IRDA "OBEX"
SOCKADDR_IRDA  SockAddr = {AF_IRDA, 0, 0, 0, 0, "OBEX"};


Ты говоришь ему по какому протоколу будешь общаться через этот сокет. Потому что есть ещё масса других протоколов (и тот же СОМ потр, и печать на принтере, и нискоуровневые. А у Bluetooth я вообще молчу)
Конечно нужно и другие поля этой струкруры заполнить. Ты же ещё не сказал к какому конкретно устройству будешь обращаться (а ведь можно сразу параллельно к нескольким).

что то типа того (это выдержки из моего кода для понимания):

   #define DEVICE_LIST_LEN   10

   unsigned char   DevListBuff[sizeof(DEVICELIST) -
          sizeof(IRDA_DEVICE_INFO) +
         (sizeof(IRDA_DEVICE_INFO) * DEVICE_LIST_LEN)];
   int      DevListLen   = sizeof(DevListBuff);
   PDEVICELIST   pDevList   = (PDEVICELIST) &DevListBuff;

   pDevList->numDevice = 0;

   getsockopt(sock, SOL_IRLMP, IRLMP_ENUMDEVICES,
               (char *) pDevList, &DevListLen);

  if (pDevList->numDevice == 0) // Не найдено ни одного устройства
  {
    ...
  }
  else
  {

    for (int i = 0; i < (int) pDevList->numDevice; i++)
    {
        
       memcpy(&SockAddr.irdaDeviceID[0], &pDevList->Device[i].irdaDeviceID[0], 4);
    }
  }



остаётся только запросить нужный сервис у OBEX (пример кода я приводил выше). Он же не только просмотр файлов обеспечивает:
#define OBEX_FOLDER_LISTING_TYPE "x-obex/folder-listing"
#define OBEX_ICALENDAR_TYPE      "text/calendar"
#define OBEX_VCALENDAR_TYPE      "text/x-vCalendar"
#define OBEX_VCARD_TYPE          "text/x-vCard"
#define OBEX_VNOTE_TYPE          "text/x-vNote"
#define OBEX_VMESSAGE_TYPE       "text/x-vMsg"
#define OBEX_UPF_TYPE            "image/x-UPF"
#define OBEX_JPEG_TYPE           "image/jpeg"
#define OBEX_TEXT_TYPE           "text/plain"


Короче говоря иди по порядку.
Добейся сначала открытия сокета при правильно заполненной струкруре SOCKADDR_IRDA

if (connect(sock, (struct sockaddr *) &SockAddr,
            sizeof(SOCKADDR_IRDA)) == SOCKET_ERROR)
   {


Пока это не заработает дальше нет смысла идти.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[5]: не коннектится OBEX
От: kiborg Россия  
Дата: 05.11.05 06:54
Оценка: 2 (1)
Здравствуйте, Tsnok, Вы писали:

T>Открыть сокет мне удалось, мобильник определяет подключение.


T>Возникли следующие вопросы, если несложно,

T> 1. Как можно прочитать каталоги с файлами.( и вообще как работать с каталогами )\\ например"image/jpeg"

Т.е. до этого такого вопроса не возникало

Вот с этого момента при работе с OBEX и начинается гимморой!
После того как ты открыл сокет, нужно открыть OBEX сессию. Код я приволил выше, прничём это рабочий код!
http://www.rsdn.ru/Forum/?mid=1470363
Автор: Tsnok
Дата: 03.11.05


т.е. ты должен послать такую последовательность в порт


  // opcode|length |version|flag|packsize|HI|data length|data(uuid)
  // 80    | 001A  |10     |00  |0x2000  |46|0013       |6B01CB31410611D49A770050DA3F471F


Всё это описано в спецификации на протокол OBEX

Поищи через google файл OBEX13.pdf

А устройств должно тебе ответить тоже пачкой байтов которую нужно "расшифровать".
Вот пример из того файла.


Client Request:  bytes Meaning 
Opcode  0x80     CONNECT, Final bit set 
  0x0011      packet length = 17 
  0x10     version 1.0 of OBEX 
  0x00      flags, all zero for this version of OBEX  
  0x2000     8K is the max OBEX packet size client can accept 
 0xC0   HI for Count header (optional header) 
  0x00000004     four objects being sent 
 0xC3   HI for Length header (optional header) 
  0x0000F483     total length of hex F483 bytes 
Server    
Response: 
response code  0xA0     SUCCESS, Final bit set 
  0x0007  packet length of 7 
  0x10  version 1.0 of OBEX 
  0x00 Flags 
  0x0400     1K max packet size



Т.е. мобилка тебе когда ответит то первый байт должен быть 0xA0.
Потом, два байта, длина всего этого пакета 0x0007 включая и первый байт. Т.е. ты можешь всегда при
работе с OBEX сначала читать три первых байта, потом зная сколько он тебе должен прислать читаешь остатки, а потом
разбараешь уже что там тебе прислали.
Даже если устройство вернёт ошибку оно вернет 3 байта (ну иногда больше) где первй байт код ошибки и 2 байта (с числом 0x0003) это длина.

Короче тебе теперь нужно дабиться открытия OBEX сессии (кстати закрывать её тоже надо, для этого есть коды, описаны в указанном файле).

А потом уже можно двигаться дальше, запрашивать нужные сервисы у сервера (удаленное устройство является сервером OBEX по отношению к клиенту — ПК).






T> 2. Как можно задать скорость соединения.

А этот вопрос пусть вообще тебя не волнует. Во всяком случае пока. Связь устанавливается по умолчанию на максимально возможной скорости. Ты можешь только понижать скорость влезая в эту кухню. И то это ещё надо суметь, а оно тебе надо?
Re[7]: не коннектится OBEX
От: kiborg Россия  
Дата: 07.11.05 08:12
Оценка: 2 (1)
Здравствуйте, Tsnok, Вы писали:


T>Я кончно извиняюсь за глупый вопрос, но как связать сокет и порт.

А ты упорный. Ещё чуть-чуть и у тебя получиться.

Конечно говоря о портах может возникнуть некоторая путаница, потому что разные вещи называются портами.
Но в данном контексте я имею ввиду сокет = порт. Ты открыл сокет, это и есть порт. Тебе остаётся только посылать и принимать байты через этот сокет.


T>И какими функциями можно воспользоваться для отправки в порт, и чтения из порта. \\предполагаю что сенд и ресайв, но неуверен.


Совершенно верно. Только зачем извращать и без того извращенное? Функции называются своими именами латинскими буквами:
int send (
SOCKET s,
const char FAR * buf,
int len,
int flags
);

Ну и другая, как там ты её обозвал.

Как видишь при вызове указывается сокет (SOCKET s) который ты открыл (открыл?) и никаких там портов.
Другой вопрос что лучше бы перевести сокет из режима по умолчанию в "не блокирующий" (асинхронный) режим, о то можно навсегда уйдти в ожидание ответа с порта. Но это тебе к книгам по программированию сокетов, мобильные устройства тут не причем.
Но это всё потом. Если не бросишь всё это.


T>Благодарю за помощь!
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[9]: не коннектится OBEX
От: kiborg Россия  
Дата: 09.11.05 04:05
Оценка: 2 (1)
Здравствуйте, Tsnok, Вы писали:

T>Здравствуйте, kiborg, Вы писали:


>>> // opcode|length |version|flag|packsize|HI|data length|data(uuid)

>>> // 80 | 001A |10 |00 |0x2000 |46|0013 |6B01CB31410611D49A770050DA3F471F
>>> Всё это описано в спецификации на протокол OBEX


T>Попытался реализовать OBEX сессию, но возникли проблемы.


Хотя я и не понимаю паскаль конкретно, но принцип то любого языка понятен.
И глядя на твой код вижу что ты пока не ведаешь что творишь.

Конечно он работать не будет, потому как в каждой первой строке ошибки.

T> BUF_S : array [ 0 .. 4096 ] of Char;

Хотя это не принципиально, но максимальный размер пакета
в OBEX 8КБ может быть, вроде как я понял читая спецификацию
Ты скачал спецификацию?


Далее, забудь про символы. Ты посылаешь конкретно пакет байтов который сам формируешь.
Т.е. 80h это число в шестнадцатеричной системе (в десятичной 128), а не код символа.

T> Buf_s[ 0 ] := chr( $80 );

Т.о. здесь должно быть, как то так:
Buf_s[ 0 ] := 128;


или вместо лучше 128 в шестнадцатеричной системе, но я не знаю как в Паскале
наверно так:

Buf_s[ 0 ] := $80;


Далее в следующей строке сразу две ошибки

T> Buf_s[ 1 ] := chr( $001A );

Во первых 001Ah это длина (length) пакета в байтах (26 байт)
Конкретно вот этого:
  // opcode|length |version|flag|packsize|HI|data length|data(uuid)
  // 80    | 001A  |10     |00  |0x2000  |46|0013       |6B01CB31410611D49A770050DA3F471F


Если ты посчитаешь количество этих байт то получишь 26.
80 — один, 00 — два, 1A — три, 10 — четыре....
Но это длина моего пакета. У твоего длина другая (хотя у тебя вообще не пакет пока а мусор)

Во вторых 001A это ДВА байта. Т.е. на Си я писал бы так

*((unsigned short *)&Buf_s[1]) = ((unsigned short)0x001A);


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

    Buf_s[ 1 ] := $00;
    Buf_s[ 2 ] := $1A;


Понимаешь? А уже потом
Buf_s[ 3 ] := $10; и т.д.

T> Buf_s[ 2 ] := chr( $10 );

T> Buf_s[ 3 ] := chr( $00 );

Соответсвенно это тоже бред
T> Buf_s[ 4 ] := chr( $0800 );

А это вообще что?
T> Buf_s[ 5 ] := chr( $70 );
T> Buf_s[ 6 ] := chr( $13 );

Далее соответственно ты посылаешь не строку (что ты зачем то пылался сделать завершая символом $13).
Поэтому нельзя вичислить длину. Поэтому никаких length
Но ты точно знаешь количество посылаемых байт, потому что ты сам формируешь паакет, вот его и указываешь.
И в Buf_s[ 1 ], Buf_s[ 2 ] и в функции send()

T> send( Sock, BUF_S, length( BUF_S ) + 1, 0 );


T> Sleep( 500 );

Это кто тебя научил так делать?
Самое главное бессмысленно. recv не завершиться пока не считает байты (в синхронном режиме конечно, но он и есть по умолчанию)
И опять же пол секунды зачем ждать, а если считает быстрее, зачем лишний тормоз?

T> recv( Sock, BUF_SND, length( BUF_SND ) + 1, 0 );


T> Посмотрел доку по OBEX, и попробывал открыть сессию ... при передаче данных инфракрасник начинает сильнее моргать примерно на 150 милисекунд, а затем как обычно, в режиме ожидания, но в буфере который читает полученную информацию ничего нет.


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

T>ПОдскажите, что не так делаю ... ?

T>\\при отрпавке сокет создан + установлен коннект с мобилкой( мобила информирует об установленном соединении )

T>Благодарю за помощь!

Ну а где благодарность? Хотя бы ввиде оценок и плюсиков???
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[11]: не коннектится OBEX
От: kiborg Россия  
Дата: 11.11.05 04:23
Оценка: 2 (1)
Здравствуйте, Tsnok, Вы писали:

T>Здравствуйте, kiborg:


T>оформил пакет, ( не уверен, чтио правильно, но пока только так, )


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

Тык вот. Я тебе зачем писал что ты байты должен передпвать?
Почему ты их упорно превращаешь в коды символов?
ЗАЧЕМ??? Ты применяешь функцию chr???
В Buf_s[ 0 ] должно быть число $80.
в результате выполнения chr
выдается буква, порядковый номер которой (ASCII код) равен аргументу функции

T> BUF_S,

T> BUF_R : packed array [ 0 .. 8192 ] of Char; //Real;

T> Buf_s[ 0 ] := chr( $80 );

T> Buf_s[ 1 ] := chr( $00 );
T> Buf_s[ 2 ] := chr( $07 );
T> Buf_s[ 3 ] := chr( $10 );
T> Buf_s[ 4 ] := chr( $00 );
T> Buf_s[ 5 ] := chr( $01 );
T> Buf_s[ 6 ] := chr( $00 );

Напиши напротив каждой строки выше тобой приведённой, что ты имеешь ввиду под байтом присваемым тобобой
в каждую ячейку.

И в очередной раз привожу строку
  // opcode|length |version|flag|packsize|HI|data length|data(uuid)
  // 80    | 001A  |10     |00  |0x2000  |46|0013       |6B01CB31410611D49A770050DA3F471F

А где у тебя uuid сервиса OBEX для которого выполняется операция???

T> View_BUF_SND.AppendBuffer( @BUF_S, 7 );

T> View_BUF_SND.SelStart := 0;

T> recv( Sock, BUF_R, sizeof( BUF_R ), 0 );

T> View_BUF_RCV.AppendBuffer( @BUF_R, 256 );
T> View_BUF_RCV.SelStart := 0;

T>в ответ получаю, соедующее [ A0 00 07 10 00 01 00 ]


Даже не буду анализировать потому что этого не может быть.

T>начало вроде правильно( если смореть спецификацию ), но все остальное дублирует отправляемое ...


T>при отправке [ 81 00 03 ] это, как я понимаю разрыв сесси, получаю [ A0 00 07 10 00 01 ]


А этого тем более не может быть потому что показано что должно быть 7 байт в пакете, а ты привел 6.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[13]: не коннектится OBEX
От: kiborg Россия  
Дата: 14.11.05 08:19
Оценка: 2 (1)
K>>В Buf_s[ 0 ] должно быть число $80.
T>все дело в том, что раньше не приходилось работать с подобной системой представления и преобразования информации ;(.
T>поэтому не очень получается.
Хочешь сказать ты только с символами работал?


T>// opcode|length |version|flag|packsize|HI|data length|data(uuid)

T>// 80 | 001A |10 |00 |0x2000 |46|0013 |6B01CB31410611D49A770050DA3F471F

T> BUF_S[ 0 ] := $80 ; //$80


T> Buf_s[ 1 ] := $14 ; //длинна пакеты в байтах

Ты надо мной издеваешься?
Длина пакета задаётся ДВУМЯ БАЙТАМИ ВСЕГДА!!!
Если у тебя длина $14 то должно быть в массиве так
   Buf_s[1]  := $00 ; //длинна пакеты в байтах
   Buf_s[2]  := $14 ; //

ДВА БАЙТА понимаешь? Младший и старший.

Т.е. дальше можно не смотреть уже здесь бага.
Тут ещё не понятно, если ты скопировал мой пример, то почему у тебя
длина $14?? Догда когда она $1A. К чему здесь творческая переработка? Это не литературная проза, в который раз пытаюсь дать понять. Тут всё точно, ло бита.


T> Buf_s[ 2 ] := $10 ; //version

T> Buf_s[ 3 ] := $00 ; //flag
T> Buf_s[ 4 ] := $20 ; //packsize
T> Buf_s[ 5 ] := $00 ; //packsize
T> Buf_s[ 6 ] := $46 ; //HI
T> Buf_s[ 7 ] := $00 ; //data length
T> Buf_s[ 8 ] := $13 ; //data length

K>>А где у тебя uuid сервиса OBEX для которого выполняется операция???

T>а вот с этим большая проблема, как правильно можно uuid поместить в буфер

Главное, это бросить программировать на Паскале.


T> Buf_s[ 9 ] := $6B01CB3 ;

T> Buf_s[ 10 ] := $1410611 ;
T> Buf_s[ 11 ] := $D49A770 ;
T> Buf_s[ 12 ] := $050DA3F4 ;
T> Buf_s[ 13 ] := $71F ;

Ну если уж пока так...
То в чем проблема делать побайтно??
    Buf_s[ 9  ]  := $6B;
    Buf_s[ 10 ]  := $01;
    Buf_s[ 11 ]  := $CB;


И так далее...



K>>А этого тем более не может быть потому что показано что должно быть 7 байт в пакете, а ты привел 6.

T>он возвращает семь байт просто там нули 00, и я их не стал писать ...
А я должен был додумать? А что нули уже не данные???
Есть большая разница между $1A и $1A00 например.


Так что пока ты отправляешь неправильный пакет.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[15]: не коннектится OBEX
От: kiborg Россия  
Дата: 18.11.05 04:08
Оценка: 2 (1)
T>изучил ваши замечания и по попробывал реализовать фомирование пакета с учетом все выше рассмотренного, но все равно в ответ отклик неважнецкий 17 10 04 80
Назову вещи своими именами — ЭТО совсем не отклик OBEX!
Такого отклика не может быть в принципе!
Итак, читай ВНИМАТЕЛЬНО:
Первый байт в OBEX пакете всегда кокой-нибудь код. ВСЕГДА понимаещь?
И когда посылаешь и когда принимаешь, всегда первый байт это код.
В данном случае, ты ждешь отклика от устройства, значит должен анализировать коды ответа.
$A0 или $20 — успешно
$90 или $10 — Запрос на продолжение.
и т.д. см. спецификацию
Почему некоторые коды могут иметь два числа одного и того же результата я не знаю. Спецификаторы не договорились наверно.
Но реально зависит от производителя устройства. Может то, а может это посылать. Кто-то тут хотел универсальную прогу для всех устройств?-) Блажен кто верует... Это ещё цветочки.
Ну тык вот.
Далее после первого байта ВСЕГДА идут ДВА байта длины пакета. Понимаешь всегда?
А вот далее уже от обстоятельств.
Тут можно использовать такую стратегию, читай внимательно:

Сначала ВСЕГДА читаешь ТРИ первых байта.
Анализируешь первый. Если не совпадает ни с какими кодами (как в твоём собственно примере вверху), то это мусор. Можешь дальше не мучаться — это не OBEX.
Если совпало с кодом, то в зависимоти от кода во-первых, а во-вторых анализируешь длину пакета в бвух следующих байтах и если она больше 3 то остатки надо принять (длина — 3).
Ну а что там — читай спецификацию.

T>// opcode|length |version|flag|packsize|HI|data length|data(uuid)

T>// 80 | 001A |10 |00 |0x2000 |46|0013 |6B 01 CB 31 41 06 11 D4 9A 77 00 50 DA 3F 47 1F

T> BUF_s[ 0 ] := $80;


T> BUF_s[ 1 ] := $00; //length

T> BUF_s[ 2 ] := $1A; //length длинна пакета 26 байт
T> BUF_s[ 3 ] := $10; //VERSION
T> BUF_s[ 4 ] := $00; //FLAG
T> BUF_s[ 5 ] := $20; //PACKSIZE
T> BUF_s[ 6 ] := $00; //PACKSIZE
T> BUF_s[ 7 ] := $46; //HI
T> BUF_s[ 8 ] := $00; //DATA LENGTH
T> BUF_s[ 9 ] := $13; //DATA LENGTH

Вот видишь КРАСОТА! Уже более разумный код. Посмотри с чего ты начинал.

T> {uuid}


T> BUF_s[ 10 ] := $6B; BUF_s[ 11 ] := $01; BUF_s[ 12 ] := $CB; BUF_s[ 13 ] := $31;

T> BUF_s[ 14 ] := $41; BUF_s[ 15 ] := $06; BUF_s[ 16 ] := $11; BUF_s[ 17 ] := $D4;
T> BUF_s[ 18 ] := $9A; BUF_s[ 19 ] := $77; BUF_s[ 20 ] := $00; BUF_s[ 21 ] := $50;
T> BUF_s[ 22 ] := $DA; BUF_s[ 23 ] := $3F; BUF_s[ 24 ] := $47; BUF_s[ 25 ] := $1F;

T> if send( Sock, BUF_S, sizeof( @BUF_S ) , 0 ) = SOCKET_ERROR then

T> Debug_.Items.Add( 'filed ... !' )

Ну у тут... Сколько ты будешь наступать на одни и теже грабли в одном и том же месте. Причем тебе ещё и говорят что тут грабли???

Ты должен послать ровно столько байт, сколько ты сформировал в пакете, а не сколько у тебя буфер размером.
Ты вообще понимаешь, что возвращает sizeof( @BUF_S )???
Вот именно столько будет посылаться байт функцией send. И все эти байты будет пытаться анализировать принимающее устройство.


T> else

T> Debug_.Items.Add( 'Data send ... OK ... !' );

T> recv( Sock, BUF_R, sizeof( @BUF_R ), 0 );


Те же яйца — вид сбоку.
Ты пытаешься принять с устройства sizeof( @BUF_R ) байт. Функция будет ждать пока ей не прилетит именно столько байт.
А между тем тебе точно известно сколько устройство посылает тебе байт.
Стратегию я описал выше.

T>Благодарю за помощь.

Где тогда мне оценки???
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[17]: не коннектится OBEX
От: kiborg Россия  
Дата: 21.11.05 03:45
Оценка: 2 (1)
T>Если при задании структуры адреса
T>указать следующее

T> irADRR.irdaAddressFamily := AF_IRDA;

T> irADRR.irdaServiceName := 'OBEX';
T> и т.д.

T>и при этом послать в порт, что угодно получаю следующий отклик A0 00 07 10 00 и т.д.

А это что-то не логично. Как это что угодно? Что если полсать скажем один байт на пример $00,
то всё равно получишь то что ты написал?
И кстати A0 00 07 10 00 и т.д. это ведь успешный отклик. Еслиб ты всё написал можно точно сказать, а так
начало неплохое...


T>но если структуру определить как


T> irADRR.irdaAddressFamily := AF_IRDA;

T> irADRR.irdaServiceName := 'IrDA:IrCOMM';

T>то в этом случае в ответ вываливается мусор, что в полне логично.

Вот именно логично.


T>Вот.

T>По поводу длинны
T> View_BUF_SND.AppendBuffer( @BUF_S, 26 );
T> ,,,,,,,
T> когда пробую просмотреть свой сформированный пакет вижу запрошенные 26 байт, судя по всему столько же отправляется в телефон,
T> вот то что отображается в буфере

T> 80 00 00 00 00 00 00 00 1A 00 00 00 10 00 00 00

T> 00 00 00 00 20 00 00 00 00 00

T> объясните если несложно, почему струтура пакета отличается от той что была задана, если я определил, что весь пакет заполнен данными а здесь только 6 байт в перемешку с нулями.

Как я это объясню? Я же не стою у тебя за спиной не смотрю что ты там творишь. Откуда ты берёщь эти байты.


T> if send( Sock, BUF_S, 26 , 0 ) = SOCKET_ERROR then

T> ,,,,,,,

T> recv( Sock, BUF_R, 26, 0 );

Это по-прежнему не правильнро. Стратегию я описывал раньше. С какого потолка ты получаешь 26 байт?


T> View_BUF_RCV.AppendBuffer( @BUF_R, 26 );

T> ,,,,,,,

T> даже если определить динну пакета в 26 байт то в ответ все равно вываливается 17 04 80 и т.д.


Вот у меня вопросы.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[19]: не коннектится OBEX
От: kiborg Россия  
Дата: 22.11.05 09:28
Оценка: 2 (1)
Здравствуйте, Tsnok, Вы писали:

T>>и при этом послать в порт, что угодно получаю следующий отклик A0 00 07 10 00 и т.д.

>>А это что-то не логично. Как это что угодно? Что если полсать скажем один байт на пример $00,
>>то всё равно получишь то что ты написал?
>>И кстати A0 00 07 10 00 и т.д. это ведь успешный отклик. Еслиб ты всё написал можно точно сказать, а так
>>начало неплохое...
T>\Это действительно так. Если описать имя сервиса ОБЕКС, и послать в порт что угодно хот $00 то в ответ получаетм именно такой отклик. Если интересно то могу скинуть исходные коды, убедитесь сами.

Не ну всякое бывает. Только это не правильно. Тут ничего случайного не должно быть.

T>>> if send( Sock, BUF_S, 26 , 0 ) = SOCKET_ERROR then

T>>> ,,,,,,,

T>>> recv( Sock, BUF_R, 26, 0 );

K>>Это по-прежнему не правильнро. Стратегию я описывал раньше. С какого потолка ты получаешь 26 байт?
T> BUF_s[ 0 ] := $80;

T> BUF_s[ 1 ] := $00; //length

T> BUF_s[ 2 ] := $1A; //length

T> BUF_s[ 3 ] := $10; //VERSION

T> BUF_s[ 4 ] := $00; //FLAG
T> BUF_s[ 5 ] := $20; //PACKSIZE
T> BUF_s[ 6 ] := $00; //PACKSIZE
T> BUF_s[ 7 ] := $46; //HI
T> BUF_s[ 8 ] := $00; //DATA LENGTH
T> BUF_s[ 9 ] := $13; //DATA LENGTH

T> {uuid}


T> BUF_s[ 10 ] := $6B; BUF_s[ 11 ] := $01; BUF_s[ 12 ] := $CB; BUF_s[ 13 ] := $31;

T> BUF_s[ 14 ] := $41; BUF_s[ 15 ] := $06; BUF_s[ 16 ] := $11; BUF_s[ 17 ] := $D4;
T> BUF_s[ 18 ] := $9A; BUF_s[ 19 ] := $77; BUF_s[ 20 ] := $00; BUF_s[ 21 ] := $50;
T> BUF_s[ 22 ] := $DA; BUF_s[ 23 ] := $3F; BUF_s[ 24 ] := $47; BUF_s[ 25 ] := $1F;

T> 25 плюс нулевой байт в итоге имеем 26 байт. Или все таки что то не так.


Я говорю про функцию recv( Sock, BUF_R, 26, 0 );
Откуда здесь 26???


K>>Вот у меня вопросы.

K>>[list]
K>>
  • Что за устройство с которым ты работаешь?
    T> Мобильный телефон — Siemens s35

    Сименсы самые нормальные в этом отношении телефоны (по-моему). У меня самого S65 (а есть и M45, M50, CF65). И все работают (в смысле OBEX).


    K>>
  • Есть ли у тебя программа вообще какая нибудь, которая с ним работает? То есть ты вообще видел сам чтобы с ним ктонибудь работал?
    T> Обмен между ним и ещё одним мобильником проиходит — обменивался картинками.
    При обмене между мобильниками используется OBEX Push! А не OBEX folder-listing. OBEX Push сервер принимает объект и ложит в папку по-умолчанию. Он не выдает список файлов по запросу. Другой вопрос что если поддерживается сервис OBEX Push то и как правило OBEX folder-listing. Но это разные сервисы понимаешь?



    K>>
  • Если да, может ли твоё устройство работать по COM порту? Если да, то можно подглядеть что там работающая программа посылает в порт. Я например, довольно долго этим занимался, потому что все производители вставляюта
    T>свои особенности в протокол.
    T>если не секрет, не подскажите какими программами можно просматривать, что отправляется в порт.

    www.ya.ru — найдется всё!
    www.google.ru — ещё больше.

    Есть бесплатная программка у Марка Руссиновича http://www.sysinternals.com
    PortMonNt

    Есть free-serial-port-monitor.exe (платная, но порты дает просматривать). Она покрасивше отчет выдает.



    K>>
  • Пробовал ли ты свой код на других устройствах?
    T> Да, результат аналогичный.
    Пародокс!
    ... << RSDN@Home 1.1.4 stable rev. 510>>
  • Re[19]: не коннектится OBEX
    От: kiborg Россия  
    Дата: 22.11.05 09:41
    Оценка: 2 (1)
    Здравствуйте, Tsnok, Вы писали:

    T>Здравствуйте, kiborg,:


    T>Извиняюсь за настойчивость, но неподскажите как можно просмотреть списки какталогов в телефоне, записать файл на телефон, скопировать файл файл с телефона на ПК.


    Соответственно программами. Но для разных моделей разные.
    Например Sumsung вообще OBEX не поддерживает. Всё через AT комманды. Их ещё узнать надо. И даже родной софт у них к одним подходит, к другим нет.

    Вот Сименсы самые нормальные. OBEX поддерживают с самых ранних моделей.
    Даже самая старая программа (dataexchangesoftware) называетсяя (опять же повторюсь поиск рулит!) работает со всеми моделями.
    Для Сименсов ещё могу SiMoCo посоветовать.
    Тут по моему
    http://www.siemens-club.ru/soft.php
    Ну соответственно другие модели другие программы.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    не коннектится OBEX
    От: Tsnok  
    Дата: 01.11.05 06:33
    Оценка:
    Всем привет.
    Пишу программу на д7 по обмену данными между пк и мобилкой на основе ик порта. Работаю через сокеты.
    Набросал пример в котором инициализируется финсокет, создается сокет, и вытягивются данные о модели телефона.
    Но вот подключться к телефону по обексу не получается.
    Господа программеры помогите разобраться в пробеле.

    GLOB VAR
    WSAData_ : WSAdata;
    Sock : TSocket;
    devlist : PWINDOWS_DEVICELIST;
    irADRR : SOCKADDR_IRDA;

    var
    buf: array[ 0..4096 ]of char;
    temp: integer;
    res: integer;
    pbuf: PWINDOWS_DEVICELIST;
    DEV_INFO_0 : _windows_IRDA_device_info;
    i,j : longint;
    Name : string;
    time : longint; {debug var} //\\\\\\\\\\\

    is_rec : IAS_SET; //irADRR : TirDASockADRR ;// = ( AF_IRDA,0,0,0,0,''#0'' );

    tmp : longint;
    begin
    Sock:= Socket( AF_IRDA, SOCK_STREAM, 0);

    temp := 4096;
    res := getsockopt(Sock, SOL_IRLMP, IRLMP_ENUMDEVICES, buf, temp);
    pBuf := @buf;

    irADRR.irdaAddressFamily := AF_IRDA;
    for i := 0 to 4 do
    irADRR.irdaDeviceID[ i ] := pbuf.numDevice;
    irADRR.irdaServiceName := 'IrDA:IrCOMM';
    tmp := connect( Sock, TSockAddr(( @irADRR )^), sizeof( irADRR ) );

    List.Items.Add( 'Count found device"s...' + IntToStr( pbuf.numDevice ) ); // List.Items.Add( PCHAR( DEV_INFO_0.irdaDeviceID ) );

    if pbuf.numDevice = 0 then
    List.Items.Add( 'Mibile device NOT FOUND......' )
    else
    for i := 0 to pbuf.numDevice — 1 do
    begin
    Name := '';
    DEV_INFO_0 := pbuf.Device[ i ];

    for j := 0 to 22 do
    Name :=Name + DEV_INFO_0.irdaDeviceName[ j ];
    List.Items.Add( 'Device ' + inttostr( i + 1 ) + '....' + Name );
    List.Items.Add( '..............................' );
    end;


    ЗЫ
    Благодарю за помощь!
    Re: не коннектится OBEX
    От: kiborg Россия  
    Дата: 02.11.05 08:27
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Всем привет.

    T>Пишу программу на д7 по обмену данными между пк и мобилкой на основе ик порта. Работаю через сокеты.
    T>Набросал пример в котором инициализируется финсокет, создается сокет, и вытягивются данные о модели телефона.
    T>Но вот подключться к телефону по обексу не получается.
    T>Господа программеры помогите разобраться в пробеле.

    Для того чтобы законнектиться по OBEX SOCKADDR_IRDA ддолжна быть.

       SOCKADDR_IRDA  SockAddr = {AF_IRDA, 0, 0, 0, 0, "OBEX"};


    Ну и соответственно

       if ((sock = socket(AF_IRDA, SOCK_STREAM,0)) == INVALID_SOCKET) return false;;


       if (connect(sock, (struct sockaddr *) &SockAddr,
                sizeof(SOCKADDR_IRDA)) == SOCKET_ERROR)
       {


    //---------------------------------------------------------------------------
    // Открыть OBEX сессию. Предполагается что порт уже в двоичном режиме
    //---------------------------------------------------------------------------
    bool OBEX_FTP::Open(TComm *p)
    {
      port = p; //Предполагается что порт уже в двоичном режиме
      // opcode|length |version|flag|packsize|HI|data length|data(uuid)
      // 80    | 001A  |10     |00  |0x2000  |46|0013       |6B01CB31410611D49A770050DA3F471F
      
      SendBuffer[0] = OBEX_CMD_CONNECT;
      *((unsigned short *)&SendBuffer[1]) = ntohs((unsigned short)0x1A);
      SendBuffer[3] = OBEX_VERSION;
      SendBuffer[4] = OBEX_CONNECT_FLAGS;
      // Размер OBEX пакета
      *((unsigned short *)&SendBuffer[5]) = ntohs((unsigned short)MAX_SEND_BUFF_LEN);
      SendBuffer[7] = OBEX_HDR_TARGET; //Имя сервиса, для которого выполняется операция.
      *((unsigned short *)&SendBuffer[8]) = ntohs((unsigned short)0x13); // длина заголовка
    //  memcpy(&SendBuffer[10], OBEX_FILE_BROWSING_UUID, 16);
      memcpy(&SendBuffer[10], OBEX_SIEMENS_FILE_BROWSING_UUID, 16);
    
      port->Purge();
      port->Send(SendBuffer, 0x1A);
      port->Get(RecvBuffer, 7);
    
      if (IsSuccessResult())
      {
        bIsOpen = true;
    
        packet_size = htons(*((unsigned short *)&RecvBuffer[5]));
        if(packet_size > 0x0400) packet_size -= packet_size%0x0400;
    
        recv_packet_size = htons(*((unsigned short *)&RecvBuffer[1]));
        // Получить остаток учитывая что семь байт уже получено
        if(recv_packet_size > 7) port->Get(RecvBuffer, recv_packet_size - 7);
    
        return true;
       }
       else
       {
         bIsOpen = false;
         return false;
       }
    
    }
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Re[2]: не коннектится OBEX
    От: Tsnok  
    Дата: 02.11.05 09:52
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>Для того чтобы законнектиться по OBEX SOCKADDR_IRDA ддолжна быть.


    K>
    K>   SOCKADDR_IRDA  SockAddr = {AF_IRDA, 0, 0, 0, 0, "OBEX"};
    K>


    ....................

    Проблема в том, что структура адреса и имя сервиса у меня определено.
    Сам пишу на дельфи и с C почти незнаком.
    Пример ( хотя бы общие вещи ) на дельфи не подкинешь.

    Благодарю за помошь.
    Re[2]: не коннектится OBEX
    От: Tsnok  
    Дата: 02.11.05 09:56
    Оценка:
    Дело в том, что для связи с мобильным устройством использую сокеты — WINSOCK, и ком порт(эмуляция его работы) мне не подходит
    Re[4]: не коннектится OBEX
    От: Tsnok  
    Дата: 03.11.05 06:21
    Оценка:
    В общем после изучения ваших примеров и мануала по сокетам смог достучаться, и открыть сокет.

    Сейчас, если я правильно понимаю надо перевести сокет в двоичный режим ( OBEX ), не подскажете как это можно сделать.

    Благодарю за поощь.....
    Re[4]: не коннектится OBEX
    От: Tsnok  
    Дата: 03.11.05 10:16
    Оценка:
    Открыть сокет мне удалось, мобильник определяет подключение.

    Возникли следующие вопросы, если несложно,
    1. Как можно прочитать каталоги с файлами.( и вообще как работать с каталогами )\\ например"image/jpeg"
    2. Как можно задать скорость соединения.

    Благодарю за помощь............
    Re[6]: не коннектится OBEX
    От: Tsnok  
    Дата: 07.11.05 07:31
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>т.е. ты должен послать такую последовательность в порт


    Я кончно извиняюсь за глупый вопрос, но как связать сокет и порт.
    И какими функциями можно воспользоваться для отправки в порт, и чтения из порта. \\предполагаю что сенд и ресайв, но неуверен.

    Благодарю за помощь!
    Re[8]: не коннектится OBEX
    От: Tsnok  
    Дата: 08.11.05 07:32
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    >> // opcode|length |version|flag|packsize|HI|data length|data(uuid)

    >> // 80 | 001A |10 |00 |0x2000 |46|0013 |6B01CB31410611D49A770050DA3F471F
    >> Всё это описано в спецификации на протокол OBEX

    >> А устройств должно тебе ответить тоже пачкой байтов которую нужно "расшифровать".

    >> Вот пример из того файла.

    >> Client Request: bytes Meaning

    >> Opcode 0x80 CONNECT, Final bit set
    >> ..........

    Попытался реализовать OBEX сессию, но возникли проблемы.

    BUF_S : array [ 0 .. 4096 ] of Char;

    Buf_s[ 0 ] := chr( $80 );
    Buf_s[ 1 ] := chr( $001A );
    Buf_s[ 2 ] := chr( $10 );
    Buf_s[ 3 ] := chr( $00 );
    Buf_s[ 4 ] := chr( $0800 );
    Buf_s[ 5 ] := chr( $70 );
    Buf_s[ 6 ] := chr( $13 );
    send( Sock, BUF_S, length( BUF_S ) + 1, 0 );
    Sleep( 500 );
    recv( Sock, BUF_SND, length( BUF_SND ) + 1, 0 );

    Посмотрел доку по OBEX, и попробывал открыть сессию ... при передаче данных инфракрасник начинает сильнее моргать примерно на 150 милисекунд, а затем как обычно, в режиме ожидания, но в буфере который читает полученную информацию ничего нет.

    ПОдскажите, что не так делаю ... ?
    \\при отрпавке сокет создан + установлен коннект с мобилкой( мобила информирует об установленном соединении )

    Благодарю за помощь!
    Re[9]: не коннектится OBEX
    От: alsemm Россия  
    Дата: 09.11.05 12:36
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    ...
    T>Попытался реализовать OBEX сессию, но возникли проблемы.

    T> BUF_S : array [ 0 .. 4096 ] of Char;


    T> Buf_s[ 0 ] := chr( $80 );

    T> Buf_s[ 1 ] := chr( $001A );
    T> Buf_s[ 2 ] := chr( $10 );
    T> Buf_s[ 3 ] := chr( $00 );
    T> Buf_s[ 4 ] := chr( $0800 );
    T> Buf_s[ 5 ] := chr( $70 );
    T> Buf_s[ 6 ] := chr( $13 );
    T> send( Sock, BUF_S, length( BUF_S ) + 1, 0 );
    T> Sleep( 500 );
    T> recv( Sock, BUF_SND, length( BUF_SND ) + 1, 0 );

    T> Посмотрел доку по OBEX, и попробывал открыть сессию ... при передаче данных инфракрасник начинает сильнее моргать примерно на 150 милисекунд, а затем как обычно, в режиме ожидания, но в буфере который читает полученную информацию ничего нет.


    T>ПОдскажите, что не так делаю ... ?

    Все не так
    http://64.233.183.104/search?q=cache:RPbQFs0ZwvsJ:www.pocketpcdn.com/articles/obex.html+obex+cpp&amp;hl=ru — рабочий код чтения/записи через IrDA OBEX
    Надо прочитать и перестать глупости спрашивать.

    T>\\при отрпавке сокет создан + установлен коннект с мобилкой( мобила информирует об установленном соединении )


    T>Благодарю за помощь!
    Re: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 10.11.05 08:18
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Всем привет.

    T>Пишу программу на д7 по обмену данными между пк и мобилкой на основе ик порта. Работаю через сокеты.
    T>Набросал пример в котором инициализируется финсокет, создается сокет, и вытягивются данные о модели телефона.
    T>Но вот подключться к телефону по обексу не получается.
    T>Господа программеры помогите разобраться в пробеле.

    T>GLOB VAR

    T> WSAData_ : WSAdata;
    T> Sock : TSocket;
    T> devlist : PWINDOWS_DEVICELIST;
    T> irADRR : SOCKADDR_IRDA;

    T> var

    T> buf: array[ 0..4096 ]of char;
    T> temp: integer;
    T> res: integer;
    T> pbuf: PWINDOWS_DEVICELIST;
    T> DEV_INFO_0 : _windows_IRDA_device_info;
    T> i,j : longint;
    T> Name : string;
    T> time : longint; {debug var} //\\\\\\\\\\\

    T> is_rec : IAS_SET; //irADRR : TirDASockADRR ;// = ( AF_IRDA,0,0,0,0,''#0'' );


    T> tmp : longint;

    T>begin
    T> Sock:= Socket( AF_IRDA, SOCK_STREAM, 0);

    T> temp := 4096;

    T> res := getsockopt(Sock, SOL_IRLMP, IRLMP_ENUMDEVICES, buf, temp);
    T> pBuf := @buf;

    T> irADRR.irdaAddressFamily := AF_IRDA;

    T> for i := 0 to 4 do
    T> irADRR.irdaDeviceID[ i ] := pbuf.numDevice;
    T> irADRR.irdaServiceName := 'IrDA:IrCOMM';
    T> tmp := connect( Sock, TSockAddr(( @irADRR )^), sizeof( irADRR ) );

    T> List.Items.Add( 'Count found device"s...' + IntToStr( pbuf.numDevice ) ); // List.Items.Add( PCHAR( DEV_INFO_0.irdaDeviceID ) );


    T> if pbuf.numDevice = 0 then

    T> List.Items.Add( 'Mibile device NOT FOUND......' )
    T> else
    T> for i := 0 to pbuf.numDevice — 1 do
    T> begin
    T> Name := '';
    T> DEV_INFO_0 := pbuf.Device[ i ];

    T> for j := 0 to 22 do

    T> Name :=Name + DEV_INFO_0.irdaDeviceName[ j ];
    T> List.Items.Add( 'Device ' + inttostr( i + 1 ) + '....' + Name );
    T> List.Items.Add( '..............................' );
    T> end;


    T>ЗЫ

    T>Благодарю за помощь!


    Уважаемый Tsnok, столкнулся с такой же задачей (связать телефон с компом по ИК). Только у меня успехов еще меньше
    Я так же как и Вы дружу больше с Делфи чем с Си. Если вы добились каких-либо результатов — помогите мне. Во-первых, что надо подключить чтобы хотябы приведенный вами код давал признаки жизни? а если можете, не могли бы вы выложить полный листинг. (обещаю использовать только в ознакомительных целях ) Благодарю!
    Re[2]: не коннектится OBEX
    От: Tsnok  
    Дата: 10.11.05 09:19
    Оценка:
    Подключи winsock.
    Если закончу свой труд( — надеюсь на это ), скорее всего выложу
    Re[3]: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 10.11.05 09:46
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Подключи winsock.

    T>Если закончу свой труд( — надеюсь на это ), скорее всего выложу

    WinSock я подключил. У меня ругается вот так:

    [Error] Unit1.pas(24): Undeclared identifier: 'PWINDOWS_DEVICELIST'
    [Error] Unit1.pas(25): Undeclared identifier: 'SOCKADDR_IRDA'
    по-моему, надо подключить что-то типа af_irda.h в Си
    Re[4]: не коннектится OBEX
    От: Tsnok  
    Дата: 10.11.05 13:18
    Оценка:
    Здравствуйте, Mickey_Mouse, Вы писали:

    M_M>Здравствуйте, Tsnok, Вы писали:


    T>>Подключи winsock.

    T>>Если закончу свой труд( — надеюсь на это ), скорее всего выложу

    M_M> WinSock я подключил. У меня ругается вот так:


    M_M> [Error] Unit1.pas(24): Undeclared identifier: 'PWINDOWS_DEVICELIST'

    M_M> [Error] Unit1.pas(25): Undeclared identifier: 'SOCKADDR_IRDA'
    M_M>по-моему, надо подключить что-то типа af_irda.h в Си

    из ддк бери заголовочный файл, портируй под д, и подключай в проектте ...
    Re[10]: не коннектится OBEX
    От: Tsnok  
    Дата: 10.11.05 13:38
    Оценка:
    Здравствуйте, kiborg:

    оформил пакет, ( не уверен, чтио правильно, но пока только так, )

    BUF_S,
    BUF_R : packed array [ 0 .. 8192 ] of Char; //Real;

    Buf_s[ 0 ] := chr( $80 );
    Buf_s[ 1 ] := chr( $00 );
    Buf_s[ 2 ] := chr( $07 );
    Buf_s[ 3 ] := chr( $10 );
    Buf_s[ 4 ] := chr( $00 );
    Buf_s[ 5 ] := chr( $01 );
    Buf_s[ 6 ] := chr( $00 );

    View_BUF_SND.AppendBuffer( @BUF_S, 7 );
    View_BUF_SND.SelStart := 0;

    recv( Sock, BUF_R, sizeof( BUF_R ), 0 );
    View_BUF_RCV.AppendBuffer( @BUF_R, 256 );
    View_BUF_RCV.SelStart := 0;

    в ответ получаю, соедующее [ A0 00 07 10 00 01 00 ]
    начало вроде правильно( если смореть спецификацию ), но все остальное дублирует отправляемое ...

    при отправке [ 81 00 03 ] это, как я понимаю разрыв сесси, получаю [ A0 00 07 10 00 01 ]

    подскажите, что не так ...
    Re[5]: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 11.11.05 07:59
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Здравствуйте, Mickey_Mouse, Вы писали:


    M_M>>Здравствуйте, Tsnok, Вы писали:


    T>>>Подключи winsock.

    T>>>Если закончу свой труд( — надеюсь на это ), скорее всего выложу

    M_M>> WinSock я подключил. У меня ругается вот так:


    M_M>> [Error] Unit1.pas(24): Undeclared identifier: 'PWINDOWS_DEVICELIST'

    M_M>> [Error] Unit1.pas(25): Undeclared identifier: 'SOCKADDR_IRDA'
    M_M>>по-моему, надо подключить что-то типа af_irda.h в Си

    T>из ддк бери заголовочный файл, портируй под д, и подключай в проектте ...


    Извини если кажусь бронелобым, но не мог бы ты с этого места поподробней немного.
    1. Ссылка на заголовочный файл (не могу найди в ддк)
    2. Как его отпортировать под делфу?
    Re[6]: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 11.11.05 12:34
    Оценка:
    Перевел af_irda.h в делфовый формат (pas) утилкой c2pas32
    но что дальше делать — не знаю.
    хелп!
    Re[7]: не коннектится OBEX
    От: Tsnok  
    Дата: 11.11.05 12:38
    Оценка:
    Здравствуйте, Mickey_Mouse, Вы писали:

    M_M>Перевел af_irda.h в делфовый формат (pas) утилкой c2pas32

    M_M>но что дальше делать — не знаю.
    M_M> хелп!

    положи в свой проект,( я надеюсь ты её проправил .т.к. эта утилита работает "немного грубо" ) подключи, и начинай писать, создай сокет, и попробуй сделать коннект. В общем смотри посты повыше.


    Удачи.
    Re[8]: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 11.11.05 14:18
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Здравствуйте, Mickey_Mouse, Вы писали:


    M_M>>Перевел af_irda.h в делфовый формат (pas) утилкой c2pas32

    M_M>>но что дальше делать — не знаю.
    M_M>> хелп!

    T>положи в свой проект,( я надеюсь ты её проправил .т.к. эта утилита работает "немного грубо" ) подключи, и начинай писать, создай сокет, и попробуй сделать коннект. В общем смотри посты повыше.



    T>Удачи


    Блин, чето эта утилка плохо перевела с-шный код в пас. теперь ошибки только в нем. ты бы не мог выложить готовый (исправленный) af_irda.pas?
    заранее очень благодарю
    Re[12]: не коннектится OBEX
    От: Tsnok  
    Дата: 14.11.05 07:27
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>В Buf_s[ 0 ] должно быть число $80.

    все дело в том, что раньше не приходилось работать с подобной системой представления и преобразования информации ;(.
    поэтому не очень получается.

    // opcode|length |version|flag|packsize|HI|data length|data(uuid)
    // 80 | 001A |10 |00 |0x2000 |46|0013 |6B01CB31410611D49A770050DA3F471F

    BUF_S[ 0 ] := $80 ; //$80

    Buf_s[ 1 ] := $14 ; //длинна пакеты в байтах

    Buf_s[ 2 ] := $10 ; //version
    Buf_s[ 3 ] := $00 ; //flag
    Buf_s[ 4 ] := $20 ; //packsize
    Buf_s[ 5 ] := $00 ; //packsize
    Buf_s[ 6 ] := $46 ; //HI
    Buf_s[ 7 ] := $00 ; //data length
    Buf_s[ 8 ] := $13 ; //data length

    K>А где у тебя uuid сервиса OBEX для которого выполняется операция???

    а вот с этим большая проблема, как правильно можно uuid поместить в буфер

    Buf_s[ 9 ] := $6B01CB3 ;
    Buf_s[ 10 ] := $1410611 ;
    Buf_s[ 11 ] := $D49A770 ;
    Buf_s[ 12 ] := $050DA3F4 ;
    Buf_s[ 13 ] := $71F ;

    K>А этого тем более не может быть потому что показано что должно быть 7 байт в пакете, а ты привел 6.

    он возвращает семь байт просто там нули 00, и я их не стал писать ...
    Re[8]: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 14.11.05 15:55
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Здравствуйте, Mickey_Mouse, Вы писали:


    M_M>>Перевел af_irda.h в делфовый формат (pas) утилкой c2pas32

    M_M>>но что дальше делать — не знаю.
    M_M>> хелп!

    T>положи в свой проект,( я надеюсь ты её проправил .т.к. эта утилита работает "немного грубо" ) подключи, и начинай писать, создай сокет, и попробуй сделать коннект. В общем смотри посты повыше.



    T>Удачи.


    Друг, ну помоги. Хреново перевелся в делфу заголовочный файл. а отладить не получается. все стоит на месте. короче я в ступоре. подгони пожалуйста нормаольный заголовочный делфовый файлик af_irda.
    Обчень благодарю!
    Re[9]: не коннектится OBEX
    От: alsemm Россия  
    Дата: 14.11.05 17:33
    Оценка:
    Здравствуйте, Mickey_Mouse, Вы писали:

    ...
    M_M>Друг, ну помоги. Хреново перевелся в делфу заголовочный файл. а отладить не получается. все стоит на месте. короче я в ступоре. подгони пожалуйста нормаольный заголовочный делфовый файлик af_irda.
    Больше проблем нет?

    M_M>Обчень благодарю!
    Re[9]: не коннектится OBEX
    От: Tsnok  
    Дата: 15.11.05 04:27
    Оценка:
    Здравствуйте, Mickey_Mouse, Вы писали:

    M_M>Хреново перевелся в делфу заголовочный файл. а отладить не получается. все стоит на месте. короче я в ступоре. подгони пожалуйста нормаольный заголовочный делфовый файлик af_irda.

    M_M>Обчень благодарю!

    Давай мыло.
    Re[10]: не коннектится OBEX
    От: Mickey_Mouse  
    Дата: 15.11.05 07:13
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Здравствуйте, Mickey_Mouse, Вы писали:


    M_M>>Хреново перевелся в делфу заголовочный файл. а отладить не получается. все стоит на месте. короче я в ступоре. подгони пожалуйста нормаольный заголовочный делфовый файлик af_irda.

    M_M>>Обчень благодарю!

    T>Давай мыло.

    scorp@bvkt.kiev.ua
    Заранее огромное данке!
    Re[14]: не коннектится OBEX
    От: Tsnok  
    Дата: 17.11.05 13:12
    Оценка:
    Здравствуйте, kiborg,

    изучил ваши замечания и по попробывал реализовать фомирование пакета с учетом все выше рассмотренного, но все равно в ответ отклик неважнецкий 17 10 04 80

    // opcode|length |version|flag|packsize|HI|data length|data(uuid)
    // 80 | 001A |10 |00 |0x2000 |46|0013 |6B 01 CB 31 41 06 11 D4 9A 77 00 50 DA 3F 47 1F

    BUF_s[ 0 ] := $80;

    BUF_s[ 1 ] := $00; //length
    BUF_s[ 2 ] := $1A; //length длинна пакета 26 байт
    BUF_s[ 3 ] := $10; //VERSION
    BUF_s[ 4 ] := $00; //FLAG
    BUF_s[ 5 ] := $20; //PACKSIZE
    BUF_s[ 6 ] := $00; //PACKSIZE
    BUF_s[ 7 ] := $46; //HI
    BUF_s[ 8 ] := $00; //DATA LENGTH
    BUF_s[ 9 ] := $13; //DATA LENGTH

    {uuid}

    BUF_s[ 10 ] := $6B; BUF_s[ 11 ] := $01; BUF_s[ 12 ] := $CB; BUF_s[ 13 ] := $31;
    BUF_s[ 14 ] := $41; BUF_s[ 15 ] := $06; BUF_s[ 16 ] := $11; BUF_s[ 17 ] := $D4;
    BUF_s[ 18 ] := $9A; BUF_s[ 19 ] := $77; BUF_s[ 20 ] := $00; BUF_s[ 21 ] := $50;
    BUF_s[ 22 ] := $DA; BUF_s[ 23 ] := $3F; BUF_s[ 24 ] := $47; BUF_s[ 25 ] := $1F;

    if send( Sock, BUF_S, sizeof( @BUF_S ) , 0 ) = SOCKET_ERROR then
    Debug_.Items.Add( 'filed ... !' )
    else
    Debug_.Items.Add( 'Data send ... OK ... !' );

    recv( Sock, BUF_R, sizeof( @BUF_R ), 0 );
    View_BUF_RCV.AppendBuffer( @BUF_R, sizeof( @BUF_R ) );
    View_BUF_RCV.SelStart := 0;

    Благодарю за помощь.
    Re[16]: не коннектится OBEX
    От: Tsnok  
    Дата: 18.11.05 05:17
    Оценка:
    Здравствуйте, kiborg,

    Есть интересная вещь.

    Если при задании структуры адреса
    указать следующее

    irADRR.irdaAddressFamily := AF_IRDA;
    irADRR.irdaServiceName := 'OBEX';
    и т.д.

    и при этом послать в порт, что угодно получаю следующий отклик A0 00 07 10 00 и т.д.

    но если структуру определить как

    irADRR.irdaAddressFamily := AF_IRDA;
    irADRR.irdaServiceName := 'IrDA:IrCOMM';

    то в этом случае в ответ вываливается мусор, что в полне логично.

    Вот.
    По поводу длинны
    View_BUF_SND.AppendBuffer( @BUF_S, 26 );
    ,,,,,,,
    когда пробую просмотреть свой сформированный пакет вижу запрошенные 26 байт, судя по всему столько же отправляется в телефон,
    вот то что отображается в буфере

    80 00 00 00 00 00 00 00 1A 00 00 00 10 00 00 00
    00 00 00 00 20 00 00 00 00 00

    объясните если несложно, почему струтура пакета отличается от той что была задана, если я определил, что весь пакет заполнен данными а здесь только 6 байт в перемешку с нулями.

    if send( Sock, BUF_S, 26 , 0 ) = SOCKET_ERROR then
    ,,,,,,,

    recv( Sock, BUF_R, 26, 0 );
    View_BUF_RCV.AppendBuffer( @BUF_R, 26 );
    ,,,,,,,

    даже если определить динну пакета в 26 байт то в ответ все равно вываливается 17 04 80 и т.д.


    Благодарю за помощь!
    Re[16]: не коннектится OBEX
    От: Tsnok  
    Дата: 18.11.05 05:29
    Оценка:
    Здравствуйте, kiborg,

    пробывал формировать пакет на основе доки по обексу 1.3

    BUF_s[ 0 ] := $80;

    BUF_s[ 1 ] := $00;
    BUF_s[ 2 ] := $11;

    BUF_s[ 3 ] := $10;
    BUF_s[ 4 ] := $00;
    BUF_s[ 5 ] := $20;
    BUF_s[ 6 ] := $00;
    BUF_s[ 7 ] := $C0;
    BUF_s[ 8 ] := $00;
    BUF_s[ 9 ] := $00;
    BUF_s[ 10 ] := $00;
    BUF_s[ 11 ] := $04;
    BUF_s[ 12 ] := $C3;
    BUF_s[ 13 ] := $00;
    BUF_s[ 14 ] := $00;
    BUF_s[ 15 ] := $F4;
    BUF_s[ 16 ] := $83;

    длинну определял как 00 11 тоесть в десятичной форме это 17 байт в ответ все равно вываливается 17 04 80

    Подскажите чего не так делаю.
    Re[16]: не коннектится OBEX
    От: Tsnok  
    Дата: 18.11.05 08:38
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    В общем, сделал я нормальную структуры отправки, т.е. 80 00 1А и.т.д, но вот на счет правильности пакета у меня все равно сомнения, отклик получаю какой то не такой уже и пример из доки по обексу пробывал все равно не катит ..... подскажите пожалуйста в чем ошибка, даже не знаю чего делать

    Благодарю за помощь.
    Re[18]: не коннектится OBEX
    От: Tsnok  
    Дата: 21.11.05 10:08
    Оценка:
    Здравствуйте, kiborg,

    T>Если при задании структуры адреса

    T>указать следующее

    T> irADRR.irdaAddressFamily := AF_IRDA;

    T> irADRR.irdaServiceName := 'OBEX';
    T> и т.д.

    T>и при этом послать в порт, что угодно получаю следующий отклик A0 00 07 10 00 и т.д.

    >А это что-то не логично. Как это что угодно? Что если полсать скажем один байт на пример $00,
    >то всё равно получишь то что ты написал?
    >И кстати A0 00 07 10 00 и т.д. это ведь успешный отклик. Еслиб ты всё написал можно точно сказать, а так
    >начало неплохое...
    \Это действительно так. Если описать имя сервиса ОБЕКС, и послать в порт что угодно хот $00 то в ответ получаетм именно такой отклик. Если интересно то могу скинуть исходные коды, убедитесь сами.

    T>> if send( Sock, BUF_S, 26 , 0 ) = SOCKET_ERROR then

    T>> ,,,,,,,

    T>> recv( Sock, BUF_R, 26, 0 );

    K>Это по-прежнему не правильнро. Стратегию я описывал раньше. С какого потолка ты получаешь 26 байт?
    BUF_s[ 0 ] := $80;

    BUF_s[ 1 ] := $00; //length
    BUF_s[ 2 ] := $1A; //length

    BUF_s[ 3 ] := $10; //VERSION
    BUF_s[ 4 ] := $00; //FLAG
    BUF_s[ 5 ] := $20; //PACKSIZE
    BUF_s[ 6 ] := $00; //PACKSIZE
    BUF_s[ 7 ] := $46; //HI
    BUF_s[ 8 ] := $00; //DATA LENGTH
    BUF_s[ 9 ] := $13; //DATA LENGTH

    {uuid}

    BUF_s[ 10 ] := $6B; BUF_s[ 11 ] := $01; BUF_s[ 12 ] := $CB; BUF_s[ 13 ] := $31;
    BUF_s[ 14 ] := $41; BUF_s[ 15 ] := $06; BUF_s[ 16 ] := $11; BUF_s[ 17 ] := $D4;
    BUF_s[ 18 ] := $9A; BUF_s[ 19 ] := $77; BUF_s[ 20 ] := $00; BUF_s[ 21 ] := $50;
    BUF_s[ 22 ] := $DA; BUF_s[ 23 ] := $3F; BUF_s[ 24 ] := $47; BUF_s[ 25 ] := $1F;

    25 плюс нулевой байт в итоге имеем 26 байт. Или все таки что то не так.


    T>> View_BUF_RCV.AppendBuffer( @BUF_R, 26 );

    T>> ,,,,,,,

    K>Вот у меня вопросы.

    K>[list]
    K>
  • Что за устройство с которым ты работаешь?
    Мобильный телефон — Siemens s35

    K>
  • Есть ли у тебя программа вообще какая нибудь, которая с ним работает? То есть ты вообще видел сам чтобы с ним ктонибудь работал?
    Обмен между ним и ещё одним мобильником проиходит — обменивался картинками.

    K>
  • Если да, может ли твоё устройство работать по COM порту? Если да, то можно подглядеть что там работающая программа посылает в порт. Я например, довольно долго этим занимался, потому что все производители вставляюта
    свои особенности в протокол.
    если не секрет, не подскажите какими программами можно просматривать, что отправляется в порт.

    K>
  • Пробовал ли ты свой код на других устройствах?
    Да, результат аналогичный.
  • Re[18]: не коннектится OBEX
    От: Tsnok  
    Дата: 22.11.05 06:16
    Оценка:
    Здравствуйте, kiborg,:

    Извиняюсь за настойчивость, но неподскажите как можно просмотреть списки какталогов в телефоне, записать файл на телефон, скопировать файл файл с телефона на ПК.

    Благодарю за помощь!
    Re[20]: не коннектится OBEX
    От: Tsnok  
    Дата: 22.11.05 12:58
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>Не ну всякое бывает. Только это не правильно. Тут ничего случайного не должно быть.

    Я это понимаю. Специальо проверял на нескольких мобилках.

    K>Я говорю про функцию recv( Sock, BUF_R, 26, 0 );

    K>Откуда здесь 26???
    Сделал считывание первых 3 байт, но как можно было предположить первый байт далеко не код операции 17 а потом остальные 10 04. Подскажите, что я неправильно делаю, пакет вроде правильный.

    T>> Обмен между ним и ещё одним мобильником проиходит — обменивался картинками.

    K>При обмене между мобильниками используется OBEX Push! А не OBEX folder-listing. OBEX Push сервер принимает объект и ложит в папку по-умолчанию. Он не выдает список файлов по запросу. Другой вопрос что если поддерживается сервис OBEX Push то и как правило OBEX folder-listing. Но это разные сервисы понимаешь?
    Не подскажите как можно просмотреть содежимое телефона, тоесть картинки и пр. Если несложно не поделитесь примером на С.
    Re[21]: не коннектится OBEX
    От: kiborg Россия  
    Дата: 23.11.05 07:05
    Оценка:
    K>>Я говорю про функцию recv( Sock, BUF_R, 26, 0 );
    K>>Откуда здесь 26???
    T>Сделал считывание первых 3 байт, но как можно было предположить первый байт далеко не код операции 17 а потом остальные 10 04. Подскажите, что я неправильно делаю, пакет вроде правильный.

    Как я уже писал запускай рабочие программы, и смотри что они шлют.
    Если программа какая нибудь работает, значит ты что-то не так делаешь.


    T>>> Обмен между ним и ещё одним мобильником проиходит — обменивался картинками.

    K>>При обмене между мобильниками используется OBEX Push! А не OBEX folder-listing. OBEX Push сервер принимает объект и ложит в папку по-умолчанию. Он не выдает список файлов по запросу. Другой вопрос что если поддерживается сервис OBEX Push то и как правило OBEX folder-listing. Но это разные сервисы понимаешь?
    T>Не подскажите как можно просмотреть содежимое телефона, тоесть картинки и пр.
    В спецификации всё написано.
    посылаешь соответствующую команду чтения каталога, устройство тебе возвращает список папок\файлов.
    Хочешь перейдти в другой каталог, посылаешь соответствующую комманду перехода с именем каталога и опять читаешь содержимое.
    И так пока не надоест.

    T>Если несложно не поделитесь примером на С.

    Не сложно, не поделюсь. Коммерческая тайна.
    Да и зачем тебе, ты сначала открой OBEX сессию.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Re[22]: не коннектится OBEX
    От: Tsnok  
    Дата: 23.11.05 07:22
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    T>>Если несложно не поделитесь примером на С.

    K>Да и зачем тебе, ты сначала открой OBEX сессию.
    Я хочу попытаться при отклике
    irADRR.irdaAddressFamily := AF_IRDA;
    irADRR.irdaServiceName := 'OBEX';
    на следующую структуру. отклик вроде как по доке.
    Re[22]: не коннектится OBEX
    От: alsemm Россия  
    Дата: 23.11.05 07:51
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    ...

    T>>Если несложно не поделитесь примером на С.

    http://64.233.183.104/search?q=cache:RPbQFs0ZwvsJ:www.pocketpcdn.com/articles/obex.html+obex+cpp&amp;hl=ru
    K>Не сложно, не поделюсь. Коммерческая тайна.
    нашел чего прятать

    K>Да и зачем тебе, ты сначала открой OBEX сессию.
    Re[23]: не коннектится OBEX
    От: kiborg Россия  
    Дата: 23.11.05 10:07
    Оценка:
    Здравствуйте, alsemm, Вы писали:

    A>Здравствуйте, kiborg, Вы писали:


    A>...


    T>>>Если несложно не поделитесь примером на С.

    A>http://64.233.183.104/search?q=cache:RPbQFs0ZwvsJ:www.pocketpcdn.com/articles/obex.html+obex+cpp&amp;hl=ru
    K>>Не сложно, не поделюсь. Коммерческая тайна.
    A>нашел чего прятать

    Это не пример того чего товарищь хочет. Здесь просто пихается файл в устройство используя сервис OBEX Push (чего тут не сказано кстати).

    K>>Да и зачем тебе, ты сначала открой OBEX сессию.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Re[23]: не коннектится OBEX
    От: kiborg Россия  
    Дата: 23.11.05 10:07
    Оценка:
    Здравствуйте, Tsnok, Вы писали:

    T>Здравствуйте, kiborg, Вы писали:


    T>>>Если несложно не поделитесь примером на С.

    K>>Да и зачем тебе, ты сначала открой OBEX сессию.
    T>Я хочу попытаться при отклике
    T> irADRR.irdaAddressFamily := AF_IRDA;
    T> irADRR.irdaServiceName := 'OBEX';
    T>на следующую структуру. отклик вроде как по доке.

    Не ну если ты такой настырный...

    Готовый код выкладывать не буду, а то тебе не интересно будет.
    Но вот описание

    //---------------------------------------------------------------------------
    // Прочитать текущую директорию на устройстве
    //
    //  0x83 - Команда 83h для Чтение объекта.
    //  0xXX \ - Два байта с указанием длины этого пакета.
    //  0xXX /
    //  0x42 - параметр OBEX_HDR_TYPE (42h) тип запрашиваемого объекта
    //  0xXX \ - Два байта с указанием длины
    //  0xXX /
    //  0xXX..XX - "x-obex/folder-listing" запрос списка файлов


    // Пдробности см. в спецификации


    Ответ делжен быть SUCCES или если пакет разбит на части то CONTINUE и его нужно дочитать.
      // Ответ:
      // code            | длина |идент-ор длины      | длина объекта |HI       |длина  |
      // 0x90 - CONTINUE | XXXX  | 0xC3               |0xXXXXXXXX     |0x48-Body|0xXXXX | тело
      // 0xA0 - SUCCES           | 0x49 -  End-of-Body                          |0xXXXX | тело
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Re[24]: не коннектится OBEX
    От: alsemm Россия  
    Дата: 23.11.05 10:48
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>Здравствуйте, alsemm, Вы писали:


    A>>Здравствуйте, kiborg, Вы писали:


    A>>...


    T>>>>Если несложно не поделитесь примером на С.

    A>>http://64.233.183.104/search?q=cache:RPbQFs0ZwvsJ:www.pocketpcdn.com/articles/obex.html+obex+cpp&amp;hl=ru
    K>>>Не сложно, не поделюсь. Коммерческая тайна.
    A>>нашел чего прятать

    K>Это не пример того чего товарищь хочет. Здесь просто пихается файл в устройство используя сервис OBEX Push (чего тут не сказано кстати).

    Товаришч хочет чтоб работало, это рабочий пример. Первую часть про то как принять файл с девайса можно пропустить — там описано как запустить OBEX сервер, т.е. как принять файло, если передачу инициирует не PC, а телефон. А вторая часть про то как с PC закинуть файл на телефон, т.е. описано как написать OBEX клиента. Сможет закинуть, сможет и прочитать.
    Я правда "закинул" по первости так что все картинки с нокии потерлись но потом вроде работало.

    K>>>Да и зачем тебе, ты сначала открой OBEX сессию.
    Re[25]: не коннектится OBEX
    От: kiborg Россия  
    Дата: 24.11.05 06:14
    Оценка:
    K>>Это не пример того чего товарищь хочет. Здесь просто пихается файл в устройство используя сервис OBEX Push (чего тут не сказано кстати).
    A>Товаришч хочет чтоб работало, это рабочий пример. Первую часть про то как принять файл с девайса можно пропустить — там описано как запустить OBEX сервер, т.е. как принять файло, если передачу инициирует не PC, а телефон. А вторая часть про то как с PC закинуть файл на телефон, т.е. описано как написать OBEX клиента. Сможет закинуть, сможет и прочитать.
    A>Я правда "закинул" по первости так что все картинки с нокии потерлись но потом вроде работало.

    Товаришч хочет (и это разумно) читать файлы и папки удаленного устройства. Переходить в любую папку.
    И писать/читать из них.
    А передача файла — это частный случай всего того чего он хочет. Это само-собой разумеется.
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Re[26]: не коннектится OBEX
    От: alsemm Россия  
    Дата: 24.11.05 09:30
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>>>Это не пример того чего товарищь хочет. Здесь просто пихается файл в устройство используя сервис OBEX Push (чего тут не сказано кстати).

    A>>Товаришч хочет чтоб работало, это рабочий пример. Первую часть про то как принять файл с девайса можно пропустить — там описано как запустить OBEX сервер, т.е. как принять файло, если передачу инициирует не PC, а телефон. А вторая часть про то как с PC закинуть файл на телефон, т.е. описано как написать OBEX клиента. Сможет закинуть, сможет и прочитать.
    A>>Я правда "закинул" по первости так что все картинки с нокии потерлись но потом вроде работало.

    K>Товаришч хочет (и это разумно) читать файлы и папки удаленного устройства. Переходить в любую папку.

    K>И писать/читать из них.
    K>А передача файла — это частный случай всего того чего он хочет. Это само-собой разумеется.
    IMHO c ног на голову ты все поставил.

    Tsnok попросил пример кода на С, что и получил. Дальше пусть сам разбирается, там разжевано все.
    Re[27]: не коннектится OBEX
    От: kiborg Россия  
    Дата: 24.11.05 10:07
    Оценка:
    K>>А передача файла — это частный случай всего того чего он хочет. Это само-собой разумеется.
    A>IMHO c ног на голову ты все поставил.

    A>Tsnok попросил пример кода на С, что и получил. Дальше пусть сам разбирается, там разжевано все.

    А это не важно, что это не то что он просил?

    Вообще-то в Сети есть и более интересные примеры, стоит только пять минут поискать:
    http://prdownloads.sourceforge.net/openobex/openobex-1.0.1.tar.gz?download
    или
    http://chaos.allsiemens.com/siefs/
    ... << RSDN@Home 1.1.4 stable rev. 510>>
    Re[28]: не коннектится OBEX
    От: alsemm Россия  
    Дата: 24.11.05 11:43
    Оценка:
    Здравствуйте, kiborg, Вы писали:

    K>>>А передача файла — это частный случай всего того чего он хочет. Это само-собой разумеется.

    A>>IMHO c ног на голову ты все поставил.

    A>>Tsnok попросил пример кода на С, что и получил. Дальше пусть сам разбирается, там разжевано все.

    K>А это не важно, что это не то что он просил?
    Человеку нужен код, который можно собрать и запустить и чтоб он чего-то сделал близкое к тому что он хочет.
    Дальше отладчиком посмотрит как оно работает и решит по аналогии свою задачу.

    K>Вообще-то в Сети есть и более интересные примеры, стоит только пять минут поискать:

    K>http://prdownloads.sourceforge.net/openobex/openobex-1.0.1.tar.gz?download
    K>или
    K>http://chaos.allsiemens.com/siefs/
    Тут надо перелопатить гору кода, прежде чем доберешься до сути, а там два файла по 300 строк.
    Не надо усложнять
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.