Fusion 360默认无法访问USB端口吗?

时间:2017-06-30 01:55:36

标签: python pyserial fusion360

我正在制作自己的3D鼠标,有点像3D Connexion's自己的模型。我使用Autodesk的Fusion 360作为我的应用程序,使用Fusion的API(应用程序接口)与鼠标进行交互。我有一个陀螺仪+加速度计,它将原始测量结果发送到Arduino,然后Arduino发送这些值(通过使用串行库的串行端口)。然后我使用PySerial库(因为Fusion的API使用python语言)来读取来自Arduino的数据,并将其吐入Fusion,我可以控制相机的位置。我遇到的问题是,为了测试,我可以使用Python脚本将陀螺仪+加速度计的值打印到命令提示符。但是当我在Fusion的代码编辑器(Spyder)中尝试完全相同的脚本时,它并不起作用。我知道正在导入串行库,但脚本不起作用。 Fusion 360可能无法访问USB端口吗?如果是这样,我该怎么办呢?

这是我的代码的一小部分:

#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()

这段代码的所有功能,都是读取连接到Arduino的电位器的值。然后它将这些值打印到CMD中。

以下是来自Fusion 360 API的代码:

{{1}}

提前致谢!

1 个答案:

答案 0 :(得分:0)

在回答您的问题时,可能是Fusion360无法直接访问串口。

Fusion360有一个JavaScript API,必须添加自定义调用才能访问本地机器资源,如文件。

(JavaScript原生没有。)

即使您的程序是用Python编写的,这可能是您遇到的问题的本质。 (我认为F360使用其JavaScript API来显示自己的用户界面)。

另外,我看到代码片段之间存在差异:

ser = serial.win32.Serial() ... ser = serial.Serial()

也许你可以从F360调用第一个程序,只需写一个文件或类似的东西来测试它。