将 JSON 格式的 GSD 命令发送到 Zebra 打印机

问题描述 投票:0回答:1

尝试使用 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}'''

python json python-3.x zpl zpl-ii
1个回答
0
投票

您手动创建 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"))
© www.soinside.com 2019 - 2024. All rights reserved.