我对Delphi和蓝牙有疑问。我使用JNI进行蓝牙连接,我的问题是将字符串发送到打印机。我尝试了---
的代码https://www.youtube.com/watch?v=vesPd5WvykA
这项工作,但我没有得到文字:P
我创建了一个我在Project中使用的类AndroidBluetooth。对于这个类,我创建了一个函数(PrintText),这个函数得到一个字符串参数,并且必须在打印机上打印字符串。
这是我的代码:
{Funktion: Druckt einen String auf einem Bluetooth Gerät}
function TAndroidBluetooth.PrintText(text : string) : string;
var
i:integer;
s:string;
begin
s:='$'+text+#13;
for i:=0 to pred(length(s)) do ostream.write(ord(s[i])); // einmal senden mit 255 am anfang
end;
我在此创建连接
{Funktion: Stellt eine Verbindung zu einem Bluetooth Gerät her}
function TAndroidBluetooth.CreateConnectionToBluetoothDevice(device : TListViewItem) : string;
begin
Toast('Selected '+device.Text);
targetMAC:=device.Detail;
if trim(targetMAC)='' then exit;
Adapter:=TJBluetoothAdapter.JavaClass.getDefaultAdapter;
remoteDevice:=Adapter.getRemoteDevice(stringtojstring(targetMAC));
Toast('Connecting to '+device.Text+' ('+device.Detail+')');
devicename := device.Text;
sock:=remoteDevice.createRfcommSocketToServiceRecord(uid);
try sock.connect;
except Toast('Could not create service record!'); //<--- that is the message if i try it
end;
if not sock.isConnected then
begin
Toast('Failed to connect to '+targetMAC+'! Try again...');
exit;
end;
Toast('Connected!');
ostream:=sock.getOutputStream;
istream:=sock.getInputStream;
Application.ProcessMessages;
ostream.write(ord(255)); //
ostream.write(ord(255)); // get device id (nur Chitanda)
sleep(200);
len:=istream.available;
if len=0 then exit;
buffer:=TJavaArray<byte>.create(len);
istream.read(buffer,0,len);
s:='';
for i:=0 to len-1 do s:=s+'0x'+inttohex(buffer[i],2)+', ';
Toast(s);
end;
连接工作但打印功能不起作用...我收到消息'无法创建服务记录!'