나는 안드로이드 블루투스 인쇄 작업 중이다. 프린터는 표준 POS 열전 사 프린터입니다. 자바 바이트 배열에서 델파이 바이트 arry
이
은 (이 부분이 작동) 데이터를 프린터로 전송하는 내 방식이다 :var
Adapter: JBluetoothAdapter;
remoteDevice: JBluetoothDevice;
Sock: JBluetoothSocket;
ostream: JOutputStream;
begin
Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
remoteDevice := Adapter.getRemoteDevice(stringtojstring(targetMAC));
Sock := remoteDevice.createRfcommSocketToServiceRecord(uid);
ostream := Sock.getOutputStream;
....
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;
// THIS LINE PRINT TEXT
ostream.write(StringToJA(txt));
가 지금은 다른 문자의 encoing를로드 할 이것은 자바 코드입니다 :
int a=23;
String codeL="iso8859-2";
String txt="SOME TEXT...ščž";
byte data[] = txt.getBytes(codeL);
byte sendText[]=new byte[3];
sendText[0]=0x1B;
sendText[1]=0x74;
sendText[2]=(byte)a;
mobileprint.PRTSendBuffer(sendText, sendText.length);
방법 이 라인을 변환 할 수 있습니까?
- txt.getBytes (codeL);
- sendText [2] = (byte) a;
델파이 XE5 번호 :
...
A : Integer;
txt, codeL: string;
data : TJavaArray<Byte>;
sendText : TJavaArray<Byte>;
begin
A := 23;
codeL := 'iso8859-2';
txt := 'SOME TEXT...ščž';
data := ??? txt.getBytes(codeL); ???
sendText := TJavaArray<Byte>.Create(3);
sendText.Items[0] := $1B;
sendText.Items[1] := $74;
sendText.Items[2] := ???Byte(A)???;
ostream.write(sendText);
ostream.write(data);
이 Exlipse에서 JAVA 식 값이다 : X 용
자바 바이트 서명 델파이 바이트를하지 않습니다. 그러나 그것에 대해 걱정할 필요가 없습니다. 여전히 8 비트 만 전송됩니다. 그게 무슨 문제 야? –