浅析如何使用状态机
通常操作Ginkgo适配器时,通用的流程是:
1. Scan devices.
2. Open device(s).
3. Init devices.
4. Operate device(s)
Operate(Write, Read, Write & Read) 其中一个或者几个。
这里操作的时候,很多用户比较喜欢使用子线程去读或者写,甚至使用锁之类方法;
由于对于一个适配器来说,完全是通过usb来完成的,所以,没必要使用子线程,锁之类方法,
推荐一个大致的办法:
使用简单的状态机来进行,就是设置不同的时刻的状态,比如:
4.1 state_write_idle, state_pre_write, state_writing, state_written;
4.2 state_read_idle, state_pre_read, state_reading, state_read;
如果使用callback取数,有数据的时候,可以设置state_reading_callback,
在callback里收完数据后,切换到state_data_ready,把数据交给main loop, main loop按需处理.
5. Close devices.
6. Exit app.
|