Я пытаюсь печатать на принтере EPSON TM-20II, но мне нужно иметь возможность печатать на двух разных принтерах одной и той же модели.Я не могу отфильтровать поиск USB по значениям шины или адреса, он просто печатает на том же самом.Хотя я могу отлично печатать, поэтому у меня нет проблем с какой-либо библиотекой, может быть, я путаюсь с методом printer.Usb из поведения библиотеки python-escpos.
Я попытался перечислить все свои принтеры, получил vendorId,productId, шина и адрес каждого принтера, но когда я пытаюсь найти свой принтер по всем этим фильтрам, он просто печатает на том же принтере, который соответствует vendorId и productId, не используя адрес или шину.Я отключил принтер, который был найден, и он прекрасно использует второй.
Во-первых, это код для получения всех принтеров:
def getAllPrinters():
dev = usb.core.find(find_all=1)
# loop through devices, printing vendor and product ids in decimal and hex
for cfg in dev:
sys.stdout.write('Hexadecimal VendorID=' + hex(cfg.idVendor) + ' & ProductID=' + hex(cfg.idProduct) + '\n')
sys.stdout.write("Address=" + str(cfg.address) + '\n')
sys.stdout.write("Bus=" + str(cfg.bus) + '\n'+"\n")
С этим кодом я получилэти выходные данные:
Hexadecimal VendorID=0x8086 & ProductID=0xa12f
Address=1
Bus=1
Hexadecimal VendorID=0x408 & ProductID=0xa060
Address=3
Bus=1
Hexadecimal VendorID=0x408 & ProductID=0xa060
Address=3
Bus=1
Hexadecimal VendorID=0x4ca & ProductID=0x3016
Address=2
Bus=1
Hexadecimal VendorID=0x4b8 & ProductID=0xe15
Address=16
Bus=1
Hexadecimal VendorID=0x4b8 & ProductID=0xe15
Address=17
Bus=1
Эти принтеры с VendorID = 0x4b8 и ProductID = 0xe15 являются моими принтерами EPSON TM-20II.
Это то, что я делаю для печати на определенном принтерево-первых, по крайней мере, я думаю, что это делает:
def printInvoiceFooter():
p = printer.Usb(0x04b8,0xe15, profile="TM-T88III",address=17,bus=1)
p.set(align="center")
prevConfig = open("invoiceConfig.txt","rb")
config = pickle.load(prevConfig)
footerText = config["footerText"]
headerText = config["headerText"]
p.text(headerText + "\n")
p.text(footerText)
p.cut()
И не важно, размещаю я или нет адрес и метки шины:
#This
p = printer.Usb(0x04b8,0xe15, profile="TM-T88III",address=17,bus=1)
#Does the same thing as this
p = printer.Usb(0x04b8,0xe15, profile="TM-T88III")
Он просто печатает на одном и том же.
Я ожидал, что, если я размещу адрес и теги шины на printer.Usb (), он попытается подключить принтер к этой шине и адресу, который соответствует этому поставщику, но он просто получит первый, который соответствуетпродавец и печатает на этом.