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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программирование Bluetooth, передать файл с ПК на КПК или мобилу 
:(
    Опции темы
rlepricon
Дата 27.4.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Првиет...

Подскажите, плиз, как передать файлик с ПК на мобилу или КПК через Bluetooth. Как это делать через инфоракрасник я разобрался... Щас надо сделать это через Bluetooth. Наскока я понял надо выполнить следующие шаги:

1. Обнаружение устройств.
2. Выбор устройства.
3. Установление соединения с выбранным устройством.
4. Авторизация на выбранном устройстве.
5. Передача файла
6. Дисконнект.

У меня по большому засада уже не первом пункте :-(

Если кто делал помогите, плиз!!!
 
PM MAIL   Вверх
Nuzur
Дата 28.4.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

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



Поделись способами по инфрокраснику плиз.
Тема интерестна и мне(я про синий зуб). 


--------------------
Never again...
PM MAIL   Вверх
rlepricon
Дата 28.4.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



До дома дойду выложу исходники по IRDA... 
PM MAIL   Вверх
rlepricon
Дата 29.4.2006, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как и обещал выкладываю исходник:

файл obex.h (содержит объявления констант)

Код

// OBEX Operation Codes
#define OBEX_PUT                (BYTE)    0x02
#define OBEX_PUT_FINAL            (BYTE)    0x82
#define OBEX_CONNECT            (BYTE)    0x80
#define OBEX_DISCONNECT            (BYTE)    0x81

// OBEX Header Codes
#define OBEX_NAME                (BYTE)    0x01
#define OBEX_LENGTH                (BYTE)    0xC3
#define OBEX_DESCRIPTION        (BYTE)    0x05
#define OBEX_PALM_CREATOR_ID    (BYTE)    0xCF
#define OBEX_BODY                (BYTE)    0x48
#define OBEX_END_OF_BODY        (BYTE)    0x49

// OBEX Response Codes
#define OBEX_CONTINUE            (BYTE)    0x90
#define OBEX_SUCCESS            (BYTE)    0xA0

#define OBEX_VERSION            (BYTE)    0x10
#define OBEX_CONNECT_FLAGS        (BYTE)    0x00

файл main.cpp

#include <winsock2.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>

#ifndef _WIN32_WINNT
#define _WIN32_WINNT
#endif

#include <af_irda.h>

#define MAX_RETRIES 10
#define MAX_BUFFER 0x200
#define MAX_PKT_SIZE 0x800

#include "obex.h"

SOCKET sock;
int FindDevices(SOCKET s,DEVICELIST *devlist) 
{
    DWORD dwNumRetries = 0;
    int dwDevListSz;
    int ret;
    dwDevListSz = sizeof(*devlist);
    devlist->numDevice = 0;
    while ((devlist->numDevice == 0)&&(dwNumRetries <= MAX_RETRIES)) 
   {
        ret = getsockopt(s,SOL_IRLMP,IRLMP_ENUMDEVICES,(char*)devlist,&dwDevListSz);
        if (ret == SOCKET_ERROR) 
       {
            fprintf(stderr,"getsockopt(IRLMP_ENUMDEVICES) failed: %h\n",WSAGetLastError());
            return 0;
        };
        dwNumRetries++;
        Sleep(1000);
    };
    if (dwNumRetries > MAX_RETRIES) 
    {
        return 0;
    };
    return devlist->numDevice;
};

int main(int argc, char **argv) 
{
    WSADATA wsd;
    SOCKADDR_IRDA irAddr = {AF_IRDA, 0, 0, 0, 0, "OBEX"};
    DWORD dwIrSize = sizeof(SOCKADDR_IRDA);
    DEVICELIST devlist;
    WORD wVersion;
    char *FileName = "010.gif";
        wVersion = MAKEWORD(2,2);
    if (WSAStartup(wVersion, &wsd) !=0) 
{
        printf("Unable to load Winsock library\n");
        return 1;
    };
    sock = socket(AF_IRDA,SOCK_STREAM,0);
    if (sock == INVALID_SOCKET) 
{
        printf("socket() failed: %d",WSAGetLastError());
        return 1;
    };
    if (FindDevices(sock,&devlist) == 0) 
{
        printf("No IrDA devices in range\n");
        return 1;
    };

    printf("Device ID: %d\n", devlist.Device[0].irdaDeviceID);
    printf("Device Name: %s\n", devlist.Device[0].irdaDeviceName);

    int i=0;
    for(i=0;i<4;i++) irAddr.irdaDeviceID[i] = devlist.Device[0].irdaDeviceID[i];

    if (connect(sock,(struct sockaddr*)&irAddr,sizeof(irAddr)) == SOCKET_ERROR) 
{
        printf("Unable to locate service: %s\n",irAddr.irdaServiceName);
        printf("connect() error: %d\n", WSAGetLastError());
        return 1;
    };

    printf("Connected\n");
    char sndBuff[MAX_BUFFER] = {0};
    char rcvBuff[MAX_BUFFER] = {0};
    sndBuff[0] = (char)0x80;
    sndBuff[1] = (char)0x00;
    sndBuff[2] = (char)0x07;
    sndBuff[3] = (char)0x10;
    sndBuff[4] = (char)0x00;
    sndBuff[5] = (char)0x02;
    sndBuff[6] = (char)0x00;
    if (send(sock,sndBuff,7,0)==SOCKET_ERROR) 
{
        printf("Send Error: %d\n",WSAGetLastError());
        return 1;
    };

    if ((recv(sock,rcvBuff,MAX_BUFFER,0)==SOCKET_ERROR)||(rcvBuff[0]!=(char)0xA0)) 
{
        printf("Recive Error: %d\n",WSAGetLastError());
        return 1;
    };

    wchar_t filelen = (strlen(FileName)+1)*sizeof(wchar_t);
    sndBuff[0] = 0x02;
    *((unsigned short*)&sndBuff[1])=htons((unsigned short)(filelen+6));
    sndBuff[3] = 0x01;
    *((unsigned short*)&sndBuff[4])=htons((unsigned short)(filelen+3));
    for (i=0;i<((int)(filelen/2));i++)
        *((unsigned short *)&sndBuff[6+2*i])=htons((unsigned short)FileName[i]);

    if (send(sock,sndBuff,filelen+6,0)==SOCKET_ERROR) 
{
        printf("Send Error: %d\n",WSAGetLastError());
        return 1;
    };

    if ((recv(sock,rcvBuff,MAX_BUFFER,0)==SOCKET_ERROR)||(rcvBuff[0]!=(char)0x90)) 
{
        printf("Recive Error: %d\n",WSAGetLastError());
        return 1;
    };

// Загрузка файла    
    HANDLE f = CreateFile(FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    char FileBuff[0x32000];
    DWORD BytesRead;
    ReadFile(f,FileBuff,0x32000,&BytesRead,NULL);
    printf("Bytes read: %d\n",BytesRead);
//----------------

    DWORD j = 0;
    DWORD k = 0;
    DWORD pkgsize = 0;
    DWORD pkgcount = 1;

    while (j < BytesRead) 
{
        sndBuff[0]=0x02;
        sndBuff[1]=0x02;
        sndBuff[2]=0x00;
        sndBuff[3]=0x48;
        sndBuff[4]=0x01;
        sndBuff[5]=0xFD;
        pkgsize = MAX_BUFFER-6;
        if (BytesRead-j<=pkgsize) 
        {
            pkgsize=BytesRead-j;
            sndBuff[0]=0x82;
            *((unsigned short*)&sndBuff[1])=htons((unsigned short)pkgsize+6);
            sndBuff[3]=0x49;
            *((unsigned short*)&sndBuff[4])=htons((unsigned short)pkgsize+3);
        };
        for(k=0;k<pkgsize;k++) { sndBuff[6+k]=FileBuff[j+k]; };
        
        if (send(sock,sndBuff,pkgsize+6,0)==SOCKET_ERROR) 
{
            printf("Send Error: %d\n",WSAGetLastError());
            return 1;
        };

        if ((recv(sock,rcvBuff,MAX_BUFFER,0)==SOCKET_ERROR)
            ||((rcvBuff[0]!=(char)0x90)&&(sndBuff[0]==0x02))
            ||((rcvBuff[0]!=(char)0xA0)&&(sndBuff[0]==0x82))) {
            printf("Recive Error: %d\n",WSAGetLastError());
            return 1;
        };
        
        j+=pkgsize;
        printf("Pakage size: %d, Pakage number: %d\n",pkgsize,pkgcount++);
        if ((sndBuff[0]==0x82)&&(rcvBuff[0]==0xA0)) {printf("File sended ok!\n"); };
    };
    
//    int BytesSent = 0;
//    if ((BytesSent = send(sock, sndBuff, BytesRead, 0)) == SOCKET_ERROR) {
//        printf("Send Error: %d\n",WSAGetLastError());
//        return 1;
//    };
    getch();
//    CloseHandle(f);
    closesocket(sock);
    WSACleanup();
    return 0;
};


если будут вопросы, спрашивай...

я компилил на VS6.0 надо компилить с библиотекой ws2_32.lib

Если надо могу проект выслать на мыло. 

Это сообщение отредактировал(а) Олег2005 - 21.4.2010, 09:02
PM MAIL   Вверх
Nuzur
Дата 2.5.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

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



Вышли пожалуйста.

Это сообщение отредактировал(а) Nuzur - 6.7.2007, 15:38


--------------------
Never again...
PM MAIL   Вверх
rlepricon
Дата 4.5.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если кто-то всё таки разбирался, то подскажите, где я ошибся?

Локальный Bluetooth адаптер я нахожу, и могу получить с него всю инфу, далее когда пытаюсь найти удалённые устройства он их не находит, хотя стандартными средствами Windows они находятся.

Что я не так делаю? подскажите, плиз 

Код

#include <winsock2.h>
#include <ws2bth.h>
#include <bthdef.h>

#include <BluetoothAPIs.h>

#include <stdio.h>

int main() {


// Инициализация WinSock
    WSADATA wsd;
    WORD Version = MAKEWORD(2,2);

    if (WSAStartup(Version,&wsd)!=0) {
        printf("WSAStartup error\n");
        return 1;
    }; 

// Поиск первого Bluetooth устройства установленного на компьютере
    HANDLE hRadio;
    BLUETOOTH_FIND_RADIO_PARAMS btfrp;
    HBLUETOOTH_RADIO_FIND hFind;

    BLUETOOTH_RADIO_INFO RadioInfo= {0};

    btfrp.dwSize = sizeof(btfrp);

    hFind = BluetoothFindFirstRadio(&btfrp,&hRadio);

    if (hFind != 0) {
        printf("Local radio module is found\n");
    } else {
        printf("Nothing is found\n");
        return 1;
    };

// Поиск удалённых Bluetooth устройств

    HBLUETOOTH_DEVICE_FIND hDeviceFind;
    BLUETOOTH_DEVICE_SEARCH_PARAMS btdsp;
    BLUETOOTH_DEVICE_INFO DeviceInfo = {0};

    btdsp.dwSize = sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS);
    btdsp.fReturnRemembered = true;
    btdsp.hRadio = hRadio;

    DeviceInfo.dwSize=sizeof(BLUETOOTH_DEVICE_INFO);
    hDeviceFind = BluetoothFindFirstDevice(&btdsp,&DeviceInfo);

    if (hDeviceFind!=NULL) {
        printf("Remote device is found\n");
    };
    

    BluetoothFindDeviceClose(hDeviceFind);
    CloseHandle(hRadio);

    return 0;
};
 


Локальный Bluetooth адаптер я нахожу, и могу получить с него всю инфу, далее когда пытаюсь найти удалённые устройства он их не находит, хотя стандартными средствами Windows они находятся.

Что я не так делаю? подскажите, плиз  
PM MAIL   Вверх
blur
Дата 5.5.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(rlepricon @  4.5.2006,  15:50 Найти цитируемый пост)
Что я не так делаю? подскажите, плиз  

Попробуй вот такой код:

Код

#include "bthdef.h"
#include "BluetoothAPIs.h"
#pragma comment(lib, "irprops.lib")

BLUETOOTH_DEVICE_SEARCH_PARAMS bdsp;
BLUETOOTH_DEVICE_INFO bdi;
HBLUETOOTH_DEVICE_FIND hbf;

ZeroMemory(&bdsp, sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS));

bdsp.dwSize = sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS);
bdsp.fReturnAuthenticated = TRUE;
bdsp.fReturnRemembered = TRUE;
bdsp.fReturnUnknown = TRUE;
bdsp.fReturnConnected = TRUE;
bdsp.fIssueInquiry = TRUE;
bdsp.cTimeoutMultiplier = 10;
bdsp.hRadio = NULL;

