Ich arbeite an einer Lösung, um Befehle an einen POS-Belegdrucker zu senden und einige Probleme, das Befehlsformat richtig zu bekommen. Ich habe einen Sockel für das Gerät geöffnet und das funktioniert, weil falsche Befehle gedruckt werden. Was die SPEC in diesem Befehl fordert, ist Folgendes zu senden:Swift senden Hex-Daten über TCP-Socket
1B 07 oder in Dezimal 27 7. Was in ASCII ist ESC_KEY BEL. Das einzige Beispiel zeigt die Spezifikation ist für .NET:
MSComm1.Output = Chr $ (& H1B) & Chr $ (& H07)
Was ich versucht worden:
// Sockel ist zuvor mit CFStreamCreatePairWithSocketToHost geöffnet.
var cmd = "27 07"
if let dataString = "\(cmd)\r".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false), let oStream = self.outputStream {
self.outputData.append(dataString)
if oStream.hasSpaceAvailable {
oStream.write(UnsafePointer((self.outputData.first! as NSData).bytes), maxLength: self.outputData.first!length)
}
}
Die Daten sind da, aber ich denke, das Format der Nachricht ist falsch. Jede Hilfe wäre willkommen.
Was Sie an den Drucker senden, ist die Bytefolge 0x50, 0x55, 0x32, 0x48, 0x55, 0x13. Ihr Drucker wartet auf die Bytesequenz 0x1b, 0x07 – user3441734