如何在Delphi Android中将字符串发送到蓝牙设备?

时间:2014-07-23 08:25:33

标签: android delphi io bluetooth android-bluetooth

我对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;

连接工作但打印功能不起作用...我收到消息'无法创建服务记录!'

0 个答案:

没有答案