Как получить данные с помощью Bluetooth после подключения (в режиме прослушивания) в Delphi android - PullRequest
0 голосов
/ 25 октября 2018

Я разрабатываю приложение для Android в Delphi, как классическое приложение Bluetooth, в котором мне нужно получить данные, отсканированные сканером Bluetooth и отобразить их в компоненте TEdit в Firemonkey.

Мне удалось подключиться к сопряженному устройству и отсканировать первые данные.Но для следующей серии сканирования я не знаю, куда звонить FSocket.ReceiveData.В Java есть вызов функции прослушивания, которая ожидает входящих потоков, как мне это сделать в Delphi android pls?

Вот мой код: фрагмент кода из образца классического Bluetooth в Rad:

procedure TForm1.SendData;
 var
  ToSend: TBytes;
  LDevice: TBluetoothDevice;
  Buff: TBytes;
 begin
  if (FSocket = nil) or (ItemIndex <> ComboboxPaired.ItemIndex) then
 begin
    if ComboboxPaired.ItemIndex > -1 then
 begin
    LDevice := FPairedDevices[ComboboxPaired.ItemIndex] as TBluetoothDevice;
    DisplayR.Lines.Add(GetServiceName(ServiceGUI));
    DisplayR.GoToTextEnd;
    FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False);
   if FSocket <> nil then
     begin
      ItemIndex := ComboboxPaired.ItemIndex;
      FSocket.Connect;
      ServerConnectionTH.FServerSocket.Accept(500);
     .....

//after successful connect, go to another form , focus in a TEdit then scan,
//currently uses this function to get data

 function TForm1.getBLData: string;
    var
    Buff: TBytes;
    s:string;
  begin
     FSocket.ReceiveData;
    Buff := FSocket.ReceiveData;
    frmLoadGrid.Edit1.Text:='';
    frmLoadGrid.Edit1.Text:= TEncoding.UTF8.GetString(Buff); //enters read data 
    result:=s;
   end;

Может кто-нибудь, пожалуйста, помогите ... Спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Добро пожаловать на ТАК!Вот пример использования ReadData метода: https://github.com/Appmethod/Appmethod115/blob/5f8ca9a9a1994d917bfbb062f9e5fd44564da6a5/Object%20Pascal/Mobile%20Samples/Device%20Sensors%20and%20Services/Bluetooth/BlueChat/uChatManager.pas.

Распространенной идеей является создание отдельного потока, который запускает цикл до завершения программы или ваших собственных условий.В этом цикле поток вызывает ReadData и имеет событие FOnTextReceived.Обратите внимание, что вам нужно использовать метод Synchronize, если вы хотите получить доступ к визуальным компонентам из других потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...