移植到单片机,做事件回调时参考:https://pikapython.com/doc/coreapi_event.html
单片机IO口触发,C语言通过pks_eventLisener_sendSignal发送信号。
python代码:
def callback(signal):
print('callback,signal:',signal)
测试C代码:
PikaEventListener* g_pika_user_listener;
uint32_t EventId = 0;
void Device_DigitalInput_setCallBack(PikaObj *self, Arg* eventCallBack)
{
if(NULL==g_pika_user_listener)
{
pika_eventListener_init(&g_pika_user_listener);
}
uint32_t eventId = EventId;
// 将这个事件注册进监听器
pika_eventListener_registEventCallback(g_pika_user_listener,eventId,eventCallBack);
}
void EventHandler(uint32_t code)
{
uint32_t eventId = EventId;
pks_eventLisener_sendSignal(g_pika_user_listener, eventId, code);
}
当有触发时调用EventHandler,发送信号,这个code变化,而python里打印的signal却一直是0。
再继续用code++测试发送,到16时有打印16,经观擦是低4bit被清0
这个里面是否还有其他配置,或者这个singalCode有范围?
离线
这个问题我也发现了,是内部 bug,我已经修改了,需要更新一下版本:
pikascript-core==latest
PikaStdLib==latest
离线
更新前是V1.13.4,更新后是一串数字87640856fa447be1ab1f70668994b55aeeaade5e
更新后,在keil里有提示error
linking...
.\objects\template.axf: Error: L6218E: Undefined symbol strdup (referred from pikaobj.o).
.\objects\template.axf: Error: L6218E: Undefined symbol strndup (referred from pikaobj.o).
Not enough information to list load addresses in the image map.
Not enough information to list image symbols.
这个strdup和strndup好像之前没有的。
离线