我们先来谈一谈设计AT Lib的一些考虑。
- Sync和Async
毕竟和串口通讯这样的硬件打交道,我们需要支持异步调用吗?
我觉得一般在软件的高层会去实现异步调用(一般通过开启一个单独线程),所以AT Lib在设计的时候只支持同步调用。
- Response Timeout
发送AT Command后,等待Modem的Response肯定需要超时管理。例如Modem死掉了,这样AT Lib在同步调用的时候不至于一直卡死在哪里。
- AT Command
我们会设计一个AT Command类。为什么不直接用字符串而用一个专门的类呢?
- 有些Response有Result Code,有些没有
- 我们需要期望什么样的Response呢,需要把这样的期望加入到AT Command类中
- AT Response
我们会设计一个AT Response类。
- 包含当时发送的AT Command字符串是什么
- 发送的AT Command字符串有没有Echo(如果Modem开启Echo,Modem会把AT Command放到Response中)
- Result Code是什么
- CME Extended Reason Code是什

本文介绍了C# AT Lib库在设计时的主要考虑,包括仅支持同步调用以避免异步复杂性,设置Response Timeout以防止因Modem问题导致的卡死,以及详细阐述了AT Command类和AT Response类的设计思路,以解决如何识别和解析完整且期望的AT Response的挑战。
最低0.47元/天 解锁文章
405

被折叠的 条评论
为什么被折叠?



