Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2021, 17:28   #11
Lexa09
Новичок
Джуниор
 
Регистрация: 24.12.2008
Сообщений: 1
По умолчанию

здравствуйте! использую модуль EasyBlueTooth. при нажатии на кнопку получить список устройств выходит ошибка
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
a:=TServerConnectionTH.Create(true);//инициализируем модуль
a.PairedDevices(ComboBox1);//получаем список сопряженных устройств
end;
подскажите в чем проблема?
Изображения
Тип файла: jpg Screensho.jpg (23.4 Кб, 5 просмотров)
Lexa09 вне форума Ответить с цитированием
Старый 30.05.2022, 15:56   #12
stalker17
 
Регистрация: 14.01.2019
Сообщений: 4
По умолчанию

Чтобы на приём работало, надо переделать
Код:
procedure TServerConnectionTH.Connect(index: integer);
begin
  if (ServerConnectionTH = nil) and ManagerConnected then
  begin
    FAdapter := FBluetoothManager.CurrentAdapter;
    //ServerConnectionTH := TServerConnectionTH.Create(True, FClientProc); //Может Dumb;
    //ServerConnectionTH.FServerSocket := FAdapter.CreateServerSocket(ServiceName,
   //   StringToGUID(ServiceGUI), False);
   // ServerConnectionTH.Start;
    if (FSocket = nil) or (ItemIndex <> index) then
    begin
      if index > -1 then
      begin
        LDevice := FPairedDevices[index] as TBluetoothDevice;
        FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False);
        if FSocket <> nil then
        begin
          ItemIndex := index;
          FSocket.Connect;
          //ServerConnectionTH.FSocket := FSocket;
          Start;
        end;
      end;
    end;
  end;
end;
И также

Код:
procedure TServerConnectionTH.Execute;
var
  ASocket: TBluetoothSocket;
  Msg: string;
begin
  while not Terminated do
    try
     // ASocket := nil;
      //while not Terminated and (ASocket = nil) and (FServerSocket<>nil) do
     //   ASocket := FServerSocket.Accept(100);
      if (FSocket <> nil) then
      begin
       // FSocket := ASocket;
        while not Terminated do
        begin
          FData := FSocket.ReadData; //ASocket
....
Проверялось только в Win32
stalker17 вне форума Ответить с цитированием
Старый 09.06.2022, 01:19   #13
stalker17
 
Регистрация: 14.01.2019
Сообщений: 4
По умолчанию

На андройд код выше тоже работает ,проблемы начинаются если разнести устройства и связь обрывается. После этого они уже между собой знаться не хотят и выдаётся сообщение 'IOException: Broken Pipe' . Иногда восстановления связи даже после однократного перезапуска программы не происходит. Кто-то решал подобную задачу?
stalker17 вне форума Ответить с цитированием
Старый 14.06.2022, 17:15   #14
stalker17
 
Регистрация: 14.01.2019
Сообщений: 4
По умолчанию

В итоге так сделал
Код:
try
    Port.Disconnect;
    Port.Suspend;
    Port.Connect(PortIndex,False);
  except                    //Подавляем вывод сообщения о глюке.
 
  end;

...

procedure TServerConnectionTH.Connect(index: integer;IsStart:Boolean=True);
begin
  if (ServerConnectionTH = nil) and ManagerConnected then
  begin
    FAdapter := FBluetoothManager.CurrentAdapter;
    if (FSocket = nil) or (ItemIndex <> index) then
    begin
      if index > -1 then
      begin
        LDevice := FPairedDevices[index] as TBluetoothDevice;
        FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False);
        if FSocket <> nil then
        begin
          ItemIndex := index;
          //FluetoothManager.cancelDiscovery();  //Может и не даёт ничего
          FSocket.Connect;
          if IsStart then Start
                     else Resume;
        end;
      end;
    end;
  end;
end;

procedure TServerConnectionTH.Disconnect;
begin
  if (FSocket <> nil) then
     FSocket.close;
 FSocket := nil;
end;
stalker17 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XE8 + Android: не запрашивает доступ к Bluetooth mosq Мобильные ОС (Android, iOS, Windows Phone) 0 14.06.2017 11:21
FM Bluetooth PTyTb32 Компоненты Delphi 0 08.01.2017 02:27
bluetooth Drago56 C/C++ Сетевое программирование 0 25.02.2016 23:36
BlueTooth GBAXA Работа с сетью в Delphi 1 19.12.2010 13:53
BlueTooth subsonic Общие вопросы Delphi 4 24.07.2008 16:19