安排与慢速设备的通信
C 代码算法示例
while(1)
{
fun1();
switch(fun2())
case 1: fun3();
case 2 : fun4();
}
fun1()
{
command;
delay 1 sec;
response;
if failure, retry;
}
这里,fun1、fun2 等是彼此相似的函数。 所以,问题是我需要等待 1 秒才能得到响应。如何消除等待延迟?
Example C code algorithm
while(1)
{
fun1();
switch(fun2())
case 1: fun3();
case 2 : fun4();
}
fun1()
{
command;
delay 1 sec;
response;
if failure, retry;
}
Here, fun1, fun2, etc are functions which are similar to each other.
So, the issue is I need to wait 1 sec for response. How can I eliminate the waiting delay?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您实现了多线程。
是否包含完整的 RTOS,例如 FreeRTOS 或 Contiki 或 MbedOS 或 其他。
或者使用薄层调度,例如 protothread 或协程。
或者重新组织代码并以事件驱动系统中的状态机的形式实现,并以事件/计时器 -> 的形式进行调度。打回来。使用硬件中断,或者使用自定义库来处理等待事件循环,例如 MBed 的 TimerEvent 或 libevent 工作。
You implement multi-threading.
Be it include a full blown RTOS, like FreeRTOS or Contiki or MbedOS or other.
Or use a thin layer of scheduling, like protothread or coroutines.
Or reorganize your code and implement in a form of a state-machine in an event-driven system, with scheduling in the form event/timer -> callback. Either using hardware interrupts, or with a custom library to handle the wait-for-event loop, like TimerEvent from MBed or libevent work.
将
fun1()
实现为状态机,在多次调用中执行其部分职责。这个例子很粗糙,但是是这样的。Implement
fun1()
as a state machine that performs a portion of its duties over many invocations. This example is rough but something like this.