概念

通信有两种方式,一种是最简单的同步通信方式,也就是说发送数据后,系统一直在等待数据的到来,这样通信非常好理解,但是由于CPU一直等待数据,导致效率很低,当然对于常规单片机来说,是没有问题的;但是在有界面体系的单片机上,是肯定不行的,因为循环等待数据肯定会导致界面无法响应;

另外一种通信方式就是异步的,一般带有界面的系统都会启用异步方案,所谓异步方案,就是指发送数据后程序继续执行,当收到合适的数据后,自动启动预先设置好的处理代码来完成数据处理;这种方式效率高,但是对于C语言来说实现不好实现(JS、lua、python等比较容易实现);而对于嵌入式系统来说,一般通用的做法是利用线程把异步代码改成同步的代码,但是需要考虑线程的并发性,对于只熟悉单片机C代码用户的开发者都不是优选;

为了更好的利用C语言完成异步加载,我们通过研究,提出了“状态机队列”这个体系,通过状态机队列将异步的通信变成了好理解的伪同步代码

que_do(通道号,步骤号,超时时间){
    //在此书写通信发送代码
}then{
    //在此书写接收数据处理代码
    //要区分通信结果正常和异常并分别处理
}else{
    //在此书写超时处理代码
}

具体思路如下:

if (que_create(1))    {que_go(1,10);}

这将启动1号串口通道(对应PCB接口串口2)的第10步通信

需要注意的事项

具体

请参见队列各种功能调用的说明