IoTask设计

Iotask是单线程的,它会循环扫描每个通道上,由于每个通道上都有一种协议,其实就是一个插件(dll), 每个插件都export出
OnInit
OnRead
OnWrite
OnComplete
OnTimeOut
接口, Iotask启动的时候会调用OnInit函数,然后进行打包(就是按照扫面时间和Modbus地址的连续性进行分类),接着按照分类的包再调用OnRead函数,参数是Package,OnRead会返回一个值,表示是否需要关心设备的返回值,
如果需要关心,那么Iotask会在收到这个通道上的来自设备的数据后调用这个插件的OnComplete函数,并在这个函数中检查数据是否完整,并把接收到的数据放到实时数据库中。如果不需要关心此设备的返回值,那么就不需要调OnComplete函数。而且如果需要等返回值,那么需要等到值回来以后在调用下一种包的OnRead函数,即调完这种包的OnRead函数后就继续调用下一个通道的OnRead函数了,否则如果不需要等返回的话,就调用同一个通道的下一种包的OnRead函数了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值