У Fusion 360 нет доступа к USB-портам по умолчанию?
Я работаю над созданием собственной 3D-мыши, вроде собственной модели 3D Connexion. Я использую Autodesk Fusion 360 в качестве своего приложения и Fusion API(Application Program Interface) для взаимодействия с мышью. У меня есть гироскоп + акселерометр, который выплевывает необработанные измерения в Arduino, который затем отправляет эти значения (через последовательный порт с использованием библиотеки Serial). Затем я использую библиотеку PySerial (потому что API-интерфейс Fusion использует python для своего языка), чтобы прочитать эти данные, поступающие из Arduino, и сплюнуть их в Fusion, где я могу контролировать положение камеры. Проблема, с которой я сталкиваюсь, заключается в том, что для тестирования я могу напечатать значения акселерометра gyro + в командную строку с помощью сценария Python. Но когда я пытаюсь точно такой же сценарий в редакторе кода Fusion (Spyder), он не работает. Я знаю, что библиотека Serial импортируется, но скрипт не работает. Возможно ли, что Fusion 360 не имеет доступа к USB-портам? Если так, как я мог это исправить?
Вот небольшой фрагмент моего кода:
#This is a python script that when run in the CMD, it works just fine.
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM3'
ser.open()
while True:
result = ser.readline()
result = str(result)
print (result)
Все, что делает этот код, это считывает значение потенциометра, подключенного к Arduino. Затем он печатает эти значения в CMD.
Вот код, который приходит из Fusion 360 API:
#This is the Fusion 360 code that doesn't work.
import adsk.core, adsk.fusion, adsk.cam, traceback
import serial
def get(app):
try:
ui = app.UserInterface
ser = serial.win32.Serial()
ser.baudrate = 9600
ser.port = 'COM3'
ser.open()
value = ser.read()
value = str(value)
adsk.doEvents()
ui.messageBox(value)
except:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def Main():
try:
app = adsk.core.Application.Get()
ui = app.UserInterface
ui.messageBox("Everything is working till this point")
adsk.doEvents()
get(app)
except:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
Main()
exit()
Заранее спасибо!
1 ответ
Отвечая на ваш вопрос, возможно, Fusion360 не имеет прямого доступа к последовательным портам.
Fusion360 имеет доступный API-интерфейс JavaScript и должен был добавить пользовательские вызовы, чтобы разрешить доступ к ресурсам локальной машины, таким как файлы.
(JavaScript не имеет этого изначально).
Это может быть характер проблемы, с которой вы столкнулись, даже если ваша программа написана на Python. (Я думаю, что F360 использует свой JavaScript API для отображения собственного пользовательского интерфейса).
Кроме того, я вижу разницу между фрагментами кода:
ser = serial.win32.Serial ()... ser = serial.Serial ()
Возможно, вы можете вызвать первую программу из F360 и просто записать файл или что-то в этом роде, чтобы проверить его.