Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用端口9100上的插槽将图像发送到打印机_Swift_Sockets_Printing_Swift2 - Fatal编程技术网

Swift 使用端口9100上的插槽将图像发送到打印机

Swift 使用端口9100上的插槽将图像发送到打印机,swift,sockets,printing,swift2,Swift,Sockets,Printing,Swift2,我目前能够使用Swift将文本发送到打印机(如爱普生TM20-II)。打印机接收数据并打印,没有任何问题。(为此,我用UTF-8编码我的字符串) 套接字的自定义类: class OutSocket { var addr: String var port: Int var task: NSURLSessionStreamTask! init(host: String, port: Int){ print("init") self.

我目前能够使用Swift将文本发送到打印机(如爱普生TM20-II)。打印机接收数据并打印,没有任何问题。(为此,我用UTF-8编码我的字符串)

套接字的自定义类:

class OutSocket {

    var addr: String
    var port: Int
    var task: NSURLSessionStreamTask!

    init(host: String, port: Int){
        print("init")
        self.addr = host
        self.port = port
        setupConnection()
    }

    func setupConnection() {
        print("setup")
        let session = NSURLSession(configuration: .defaultSessionConfiguration())

        task = session.streamTaskWithHostName(addr, port: port)
        self.task.resume()
    }

    func send(data: NSData) {
        self.task.writeData(data, timeout: 5.0) { (error) in
            if error == nil {
                print("Data sent")
            } else {
                print("Nope")
            }
        }
    }
}
我是这样使用它的:

let socket = OutSocket(host: "192.168.1.42", port: 9100)
socket.send((itemText + "\n").dataUsingEncoding(NSUTF8StringEncoding)!)
我可以向打印机发送图像,但它只打印数据字符。 如何打印图像而不是数据字符

我看到了Epson SDK,但我希望它能与任何支持TCP/IP打印的打印机配合使用。我试图用base64编码我的图像,但仍然没有打印图像

代码如下:

let socket = OutSocket(host: "192.168.1.42", port: 9100)
let image = UIImage(named: "name-logo")
let imgData = UIImagePNGRepresentation(image!)
let imgEncoded = imgData!.base64EncodedDataWithOptions(.Encoding64CharacterLineLength)
socket.send(imgEncoded)

提前感谢,

如果您使用爱普生打印机,您可以搜索爱普生ePos SDK。否则,如果您自己打印图像,则必须将图像转换为Base64编码字符串。如果您使用Epson打印机,则可以搜索Epson ePos SDK。否则,如果您自己打印图像,则必须将图像转换为Base64编码字符串。