在python中重置打印机的USB端口

2024-09-28 22:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用tkinter模块构建桌面信息亭python应用程序。其功能之一是打印matplotlib图形。我正在使用ghostscript打印PDF。问题是当有人在其他端口重新连接打印机时。打印机设置中的端口未更新。我成功地使用win32printapi更新了端口。但问题是打印机仍然无法打印文档。深入挖掘后,我意识到打印机需要在每次端口更改时进行初始握手

如何在python中重置USB端口

这是更新打印机端口的代码

import win32com.client
import win32print
import sys
import os

if getattr(sys, 'frozen', False):
    application_path = sys._MEIPASS
else:
    application_path = os.path.dirname(os.path.abspath(__file__))

PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ALL_ACCESS} 
myprinter = win32print.OpenPrinter(win32print.GetDefaultPrinter(), PRINTER_DEFAULTS)
wmi = win32com.client.GetObject ("winmgmts:")
for usb in wmi.InstancesOf ("Win32_USBHub"):
    if usb.DeviceID.find("USBPRINT") >= 0:
        printerPort = usb.DeviceID.split("&")
        printerPort = printerPort[len(printerPort)-1]
        attributes = win32print.GetPrinter(myprinter, 5)
        attributes['pPortName'] = printerPort
        win32print.SetPrinter(myprinter, 5, attributes, 0)

Tags: path端口importclientifossys打印机