bdi.dwSize = sizeof(bdi);

hbf = BluetoothFindFirstDevice(&bdsp, &bdi);
DWORD dwErr = GetLastError();

if (hbf != NULL)
{
 TCHAR szDevName[MAX_PATH];

 while(1)
 {
  memset(szDevName, 0x00, sizeof(szDevName));
  sprintf(szDevName, _T("Name:%S"), bdi.szName);
  MessageBox(szDevName, _T("Bluetooth Info"));

  if (BluetoothFindNextDevice(hbf, &bdi) == FALSE)
   break;
 }

 BluetoothFindDeviceClose(hbf);
}
else
{
 //No Devices Found...
}

 
PM MAIL   Вверх
rlepricon
Дата 5.5.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, заработало :-) 
PM MAIL   Вверх
blur
Дата 5.5.2006, 14:30 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(rlepricon @  5.5.2006,  14:25 Найти цитируемый пост)
Спасибо, заработало :-)  

А плюсик?  smile 
 
PM MAIL   Вверх
cozzzy
Дата 5.5.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.4.2006
Где: Харьков

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



 smile 

Цитата(blur @  5.5.2006,  13:30 Найти цитируемый пост)
А плюсик?   

Какой ты корыстный  smile 

З.Ы. Он еще не может =) 
PM MAIL   Вверх
rlepricon
Дата 5.5.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как выяснолись пока не могу плюсики ставить постов пока мало :-( 
PM MAIL   Вверх
rlepricon
Дата 12.5.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я сделал ЭТО!

Вообщем есть одно ограничение (в моей программе): 

Блютуц-адаптер, который подключён к компу должен определяться WinXP SP2 без установки драйверов.

и ещё не до конца разобрался с авторизацией...
 
PM MAIL   Вверх
Sambir
Дата 30.9.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не могу подключить библиотеки BluetoothAPIs.h и bthdef.h что мне делать. 
!!!HELP!!!

Добавлено @ 15:25 
Я не могу подключить библиотеки BluetoothAPIs.h и bthdef.h что мне делать. 
!!!HELP!!!

Это сообщение отредактировал(а) Sambir - 4.11.2006, 00:16
PM MAIL   Вверх
Vladimir_Petrov
Дата 7.1.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я нашел библиотеки BluetoothAPIs.h и bthdef.h (ниже), но никак не могу найти заголовочный файл ws2bth.h.
Что нужно, чтоб заработал вышеописанный код(ы)?
Пробовал VC6.0 XP SP1 или SP2 не получилось. Не хватает библиотек и мозгов.
Подскажите ПЛЗ...

Присоединённый файл ( Кол-во скачиваний: 189 )
Присоединённый файл  Bluetooth_API.rar 22,64 Kb
PM MAIL   Вверх
witex
Дата 8.1.2007, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не ну я понимаю, помощь дело святое! Но зачем древние темы поднимать??? ты бы ещё прошлогодню поднял!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Vladimir_Petrov
Дата 8.1.2007, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все нормально.
меня интересует именно этот вопрос, тем более он решен если. Бьюсь над ним уже несколько месяцев.
Нужно просто узнать необходимые условия для работы вышеописанного кода.
Думаю, я не один такой.
PM MAIL   Вверх
Vovik_ukr
Дата 24.6.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 12.11.2006
Где: Ukraine, Kharkiv

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



Попробуй поставить MS Platform SDK for MS Windows SP2.
PM MAIL WWW   Вверх
MakC_726
Дата 4.7.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго времени суток!

Передо мной также стоит задача отсылки файла посредством bluetooth с ПК на мобильный телефон/КПК. Найти и перечислить все удаленные устройства я тут посмотрел как. Далее нужно установить соединение, авторизоваться, и собственно передать файл.

Вот у меня и появилась проблема: как написать код, устанавливающий соединение с удаленным устройством (мобильник/КПК) и отправляющий на него заданный файл, при этом не используя на этом самом устройстве никаких дополнительных софтов?
В МСДН и нете много примеров как найти и перечислить все удаленные устройства, но нет ни одного как послать туда файл используя только чистый WinSock (т.е. не на C# или чем-то подобном).

P.S.: Конкретная задача, стоящая передо мной звучит так: "Разработать DLL-библиотеку на C++, с помощью которой можно посылать на смартфоны и прочие подобные устройства (если есть какая-либо существенная разница, то можно ограничиться только смартфонами) файлы с ПК именно через bluetooth-адаптер (не используя на самом смартфоне своего софта)"
PM MAIL   Вверх
tauhider
  Дата 18.12.2007, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Рахматик!  smile 
PM MAIL   Вверх
Kitt
Дата 17.1.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте, а что делать, если прога компилится, но в hFind записывается undefined value и, как следствие, код не работает))


