移远官网

QuecPython编程注意事项——实时更新

  1. 创建的实例对象能定义成全局变量的不要定义成局部变量,否则可能会因为局部变量被系统回收导致出现异常,如:GPIO状态恢复 到默认状态导致的异常,对象被回收导致找不到的异常等。
  2. 多线程编程时,建议在主线程中对其他子线程进行监控,避免其他子线程出现异常情况停止工作等情况导致工作异常。
  3. 只要有死循环的操作或者循环次数特别多这类占用CPU时间较长的操作,死循环中都必须加一个utime.sleep(),可以是sleep_ms或者sleep_us。
  4. 代码逻辑里使用utime.sleep延时进行计时操作会发现时间有偏差问题。此延时时间不是精准的延时,精准的延时需要使用定时器,并且毫秒级延时和微秒级延时接口更不准确,不能用来做时序操作。ASR的ostick是5ms,CAT M的是10ms,展锐是20ms,小于就靠任务切换了,随机值。
  5. QuecPython 的 I2C 接口地址会自己添加读写位,传入 7 位地址即可,填入8位地址会导致无法通信。
  6. 在不影响业务逻辑的情况下尽可能在main.py开头延时个5-10S,给各部分资源充分的时间就绪。
  7. MQTT断线通过捕获异常获取,但是断线后,异常捕获不到:会抛出异常,umqtt已经做了处理,上层的try捕捉不到下面的异常,对于断线后会尝试重连,有log输出,不会直接抛出异常。
  8. 执行网络通信相关业务逻辑前务必确保网络畅通,或做好异常捕获(逻辑上一定要考虑全),例如网络异常时进行socket连接报错的异常处理等。 QuecPython编程注意事项——实时更新
1 个赞

硬核知识点分享, 点赞帮顶.