【发布时间】:2018-10-25 07:39:57
【问题描述】:
我正在 Delphi 中开发一个 android 应用程序,就像经典的蓝牙应用程序一样,我需要获取蓝牙扫描仪扫描的数据并显示在 Firemonkey 的 TEdit 组件中。
我成功连接到配对设备并扫描了第一个数据。但是对于接下来的一系列扫描,我不知道在哪里打电话给FSocket.ReceiveData。在java中,有一个等待传入流的监听函数调用,我该如何在Delphi android pls中做到这一点?
这是我的代码: rad 中示例经典蓝牙的代码 sn-p:
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;
谁能帮忙...谢谢
【问题讨论】: