尝试使用 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
字典并在需要时一次获取多个值。