Конференция "WinAPI" » Работа с BlueTooth [WinXP]
 
  • JohnKorsh (05.06.12 12:42) [0]
    Добрый день!
    Не поможет ли кто разобраться с тем, как грамотно написать программу для работы с USB-BlueTooth модулем?
    Модуль обеспечивает эмуляцию порта RS232 для BlueTooth.
    Для стандартного порта – работаю через API.
    При попытке инициализировать через API порт BlueTooth (система поставила его под номером COM24) возникают ошибки уже на этапе открытия файла.
    Для обычного порта функция
      com := CreateFile(   PChar(cport [port]),
                           GENERIC_READ or GENERIC_WRITE,
                           0,
                           nil,
                           OPEN_EXISTING,
                           FILE_ATTRIBUTE_NORMAL,
                           0);
    даёт ненулевое значение com (1904) и далее все функции инициализации работают нормально.
    Для BlueTooth порта функция даёт значение com 4294967295, то есть ненулевое, не ошибочное, но далее все функции инициализации дают ошибочные значения.
    При этом попытка работы через стандартную Windows программу Terminal даёт положительные результаты – данные через COM24 передаются и принимаются.
    Не подскажете ли как грамотно работать с RS232 портом, эмулируемымы ИдгуЕщщер?
  • __ (05.06.12 12:55) [1]
    ненулевое <> не ошибочное
  • robt (05.06.12 13:06) [2]
    To specify a COM port number greater than 9, use the following syntax: "\\.\COM10". This syntax works for all port numbers and hardware that allows COM port numbers to be specified.

    If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError
  • robt (05.06.12 13:08) [3]

    > 4294967295

    4294967295=INVALID_HANDLE_VALUE
  • JohnKorsh (06.06.12 18:06) [4]
    First of all really thank you. I used the syntax “\\.\COM10”. It is work. But there is a “one side connection”. The data transmit in one direction – from external BlueTooth module to IBM PC BlueTooth. (Terminal works at both sides.) Could you help me to solve the problrm?
  • robt (06.06.12 21:07) [5]
    а ты чо по инглишу то шпариш :) яте процитировал справку по CreateFile
    а про сомпорт я ни бе, ни ме ;)
  • JohnKorsh (07.06.12 08:21) [6]
    Спасибо. ПОчти помогло, только наполовину - данные пкркдаются только от модуля на компьютер, а в обратную сторону нет. Может, кто знает, как сделать, чтобы в обе стороны?
  • JohnKorsh (07.06.12 09:10) [7]
    Нашёл средство, но оно вызвало новые проблемы.
    Передаю по COM я так:

    procedure TMy_Com.putb_ex (b_cnt   : dword;
                           var res     : boolean);
     { Send of the buffer contents. }

     var
      b_send                       : dword;
      ev_word                      : dword;

     begin

      if b_cnt > 1024 then
       begin
        res := False;
        Exit;
       end;

      SetCommMask (com,  EV_TXEMPTY);

      WriteFile(com,
                Tx_Buffer,
                b_cnt,
                b_send,
                nil);

    //   WaitCommEvent (com,
    //                  ev_word,
    //                  nil);

      if b_send = b_cnt then
       begin
        res := True;
       end
      else
       begin
        res := False;
       end;

     end;

    При попытке работать через BlueTooth    WaitCommEvent ждёт бесконечно. После исключения функции из кода всё работает, но только под BlueTooth, понятно.
    В связи с этим, не подскажет ли кто, как определить, обычный COM у меня или BlueTooth?
  • robt (07.06.12 12:11) [8]
    книга
    Павел Агуров - Последовательные интерфейсы ПК . Практика программирования
    думаю что инфы лучшей, да ищо и на делфе в природе нет
  • Германн © (10.06.12 01:26) [9]

    > книга
    > Павел Агуров - Последовательные интерфейсы ПК . Практика
    > программирования

    http://rouse.drkb.ru/books.php#agurov_com
  • Dmitriy (12.07.12 14:43) [10]

    > При попытке работать через BlueTooth    WaitCommEvent ждёт
    > бесконечно.


    эм... а проверять что вернул writefile - не надо?

    а очень нужно знать когда txempty?
  • Dmitriy (13.07.12 09:15) [11]

    > USB-BlueTooth модулем?


    ...


    > В связи с этим, не подскажет ли кто, как определить, обычный
    > COM у меня или BlueTooth?


    У каждого USB устройства есть VID и PID
    если USB преобразуется в COM-порт, то по VID&PID можно определить номер этого ком-порта
    как - я уже писал
    http://pda.delphimaster.net/?n=5&id=1246048804&p=2
    сообщение номер 29
 
Конференция "WinAPI" » Работа с BlueTooth [WinXP]
Есть новые Нет новых   [134430   +4][b:0][p:0.001]