有一个项目,需要通过串口或者TCP/IP读取一些设备的运行参数,例如温湿度、发电机等,通信协议一般是MODBUS或者电总协议的帧格式协议。为了使程序使用更多的设备,打算用LUA来解析通信协议。这样子在设备在不同的应用场合时,只需要更新或者增加LUA脚本就可以接入新的设备类型。
实现思路
1. 每个唯一LUA文件对应特定设备的协议接入,在协议里完成数据帧的发送、接收、校验,并得到设备的运行参数,最后返回C应用程序。
2. 要解决的问题:
1)数据的发送、CRC校验是在C程序那边完成的,所以需要解决如何将数组(表)传递给C。
2)LUA的函数解析完了之后,如何将设备的参数返回到C,C如何得到LUA返回的参数。参数是多个,且数量不定,内容不定,可能是整形、可能是字符串。
3. 经过搜索网上一些资料,做了一个简单测试程序,基本实现了上述的问题。剩下的就是完善和移植到现有C系统中了。实现例子:
1)https://blog.youkuaiyun.com/shjhuang/article/details/104273145
2)https://blog.youkuaiyun.com/shjhuang/article/details/104275278
以上只是实现的方法,最终的程序还要继续完善,如有机会再发布。