一、背景
在对IO设备(如最近搞的串口读卡器)的操作中,通常是向设备发送命令,然后接收设备的返回。对于程序而言,无非就是向设备(可以理解为文件,linux都说读写皆文件嘛)的写命令,并从设备读结果。
二、分析
就设备而言,设备收到命令之后,对于硬件实际处理比较耗时的操作,有两种处理方式:
一种是立即提供结果码给应用程序读,代表我收到了命令并开始处理了,随后我会在查询状态的命令中将相应的处理状态告诉你,然后由应用程序不断地隔一段时间(可能是n毫秒)发一条查询状态的命令到设备,设备再返回状态码给应用程序。这种方式说白了就是异步处理。
另外一种是,设备收到命令就开始处理,直到处理完毕才提供结果码给应用程序来读。如果一直没有处理结果超时了,对于应用程序而言,一直读不到数据,可以再发送其他命令给设备,或取消操作,或其他命令。