Bar*_*osz 0 c++ raspberry-pi raspberry-pi-zero pigpio
所以我正在尝试编写一个程序来提供树莓派和加速计/陀螺仪之间的接口。我需要这个函数尽可能频繁地更新,并且我想设置一个计时器来确定它何时运行。
\n这是我的代码:
\nvoid updateGyro(Gyro gyro) {\n gyro.update();\n}\n\nint main() {\n if (gpioInitialise() < 0)\n return -1;\n\n // Creates new gyro object\n Gyro gyro;\n // Sets a timer to update every 10 milliseconds\n gpioSetTimerFuncEx(0, 10, updateGyro, &gyro);\n\n \n\n time_sleep(10);\n gpioTerminate();\n}\n
Run Code Online (Sandbox Code Playgroud)\n但这似乎不起作用,我收到错误:
\ngyro.cpp: In function \xe2\x80\x98int main()\xe2\x80\x99:\ngyro.cpp:113:31: error: invalid conversion from \xe2\x80\x98void (*)(Gyro)\xe2\x80\x99 to \xe2\x80\x98gpioTimerFuncEx_t\xe2\x80\x99 {aka \xe2\x80\x98void (*)(void*)\xe2\x80\x99} [-fpermissive]\n 113 | gpioSetTimerFuncEx(0, 10, updateGyro, &gyro);\n | ^~~~~~~~~~\n | |\n | void (*)(Gyro)\nIn file included from gyro.cpp:2:\n/usr/include/pigpio.h:3751:55: note: initializing argument 3 of \xe2\x80\x98int gpioSetTimerFuncEx(unsigned int, unsigned int, gpioTimerFuncEx_t, void*)\xe2\x80\x99\n 3751 | unsigned timer, unsigned millis, gpioTimerFuncEx_t f, void *userdata);\n | ~~~~~~~~~~~~~~~~~~^\n
Run Code Online (Sandbox Code Playgroud)\n我尝试过将 gyro.update 函数直接传递到该函数中,但这也不起作用。有谁知道如何解决这一问题?
\n\nvoid*
不是任何数量的任何参数的占位符。这正是意味着,指向未知类型的单指针。updateGyro
不接受 type 的参数void*
,它接受 type 的参数Gyro
。
您需要更改您的函数以接受void*
:
void updateGyro(void* arg) {
Gyro* gyro = static_cast<Gyro*>(arg);
gyro->update();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
49 次 |
最近记录: |