首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pyfirmata中,如何设置字符串消息的处理程序?

在pyfirmata中,如何设置字符串消息的处理程序?
EN

Stack Overflow用户
提问于 2013-09-24 21:02:04
回答 1查看 1.6K关注 0票数 1

如何设置处理程序以接收来自Arduino UNO的pyfirmata中的消息?

我有以下Python代码:

代码语言:javascript
复制
from logic.ModuleClass import Module
from events.EventDispatcherClass import Event
from pyfirmata import Arduino, util
import pyfirmata

class Comm(Module):
    """
    Handles the communication between python and arduino
    AttachTo: ""
    """

    NAME = "Communicator"

    def __init__(self, port):
        super(Comm,self).__init__(Comm.NAME)
        self.board = Arduino(port)
        # start an iterator thread so that serial buffer doesn't overflow
        it = util.Iterator(self.board)
        it.start()

        self.board.add_cmd_handler(pyfirmata.pyfirmata.STRING_DATA, self._messageHandler)

    def _messageHandler(self, *args, **kwargs):
        print args

    def update(self):
        super(Comm,self).update()

    def writeData(self,data):
        #print data
        self.board.send_sysex(pyfirmata.pyfirmata.STRING_DATA,data)

    def dispose(self):
        super(Comm,self).dispose()
        try:
            self.board.exit()
        except AttributeError:
            print "exit() raised an AttributeError unexpectedly!"+self.toString()

在Arduino上,我发送了一个字符串:

代码语言:javascript
复制
Firmata.sendString("test");

我添加了_messageHandler(self,*args,**kwargs),我得到了一个我认为是字符代码的集合。我对python很陌生,我不太确定如何获得从Arduino发送的原始字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-25 18:01:54

我找到了解决办法:

要将从arduino发送的字符串转换为pyfirmata,只需在python中使用以下代码:

代码语言:javascript
复制
def _messageHandler(self, *args, **kwargs):
    print util.two_byte_iter_to_str(args)

应该会返回您期望的字符串。FTW!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18991972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档