// Поиск первого Bluetooth устройства установленного на компьютере
    HANDLE hRadio;
    BLUETOOTH_FIND_RADIO_PARAMS btfrp;
    HBLUETOOTH_RADIO_FIND hFind;

    BLUETOOTH_RADIO_INFO RadioInfo= {0};

    btfrp.dwSize = sizeof(btfrp);

    hFind = BluetoothFindFirstRadio(&btfrp,&hRadio);

    if (hFind != 0) {
        printf("Local radio module is found\n");
    } else {
        printf("Nothing is found\n");
        return 1;
    };





PM MAIL   Вверх
ptr
Дата 21.1.2008, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



Поподробнее можно. Что за undefined value? И желательно весь код.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
Kitt
Дата 27.2.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код был стандартный, из комментария BluetoothAPIs.h, по-моему. Не работало из-за того, что сам адаптер не распознавался стандартными средствами винды. Отсюда и возникало   "undefined value" С другим адаптером работает  smile 
PM MAIL   Вверх
zonch
Дата 22.1.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Господа,чем дело то закончилось?У кого-нибудь получилось ПЕРЕДАТЬ файл по блюхе ,используя только свою программу?
Найти \авториовать\удалить устройсва и у меня получилось.Кто -нибудь передавал фал????????????????
PM MAIL   Вверх
Vladimir_Petrov
Дата 22.1.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня нет :( Несколько раз пытался подойти к решению данной проблемы. Кучу примеров перерыл. Не получилось.
PM MAIL   Вверх
zonch
Дата 22.1.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть решение вроде передавать надо через протокол obex http://dev.zuckschwerdt.org/openobex/wiki/...FtpExamplePushC 
тут пример отправки,хедер client.h  и остальные есть там же ,на сайте http://sourceforge.net/project/showfiles.p...ackage_id=62937
dll библиотеки тож гдет на сайте имеются. Но <cenzored>, хоть кто-нить бы объяснил как это и что это.Из dll нужно еще как-то изъять lib ,для того,чтобы прописать адреса функций в dll,но dumpbin не помогает..Не дает и все список функций..

M
Олег2005
Замечание за использование ненормативной лексики


Это сообщение отредактировал(а) Олег2005 - 23.1.2009, 11:26
PM MAIL   Вверх
alex00888
Дата 23.2.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня получилось, нужно только немного переделать пример передачи по IRDA (см. выше: http://forum.vingrad.ru/index.php?showtopi...st&p=715663 ), как найти bluetooth устройство тоже см.выше, а при соединении сокета нужно написать:
Код

    SOCKET sock;
    sock = socket(AF_BTH,SOCK_STREAM,BTHPROTO_RFCOMM);
    if(sock == INVALID_SOCKET) {
        return false;
    }
    SOCKADDR_BTH sbt;
    ZeroMemory(&sbt, sizeof(SOCKADDR_BTH));
    sbt.btAddr = addr;                                            // Заранее полученный адрес
    sbt.port = (DWORD)BT_PORT_ANY;
    sbt.serviceClassId = OBEXObjectPushServiceClass_UUID;
    sbt.addressFamily = AF_BTH;
    if(connect(sock,(SOCKADDR*)&sbt,sizeof(SOCKADDR_BTH))) {
        return false;
    }

всё остальное берётся из примера без изменений.
PM MAIL   Вверх
garmon4ik
Дата 29.5.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А какие параметры нужно указвать на принимающей соединение стороне? К примеру я использую след код, но на accept он зависает и все, как будто бы соединения и не поступало вовсе. 
Код

WSAData dt;
    if(WSAStartup(0x0202,&dt)!=0) printf("error111");
    SOCKET s;
    s=socket(AF_BTH,SOCK_STREAM,BTHPROTO_RFCOMM);
     SOCKADDR_BTH sbt;
    ZeroMemory(&sbt, sizeof(SOCKADDR_BTH));
    BTH_ADDR* bth=new BTH_ADDR;
    long q=AddrStringToBtAddr("00:15:83:19:a1:40",bth);  // Заранее полученный адрес
    sbt.btAddr= 0;
    sbt.port = (DWORD)BT_PORT_ANY;
    sbt.serviceClassId = OBEXObjectPushServiceClass_UUID;
    sbt.addressFamily = AF_BTH;

    if(bind(s,(SOCKADDR*)&sbt,sizeof(sbt))==SOCKET_ERROR) printf("Errbind %i\n", GetLastError());
    listen(s,1);

    SOCKADDR_BTH sbt1;
    int len = sizeof (sbt1);
        SOCKET    ss=accept(s,(SOCKADDR*)&sbt1,&len);
    if(ss==INVALID_SOCKET)
    {
        printf("ErrAccept %i\n", GetLastError());
    }

PM MAIL   Вверх
alex00888
Дата 25.10.2009, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Зачем accept? Принимать соединение не надо! Принимающая сторона - мобильный/кпк/ноут, он уже умеет принимать соединения по этому протоколу. Нужно только послать данные как я описал выше, принимающая сторона получив запрос на соединение спросит у юзера "Принять данные от ***? да/нет", и в случае согласия примет файл автоматически.
PM MAIL   Вверх
SkyProc
Дата 19.4.2010, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ что за трабла???

BluetoothFindFirstDevice
возвращает 0
а
GetLastError = 0x7E = ERROR_MOD_NOT_FOUND

PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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