Hướng dẫn python-usbtmc list devices - thiết bị danh sách python-usbtmc

Tôi đang cố gắng nói chuyện với máy đo pha Clarke-hess 6000a của tôi qua USB. Tôi đang sử dụng https://github.com/python-ivi/python-usbtmc/tree/master/usbtmc cho mục đích này. Bây giờ, khi tôi kết nối cáp USB của mình và làm

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
5, nó mang lại,

Thiết bị Bus 001 027: ID 0403: B972 Thiết bị công nghệ tương lai International

Như thiết bị được công nhận của tôi, vì vậy tôi chỉ cần sử dụng

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
6 và gặp lỗi sau:

Hướng dẫn python-usbtmc list devices - thiết bị danh sách python-usbtmc

Mã số

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 229, in __init__
    raise UsbtmcException("Device not found", 'init')
usbtmc.usbtmc.UsbtmcException: Device not found [init]

Nhưng khi tôi nhìn vào usbtmc.py, tôi thấy rằng trong list_devices (), usb.util.find_descriptor () được sử dụng với các tham số như usbtmc_binterfaceclass = 0xfe và usbtmc_binterfaces như cả BinterFaceClass và BinterFacesubClass = 0xff.

Sau đó, tôi đã thay đổi USBTMC_BINTERFACECLASS và USBTMC_BINTERFACESUBCLASS thành 0xFF, và sau đó nó mang lại:

Hướng dẫn python-usbtmc list devices - thiết bị danh sách python-usbtmc

Mã số

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error

Nhưng khi tôi nhìn vào usbtmc.py, tôi thấy rằng trong list_devices (), usb.util.find_descriptor () được sử dụng với các tham số như usbtmc_binterfaceclass = 0xfe và usbtmc_binterfaces như cả BinterFaceClass và BinterFacesubClass = 0xff.

Sau đó, tôi đã thay đổi USBTMC_BINTERFACECLASS và USBTMC_BINTERFACESUBCLASS thành 0xFF, và sau đó nó mang lại:

Tôi đang cố gắng giao tiếp với một thiết bị phần cứng mà tôi có (Nguồn Yokogawa GS200 DC). Tôi đang sử dụng Anaconda \ Spyder Môi trường phát triển của mình. Tôi đang sử dụng Win10 và hệ thống 64 bit. Thiết bị có trình điều khiển (phiên bản 64bit) và được PC nhận ra (hiển thị trong trình quản lý thiết bị.

Khi tôi sử dụng:

import visa
rm = visa.ResourceManager()
lst = rm.list_resources('?*')
print(lst)

Nó không trả về thiết bị GS200.

Nếu tôi cố gắng mở thiết bị bằng cách xác định mục tiêu:

my_instrument = rm.open_resource("USB0::0x0B21::0x0039::91U118228::INSTR")

Tôi có:

VisaIOError: VI_ERROR_RSRC_NFOUND (-1073807343): Insufficient location information or the requested device or resource is not present in the system.

Tôi đã thử mã này (đã thấy được trả lời ở nơi khác):

import serial.tools.list_ports
list = serial.tools.list_ports.comports()
connected = []
for element in list:
    connected.append(element.device)
print("Connected COM ports: " + str(connected))

trở lại nào:

Connected COM ports: []

Hơn nữa, tôi đã cài đặt lại tài xế. Ngắt kết nối và kết nối lại, khởi động lại PC của tôi và không có gì thay đổi trạng thái.

Tôi cũng đã thử sử dụng mã này:

import visa
rmNI = visa.ResourceManager(r'C:\Windows\System32\visa32.dll')
rmNI.list_resources()
print(rmNI.list_resources())

và thiết bị vẫn chưa được phát hiện.

Rất thích nghe bất kỳ gợi ý! Cảm ơn!!

Python USBTMC Readme

Để biết thêm thông tin và cập nhật: http://alexforencich.com/wiki/en/python-usbtmc/start

Kho lưu trữ GitHub: https://github.com/python-ivi/python-usbtmc

Nhóm Google: https://groups.google.com/d/forum/python-ivi

Giới thiệu

Python USBTMC cung cấp một trình điều khiển Python USBTMC thuần túy để điều khiển các dụng cụ qua USB.

Yêu cầu

  • Python 2 hoặc Python 3
  • Pyusb

Cài đặt

Trích xuất và chạy

# python setup.py install

Cấu hình UDEV

Nếu bạn không thể truy cập thiết bị của mình mà không cần chạy tập lệnh của mình dưới dạng root, thì bạn có thể cần tạo quy tắc UDEV để đặt đúng quyền của thiết bị. Đầu tiên, kết nối thiết bị của bạn và chạy LSUSB. Tìm nhà cung cấp và ID sản phẩm. Sau đó, tạo một tệp /etc/udev/rules.d/usbtmc.rules với nội dung sau:

# USBTMC instruments

# Agilent MSO7104
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0957", ATTRS{idProduct}=="1755", GROUP="usbtmc", MODE="0660"

Thay thế idvendor chính xác và idproduct từ LSUSB. Bạn cũng sẽ cần tạo nhóm USBTMC và thêm bản thân vào nó hoặc thay thế một nhóm khác mà bạn chọn. Có vẻ như UDEV không cho phép 0666 quy tắc, thường ghi đè chế độ lên 0664, vì vậy bạn sẽ cần phải là thành viên của nhóm liên kết để sử dụng thiết bị.

Nếu bạn muốn đặt thiết bị kernel USBTMC trong cùng một nhóm, hãy thêm nội dung sau vào tệp USBTMC.Rules. Đây là tùy chọn khi Python USBTMC bỏ qua và ngắt kết nối trình điều khiển kernel USBTMC và thiết bị sẽ thực sự biến mất khỏi /dev khi Python USBTMC kết nối.

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
0

Cài đặt Windows

Để sử dụng Python USBTMC trong Windows, PYUSB và LibusB được yêu cầu. Chúng có thể được tải xuống từ:

  • http://sourceforge.net/projects/pyusb/
  • http://www.libusb.org/wiki/libusb-win32

Một tệp INF cũng sẽ cần được tạo để sử dụng các thiết bị có LibusB. Nếu không có tệp INF được thiết lập đúng, Python USBTMC sẽ không thể định vị thiết bị. Có các hướng dẫn trên trang libusb để biết cách tạo tệp INF.

Ví dụ sử dụng

Kết nối với Agilent MSO7104A qua USBTMC:

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
1

Khi nhiều công cụ được kết nối, chúng có thể được xác định bằng số sê -ri:

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
2

Cũng có thể kết nối với các chuỗi tài nguyên Visa như vậy:

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
3

and:

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0403,0xb972)
Find USBTMC instrument
Traceback (most recent call last):
  File "", line 1, in 
  File "usbtmc/usbtmc.py", line 283, in __init__
    self.get_capabilities()
  File "usbtmc/usbtmc.py", line 299, in get_capabilities
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
4