Browse Source

Merge branch 'port-filter' of https://github.com/joba-1/Cura into joba-1-port-filter

Ghostkeeper 5 years ago
parent
commit
3629b955fe
1 changed files with 23 additions and 0 deletions
  1. 23 0
      plugins/USBPrinting/USBPrinterOutputDeviceManager.py

+ 23 - 0
plugins/USBPrinting/USBPrinterOutputDeviceManager.py

@@ -4,6 +4,8 @@
 import threading
 import time
 import serial.tools.list_ports
+from os import environ
+from re import search
 
 from PyQt5.QtCore import QObject, pyqtSignal
 
@@ -112,6 +114,27 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin):
                 port = (port.device, port.description, port.hwid)
             if only_list_usb and not port[2].startswith("USB"):
                 continue
+
+            # To prevent cura from messing with serial ports of other devices,
+            # filter by regular expressions passed in as environment variables.
+            # Get possible patterns with python3 -m serial.tools.list_ports -v
+
+            # set CURA_DEVICENAMES=USB[1-9] -> e.g. not matching /dev/ttyUSB0
+            pattern = environ.get('CURA_DEVICENAMES')
+            if pattern and not search(pattern, port[0]):
+                continue
+
+            # set CURA_DEVICETYPES=CP2102 -> match a type of serial converter
+            pattern = environ.get('CURA_DEVICETYPES')
+            if pattern and not search(pattern, port[1]):
+                continue
+
+            # set CURA_DEVICEINFOS=LOCATION=2-1.4 -> match a physical port
+            # set CURA_DEVICEINFOS=VID:PID=10C4:EA60 -> match a vendor:product
+            pattern = environ.get('CURA_DEVICEINFOS')
+            if pattern and not search(pattern, port[2]):
+                continue
+
             base_list += [port[0]]
 
         return list(base_list)