尝试使用 Python 向 Zebra 打印机发送命令(不是标签)。
在文档的第574页显示:
这是我的代码:
mysocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host= "192.168.100.245" # verified IP address of Zebra printer
port = 9100
mysocket.connect((host, port))
name_string= '''"sgd.name":null'''
my_string= f'''{{}}{{{name_string}}}'''
x = json.dumps(obj=my_string)
mysocket.sendall(bytes(x,encoding="utf-8"))
data= mysocket.recv(1024)
print(data.decode('utf-8'))
打印机响应发送给它的 ping 和其他非 JSON Zebra 命令(即
mysocket.send(b"~hs")
)。然而,使用上面的代码我等待了很长时间,打印机没有返回任何响应。
尝试了 JSON 格式的多种变体,接下来我应该尝试什么?
根据@bruan 评论,我尝试了以下变体,但没有成功:
my_string= '''"sgd.name":null"'''
my_string= '''{}{"sgd.name":null}'''
您手动创建 JSON/命令,然后再次将其转储为 JSON。您现在发送的是
'"{}{\\"sgd.name\\":null}"'
另外,正如我在评论中所说,最好不要手动创建 JSON。使用 json
模块,可以更轻松地扩展 query
字典并在需要时一次获取多个值。
import json
# skip lines for brevity
query = {'sgd.name': None}
command = f'{{}}{json.dumps(query)}' # {}{"sgd.name": null}
mysocket.sendall(bytes(command, encoding="utf-8"))