小编Adu*_*uen的帖子

带有/不带类的回调函数指针C++

我被困.我正在尝试形成一个函数,它将吃掉无类函数指针和来自对象的函数.这是我目前的代码,希望能够解释更多.

(它应该在Arduino上运行,所以我不能使用大型库.)

首先,我使用这个库为Arduino:

/* SimpleTimer - A timer library for Arduino.
 * Author: mromani@ottotecnica.com
 * Copyright (c) 2010 OTTOTECNICA Italy
 */
Run Code Online (Sandbox Code Playgroud)

它采用它在此类型的设定计时器间隔上调用的函数:

typedef void (*timer_callback)(void);
Run Code Online (Sandbox Code Playgroud)

据我所知,它是一个类别功能,成员函数的网页指针让我真的很远,但还不够远.可能是我这方面的术语缺陷.

现在,我已经创建了自己的类,我想依次使用这个SimpleTimer库.但是,如果我为SimpleTimer提供我的类函数,它就不喜欢它们(我理解).但是如何在不改变SimpleTimer库的情况下实现这一目标是可能的.

所以有类机器人,它有Robot::halt().我希望机器人能够向前移动一段时间.像这样:

void Robot::forward(int speed, long time) {
    reset();
    timer.setTimer(time, c_func, 1);

    analogWrite(l_a, speed);
    analogWrite(r_a, speed);
    isMoving(true);
}

void Robot::halt() {
    __isMoving = false;
    digitalWrite(r_a, LOW);
    digitalWrite(r_b, LOW);
    digitalWrite(l_b, LOW);
    digitalWrite(l_a, LOW);
}
Run Code Online (Sandbox Code Playgroud)

此时c_func变量是一个无类函数,但我想使用该Robot::halt函数.我看了,读过,学过但还没有成功.我似乎无法绕过这一个,因为我错过了一些角度.

我试过了:

timer.setTimer(time, (this->*halt), 1);
timer.setTimer(time, Robot::*halt, 1);
timer.setTimer(time, &Robot::halt), 1);
Run Code Online (Sandbox Code Playgroud)

但这一切都等于同样的问题/我只是在黑暗中刺伤......

编辑 …

c++ pointers class arduino callback

12
推荐指数
1
解决办法
8527
查看次数

Python子进程调用返回"未找到命令",终端正确执行

我试图从python运行gphoto2,但没有成功.它只返回未找到的命令.gphoto安装正确,如在,终端中的命令工作正常.

p = subprocess.Popen(['gphoto2'], shell=True, stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT, executable='/bin/bash')

for line in p.stdout.readlines():
    print line
p.wait()

/bin/bash: gphoto2: command not found
Run Code Online (Sandbox Code Playgroud)

我知道osx终端(应用程序)有一些有趣的东西,但是我对osx的了解很少.

对这个有什么想法吗?

编辑

改变了我的一些代码,出现了其他错误

p = subprocess.Popen(['gphoto2'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout:
    print line


    raise child_exception
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

编辑

使用完整路径'/ opt/local/bin/gphoto2'

但如果有人关心解释使用哪个shell或如何登录并能够具有相同的功能..?

python shell terminal subprocess

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

arduino ×1

c++ ×1

callback ×1

class ×1

pointers ×1

python ×1

shell ×1

subprocess ×1

terminal ×1