gpt4 book ai didi

android - Delphi Firemonkey "Broken Pipe"异常

转载 作者:行者123 更新时间:2023-11-29 01:13:33 24 4
gpt4 key购买 nike

故事:我的应用程序是为移动平台设计的,并且与蓝牙点阵打印机有自己的连接,可以在区域或现场打印一些发票和文件。一些 Android 设备运行良好,但其中一些在用户尝试打印某些内容时总是抛出管道损坏异常。

过程:

  1. 我使用 TBluetoothManagerTBluetoothDeviceList 获取配对设备列表,并将所有配对设备存储在配置 ini 文件中。
  2. 当用户想要打印时,我会初始化与准备打印的设备的连接,然后将发票逐行发送到TBluetoothSocket 对象。
  3. 我用这个函数将我的每一行更改为字节数组;

function StrToByteArr(strData: String): TArray<Byte>;
var
eEncoding: TEncoding;
begin
eEncoding := TEncoding.GetEncoding(857);
Result := eEncoding.GetBytes(strData);
end;

然后我将我的值作为字节数组发送到 TBluetoothSocket.SendData(Byte>) Method

问题:我尝试使用 10 多种不同的设备打印我的值,但成功率不够高(8/20 台设备工作正常)。我该怎么办?

最佳答案

最简单的方法是使用 Androidapi.JNI.BluetoothAdapter.pas 库直接从 Delphi 代码处理所有这些配置。它有 JBluetoothSocketClass 并且工作正常!

-

将字符串值转换为 Byte JavaArray

function StringToJA(Data: String): TJavaArray<Byte>;
var
X: integer;
len: integer;
begin
len := Length(Data);
Result := TJavaArray<Byte>.Create(len);
for X := 0 to len do
begin
Result.Items[X] := Ord(Data[X]);
end;
end;

输出流使用

  oStream := Sock.getOutputStream;
text := CHR(15) + ' ------ ----- HELLO WORLD ----- ------'
+ CHR(10) + CHR(13);
oStream.write(StringToJA(text));

关于android - Delphi Firemonkey "Broken Pipe"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41361057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com