关于工业协议实现的某些意见

引言??????

 目前也做了不少工业协议了,做得比较好的比如JS1939B,MB_RTU_TCP。已经算是标准件了。???????所以分享点自己的心得。

封装中间件的关键点??????

  1. 要考虑在单个程序中的可重用性。
     可以采取C++的方式封装代码,这样就可以不考虑重入问题了。
     也可以把所有影响重入性的因素踢出到中间件之外。通常这是很难的,而且会提高维护复杂性,你不得不捆绑着可重入性、兼容之前应用(接口不可大动)的两个脚镣前进
  2. 要考虑协议本身的状态机制,采取异步模式。
     通常协议栈需要很多个状态机,但是它可以跟APP异步,也就是可以引入队列。
  3. 嵌入式系统尽量把中间件的数据区跟APP、Driver公用。
     单个通信设备通常只挂载一个任务,不存在竞争关系。
  4. 要有一致性的编程思路:
     比如modbus,每个功能码的处理其实都差不多,要抽象出统一性,然后再添加个性化的处理
  5. 要尽降低自己的维护成功。
     如今是个内存白菜价的时代,处理器通常不缺那么一丢丢内存。比如我吧modbus-rtu和modbus-tcp完全封装在一起,结果不仅仅减少了维护成本,后续还果断遇到了串口和网口同时用的场景。????

注意事项???????

  1. 不要排斥指针,要好好利用它。
  2. 不要被强数据类型捆绑,要精通数据类型转化


    真正的C大神可以叫做指针和数据类型转化大神
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值