我正在制作自己的 3D 鼠标,有点像3D Connexion 的自己的模型。我使用 Autodesk 的 Fusion 360 作为我的应用程序,并使用 Fusion 的 API(应用程序接口)与鼠标进行交互。我有一个陀螺仪 + 加速度计,它将原始测量值发送到 Arduino 中,然后发送这些值(通过串行端口使用串行库)。然后,我使用 PySerial 库(因为 Fusion 的 API 使用 python 作为它的语言)来读取来自 Arduino 的数据,并将其发送到 Fusion 中,在那里我可以控制相机的位置。我遇到的问题是,为了测试,我可以使用 Python 脚本将陀螺仪 + 加速度计的值打印到命令提示符。但是当我在 Fusion 的代码编辑器(Spyder)中尝试完全相同的脚本时,它不起作用。我知道正在导入串行库,但脚本没有 不工作。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()
提前致谢!