移植到单片机,做事件回调时参考: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好像之前没有的。
离线
这个问题我也发现了,是内部 bug,我已经修改了,需要更新一下版本:
pikascript-core==latest
PikaStdLib==latest
此外,似乎向一个PikaEventListener用两个不同EventId,regist两个EventCallback。
pika_eventListener_registEventCallback(DIN_event_listener,port,eventCallBack);
DIN_event_listener : 同一个全局PikaEventListener
port : EventId,两次传入的为不同的值
eventCallBack : python里传过来函数,两次不同
使用两个EventId触发pika_eventListener_sendSignal,python里触发调用的都只是其中一个函数。
先触发哪个就一直是哪个。
离线
@onongg
这个问题应该修复了,再改成latest然后更新一下试试,更新完出现一串数字(其实是commit id)是正常的,这样可以让版本锁定在你当时更新的时候,避免意外更新造成兼容问题,要继续更新最新版,需要手动将 commit id 改回 latest,然后就会更新到最新了(又获得了一个更新的 commit id)。
离线
@lyon1998
刚latest了,看到PIKA_TAB_ENABLE改为关闭了。strdup 仍有提示
.\objects\template.axf: Error: L6218E: Undefined symbol strdup (referred from pikaobj.o).
在getFilteredCompletions函数里还有用到,而getFilteredCompletions只有在#if PIKA_TAB_ENABLE里的代码用到。
我临时更改将这函数里的代码#if PIKA_TAB_ENABLE起来,测试OK了
文档中心里的示例按理应该有测试过,前面最初的事件回调singalCode,这些基本应用应该容易发现
离线
@onongg
一开始是测试OK的,后面有其他修改后出问题了,测试难免会有不充分的地方
离线