【发布时间】:2012-11-14 02:19:09
【问题描述】:
使用 Ruby 将一系列数据字符串发送到使用其 IP 地址的 Zebra 打印机。
这是我开始使用的 Ruby 代码:
require 'socket'
streamSock = TCPSocket.new( "127.0.0.1", 20000 )
#streamSock.send( "Hello\n" )
str = streamSock.recv( 100 )
print str
streamSock.close
我需要用这一系列字符串的ZPL(Zebra Print Language)代码替换"Hello\n":
"^XA" +
"^FO50,50" +
"^A0N50,50" +
"^FDHello, World!^FS" +
"^XZ";
我尝试了几种对每一行使用 #streamSock.send( "xxx" ) 的方法 - 例如:#streamSock.send( "^XA" ) - 然后分别使用所有其他字符串元素。
我尝试了一些变体,将整个 ZPL 代码字符串放在一行中,例如
streamSock.send("^XA^FO50,50^A0N50,50^FDHello, World!^FS^XZ")
Zebra 标签打印机没有响应。如果我使用另一个实用程序将前面的一系列字符串作为文本文件发送到打印机,它会打印得很好。
对于 Ruby 代码应该如何实现这项工作有什么想法吗?
【问题讨论】:
-
打印机是什么型号的?你是说发送 'Hello\n' 打印正常,但不是 ZPL?如果是这样,您的打印机可能处于行打印模式而不是 ZPL。如果是行打印模式,则不理解ZPL,反之,互斥。
-
我让它工作了:需要 'socket' 主机名 = '192.168.1.6' 端口 = 515 s = TCPSocket.open(hostname, port) s.puts "^XA^F100,100^BXN ,10,200^FO150,120^FD01000012000000311081020122100000009^FS^XZ" s.close
标签: ruby string zebra-printers zpl