У меня есть несколько идентичных устройств регистрации GPS, которые я могу передавать данные отслеживания с помощью командной строки с помощью GPSBabel.
Вопрос: используя Python 2.7, Windows 7 и эти устройства регистрации GPS, как я могу однозначно и многократно идентифицировать каждое идентичное устройство? Хорошим примером может быть серийный номер, уникальный для каждого идентичного устройства. (и физически напечатаны на устройстве).
Я работаю с Python 2.7 и Windows 7 (должна быть Windows, а не Linux из-за драйверов).
Вот что я пробовал до сих пор:
Когда два устройства подключены к портам USB, диспетчер устройств показывает следующее для Порты (COM и LPT). (USB-устройства не монтируются как USB-диски.)
(Порты 8 и 10)
Выбор Свойства – Сведения об устройстве на порту 10 дает мне один уникальный идентификатор, который называется ContainerID, но я не могу программно найти ни одного уникального идентификатора. ID как серийный номер для нескольких идентичных устройств.
Используя код из этого вопроса,
import win32com.client
wmi = win32com.client.GetObject ("winmgmts:")
for usb in wmi.InstancesOf ("Win32_SerialPort"):
if usb.Name.startswith('GPS'):
print usb.DeviceID, usb.Name, usb.PNPDeviceID
Я получаю этот ответ:
COM10 GPS USB Serial Interface Driver (COM10) USB\VID_0E8D&PID_3329\6&21C2E9BE&0&1
COM8 GPS USB Serial Interface Driver (COM8) USB\VID_0E8D&PID_3329\6&25E9E978&0&3
(Не уникальный! Конечный идентификатор 6&21C2E9BE&0&1
на самом деле связан с портом, а не с устройством. Я могу проверить это, взяв одно и то же устройство и запустив код только с одним или двумя подключенными устройствами.)
Я могу найти этот номер в представлении «Диспетчер устройств/Подробности» в разделе Путь к экземпляру устройства.
Я просмотрел документацию по Win32 API опции для Win32_SerialPort и некоторые другие. Я не могу найти ни одного класса API, который бы возвращал что-то уникальное, например серийный номер.