Модераторы: Alexeis
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BlueTooth и КПК, Как работать с BT на КПК (програмно) 
:(
    Опции темы
Ren
Дата 21.8.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



Подскажите как прграмно работать с BT на КПК. Для начала совсем немного:
0) вкл./выкл. устройство (эт нашёл как);
1) Поиск др.устройств в окружении;
2) Установка соединения с выбраным устройством;
3) Выбор услуги (Передача файлов | корпоративная сеть | и др.)
4) Обмен данными с выбраным устройством;
5) Коректоно закрыть соединение.

Язык программирования C#.
КПК с WM 5.0 и выше.
Драйвера BT Widcom, по возможности и другие поставщики, так как не определился ещё с самой КПК.

Если есть кака-либо литература по сабж. поделитесь, пожайлуста.
PM MAIL   Вверх
HaronDDC
Дата 27.8.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Хорошие производители поставляют свои библиотеки для работы BT
(все вами описанное поддерживается, естественно).


Например, у CASIO, скажем (IT600, DT-X5) очень удобный C-апи (виртуальный Ком-порт)
Вообще - рекомундую It600 - неплохой девайс, хотя и недешевый.
Также работал с девайсами Datalogic - у них достаточно стандартизованный АПИ, - 
работа идет как с сокетом (различия только в заполнении струтур инициализации). Есть также режим виртуального КОМ-порта.

Вообще, - можете посмотреть в направлении Platform SDK: Bluetooth.

Но опять-таки производитель вашего девайса может не поддерживать этот интерфейс (или поддерживать не полностью).
Лучше использовать "родной" SDK, поставляемый с девайсом.

PM MAIL   Вверх
Ren
Дата 27.8.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



2HaronDDC

Цитата(HaronDDC @  27.8.2007,  17:15 Найти цитируемый пост)
Но опять-таки производитель вашего девайса может не поддерживать этот интерфейс (или поддерживать не полностью).


С этой проблемкой уже стыкнулся. Когда пробывал включить устройство-BT на  HP21xx и ASUS. У них разные библиотеки DLL, как результат на втором все ОК, а на HP генерировало ошибку.


Цитата(HaronDDC @  27.8.2007,  17:15 Найти цитируемый пост)
Лучше использовать "родной" SDK, поставляемый с девайсом.

Где его можно найти?

PM MAIL   Вверх
HaronDDC
Дата 27.8.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



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

2. Обычно встречается на сидюке с девайсом. 
Также можно скачать с сайта производителя девайса.


PM MAIL   Вверх
Ren
Дата 28.8.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



2HaronDDC
Цитата(HaronDDC @  27.8.2007,  20:19 Найти цитируемый пост)
Ну попробуйте влючать БТ в шеле

А это как реализовать, можно более популярно - как для новичка.

по п.2.: на СД ничёго полезного не нашёл. Поищу на сайтах производителя, может там что-то будет.
PM MAIL   Вверх
HaronDDC
Дата 20.9.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



1. Посмотрите MSDN.

2. А вообще, - вот короткий отрывок, возможно, не лучший... по поиску девайсов.
Я выдрал этот кусок из приложения... так что извиняйте, если что...
Могут быть несостыковки, но суть, думаю, понятна.

Код

WSAQUERYSET        wsaq;
HANDLE            hLookup = NULL;
int            iErr;
int            i;
DWORD            dwUnused;
    
curNum            = 0;    //Обнуляем число девайсов
    
memset (&wsaq, 0, sizeof(wsaq));
wsaq.dwSize      = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL;

iErr = BthNsLookupServiceBegin (&wsaq, LUP_CONTAINERS, &hLookup);

if (iErr != ERROR_SUCCESS) 
{
AfxMessageBox(L"Bluetooth hardware error %d\n",iErr);
return;
}

while (iErr == ERROR_SUCCESS) 
{
union 
{
    CHAR buf[5000];
    SOCKADDR_BTH    __unused;    // properly align buffer to BT_ADDR requirements
};

LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;
DWORD dwSize  = sizeof(buf);

memset(pwsaResults,0,sizeof(WSAQUERYSET));
pwsaResults->dwSize      = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob      = NULL;

ASSERT(hLookup);
iErr = BthNsLookupServiceNext (hLookup, LUP_RETURN_ADDR, &dwSize, pwsaResults);

if (iErr == ERROR_SUCCESS) 
{
if (pwsaResults->dwNumberOfCsAddrs == 1)
{
    stDEVINFO[curNum].b = ((SOCKADDR_BTH *)pwsaResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;
    curNum++;
}
}
}

    //Reset iterator and beginn querying for names.
    iErr = BthNsLookupServiceNext (hLookup, BTHNS_LUP_RESET_ITERATOR, &dwUnused, NULL);

    while (iErr == ERROR_SUCCESS && curNum != 0) 
    {
        union 
        {
            CHAR buf[5000];
            SOCKADDR_BTH    __unused;    // properly align buffer to BT_ADDR requirements
        };

        LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;
        DWORD dwSize  = sizeof(buf);

        memset(pwsaResults,0,sizeof(WSAQUERYSET));
        pwsaResults->dwSize      = sizeof(WSAQUERYSET);
        pwsaResults->dwNameSpace = NS_BTH;
        pwsaResults->lpBlob      = NULL;
    
        ASSERT(hLookup);

        iErr = BthNsLookupServiceNext (hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults);
        
        if ((iErr == ERROR_SUCCESS) &&
            pwsaResults->lpszServiceInstanceName && 
            *(pwsaResults->lpszServiceInstanceName)) 
        {
            //Нашли чаво-то...
            for (i=0;i<curNum;i++)
            {
                if (stDEVINFO[i].b == ((SOCKADDR_BTH *)pwsaResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr)
                    break;
            }

            //Провреяем, есть-ли у нас такой адрес.
            if (i != curNum) 
            {
                //Копируем это дело.
                wcsncpy(stDEVINFO[i].szName, pwsaResults->lpszServiceInstanceName,250);
            }

        }
    }




PM MAIL   Вверх
Ren
Дата 24.9.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



HaronDDC: 1) Эт хороший вариант, но не изчерпующий. Иногда там так закрутят, что долго разбираться приходиться.
2) Спасибо, код безусловно наверно палезный. Мог бы сказать что-то более существенное, если б С++ когда либо изучал в достаточном объеме. Как его можно применить для приложения написаном на C#?

ALL:
Возможно ли запустить ярлык, который сохранён в ВТ_Диспечере (Менеджере) программным путём? Напр.: Создал подключенее "ручками", будь то подключение обзора файлов иль модемное соединение, иль ещё какой-то вариант. А потом из приложения ссылаться на этот ярлык (За его названием, иль каким-то ещё характеристиками. Система как-то же их (ярлыки в ВТ_Диспечере)различает.

З.Ы. Не судите строго - новичёк я. Помогите, если кто знает, плз.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование мобильных устройств"
Alexeis

Раздел посвящен программированию мобильных устройств.

Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п),
не имеющие отношения к программированию, просьба размещать в разделе КПК, смартфоны, мобильники

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.