Я хотел бы связаться с устройством EtherCAT. К сожалению, я даже не могу открыть интерфейс.
Это адаптер, считываемый предоставленным кодом:
Adapter 6
\Device\NPF_{1F2BE908-A7E6-4622-BE1B-64E48F18FA6C}
b'Intel(R) Ethernet Connection (11) I219-LM'
Фактический код:
import pysoem
adapters = pysoem.find_adapters()
for i, adapter in enumerate(adapters):
print('Adapter {}'.format(i))
print(' {}'.format(adapter.name))
print(' {}'.format(adapter.desc))
master = pysoem.Master()
master.open("/Device/NPF_{1F2BE908-A7E6-4622-BE1B-64E48F18FA6C}")
if master.config_init() > 0:
for device in master.slaves:
print(f'Found Device {device.name}')
else:
print('no device found')
master.close()
Ошибка:
could not open interface /Device/NPF_{1F2BE908-A7E6-4622-BE1B-64E48F18FA6C}
Я столкнулся с той же проблемой в Windows 10.
Что сработало для меня:
master.open('\\Device\\NPF_{1F2BE908-A7E6-4622-BE1B-64E48F18FA6C}')
Думаю, \\
— это трюк. :)
for nic in pysoem.find_adapters():
master.open(nic.name)
# master.open(nic[1]) works too
if master.config_init() > 0:
break
else: master.close()
Я написал его так, чтобы он искал все сетевые адаптеры, так как это проще и совместимо с переключением ПК.
Или вы можете использовать .name для объекта i
в списке адаптеров:
pysoem.find_adapters()[i].name