CodeLabClub / scratch3_arduino

19 stars 9 forks source link

有关Scratch3连接Arduino的几个问题 #5

Open mickwubs97 opened 4 years ago

mickwubs97 commented 4 years ago

您好,我想问一下这个repo中的arduino_server.py 和 extension_arduino_nano.py 文件与extension_arduino.py 的关系是什么?arduino_server.py 和 extension_arduino_nano.py 是能取代extension_arduino.py 在codelab_adapter 中的作用吗?还是需要和extension_arduino.py合作完成通信?(需要同时加入并打开两个插件?)

然后是我在codelab_adapter中打开extension_arduino 插件的时候出现了一个错误:

cannot import name 'ui_error' from 'codelab_adapter.utils' (C:\Users\10092\AppData\Local\Temp\_MEI115242\codelab_adapter\utils.pyc)

这是我的codelab_adapter安装或者后来的设置出现了问题吗?还是其他的原因?

此外,这个和Arduino连接的repo是不是还在完善中,因为当我点击Scratch3中的积木块(eg. led 2 set 1)后,控制台有显示,但codelab_adapter的monitor中没有相关信息。

通过修改codelab_monitor的 extension_eim_monitor.py倒是能通过Scratch3端的eim 拓展的broadcast实现点亮Arduino uno 的led13,但我觉得这个方法有些别扭,所以还是想试一试这个repo中的方法。

可能是一些很简单的问题,希望能得到一些您的一些建议,谢谢!

wwj718 commented 4 years ago

@doNotBeTooSerious 这个插件之前是由一个志愿者在维护,似乎无意维护了,我还未深入这个插件里,从反馈来看,它似乎不大易用,近期收到几个关于这个插件的问题。

我准备重新实现arduino的插件

mickwubs97 commented 4 years ago

您好,我尝试了一下这个插件的使用。比如点亮LED13:Scratch3中积木块组织好pymata-aio的指令->指令由codelab_adapter处理经由 self.read()读入extension_arduino_nano.py,extension_arduino_nano.py 使用zmq socket 和 arduino_server.py 通信,发送指令,最终由arduino_server.py中的output = eval(arduino_code, {}, { "board": board, "Constants": Constants})将字符串指令转换为python pymata-aio 的API 语句发送并点亮LED13。

目前我修改了zmq 的参数,能打开extension_arduino_nano的同时打开arduino_server.py的子程序,也能看到LED13被点亮。可以看出python部分的代码被执行了,但从Scratch3 socket.emit部分发出的指令似乎并没有被self.read() 拿到,monitor依然空空如也。

所以,extension_arduino.py 应该是用不着了,pymata-aio可以取代pyserial,但似乎我这边Scratch3和extension_arduino_nano.py的通信有一些问题。我会继续尝试,或许能用zmq的socket在terminal端看到一些信息?

对zmq参数的修改:

port = 7777  # todo 随机分配
        context = zmq.Context.instance()
        socket = context.socket(zmq.REQ)
        socket.connect("tcp://localhost:%s" % port)

server部分把REQ修改为REP。基于的操作系统是win10,端口号COM3,波特率9600。

wwj718 commented 4 years ago

谢谢反馈,使用zmq来与xx_server沟通,是第一个版本的通信方式设计,过于复杂了。当前的版本(v2)会更为简单 , 参考microbit的设计

wwj718 commented 4 years ago

@doNotBeTooSerious Adapter 3.0 已经正式发布,内置了arduino uno插件

https://adapter.codelab.club/extension_guide/arduino_UNO/