Hallo,
ich möchte gerne einen Epson ESC/POS Drucker in meine App integrieren. Dazu habe ich dieses Projekt gefunden:
github.com/KevinGong2013/Printer
Ich habe mir das Projekt per Cocoa Pods eingebunden und mir eine Function gebaut die nun auch schon Bons aus dem Drucker lockt. Ich habe nur ein Verständnisproblem mit dem Code für den Inhalt:
Alles anzeigen
Xcode mag es zumindest schon mal überhaupt nicht:
Bildschirmfoto 2024-01-22 um 18.03.44.png
Ich wette ja ihr wisst das alles und hoffe ihr könnt mich erhellen
Vielen Dank im voraus.
Dirk
ich möchte gerne einen Epson ESC/POS Drucker in meine App integrieren. Dazu habe ich dieses Projekt gefunden:
github.com/KevinGong2013/Printer
Ich habe mir das Projekt per Cocoa Pods eingebunden und mir eine Function gebaut die nun auch schon Bons aus dem Drucker lockt. Ich habe nur ein Verständnisproblem mit dem Code für den Inhalt:
Quellcode
- public struct bonSpeisenStruct {
- var name:String
- var bemerkung:String
- var preis:Double
- }
- public func printBon(speisen:[bonSpeisenStruct]){
- if globalBondruckerVerwenden {
- let host:NWEndpoint.Host = .init(globalBondruckerIP)
- let port:NWEndpoint.Port = .init(integerLiteral: UInt16(globalBondruckerPort) ?? 9100)
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "dd.MM.yy HH:mm:ss"
- dateFormatter.timeZone = TimeZone(identifier: "Europe/Berlin")
- let date:String = dateFormatter.string(from: Date())
- let speisenBon = Receipt(.init(maxWidthDensity: 500, fontDensity: 12, encoding: .utf8))
- <<~ .style(.initialize)
- <<~ .page(.printAndFeed(lines: 10))
- <<~ .layout(.justification(.center))
- <<< Dividing.default()
- <<~ .style(.underlineMode(.enable2dot))
- <<< "Speisen"
- <<< Dividing.default()
- <<~ .style(.underlineMode(.enable2dot))
- <<< KVItem(speisen[0].name, "\(speisen[0].preis)")
- <<< KVItem(speisen[1].name, "\(speisen[1].preis)")
- <<< KVItem(speisen[2].name, "\(speisen[2].preis)")
- <<< KVItem("", "\((speisen[0].preis + speisen[1].preis + speisen[2].preis))")
- <<~ .style(.initialize)
- <<~ .page(.printAndFeed(lines: 1))
- <<~ .layout(.justification(.center))
- <<< Dividing.default()
- <<~ .style(.underlineMode(.enable2dot))
- <<< speisen[2].bemerkung
- <<~ .style(.clear)
- <<~ .page(.printAndFeed(lines: 10))
- <<~ .page(.partialCut)
- let tcp = NWProtocolTCP.Options.init()
- tcp.noDelay = true
- let params = NWParameters.init(tls: nil, tcp: tcp)
- let connection = NWConnection(to: NWEndpoint.hostPort(host: host, port: port), using: params)
- connection.stateUpdateHandler = { newState in
- switch newState {
- case .ready:
- print("[MyDebug] Socket State: Ready")
- print("[MyDebug] send data")
- let content: Data = Data(speisenBon.data)
- connection.send(content: content, contentContext: .defaultMessage, completion: NWConnection.SendCompletion.contentProcessed(({ NWError in
- if (NWError == nil) {
- print("[MyDebug] Data was sent to TCP destination ")
- connection.cancel()
- } else {
- print("[MyDebug] ERROR! Error when data (Type: Data) sending. NWError: \n \(NWError!)")
- }
- })))
- case .failed(let error):
- print("[MyDebug] Fatal connection error", error.localizedDescription)
- default:
- break
- }
- }
- connection.start(queue: DispatchQueue.main)
- }
- }
- Was bedeutet dieses
<<<
in<<< KVItem(speisen[0].name, "\(speisen[0].preis)")
- Was bedeutet dieses
<<~
in<<~ .page(.printAndFeed(lines: 10))
- Wie kann ich durch ein Array einzelner Speisen iterieren und dabei mehrere
<<< KVItem()")
gernerieren wie z.B. hier?
Bildschirmfoto 2024-01-22 um 18.03.44.png
Ich wette ja ihr wisst das alles und hoffe ihr könnt mich erhellen
Vielen Dank im voraus.
Dirk