项目需求:对PLC上存储的数据进行读取,并转存到数据库
语言:C++、DDL
所需知识点:Socket通信、Modbus帧结构、C++中数据库的操作、多线程、Linux
项目进度拆解记录(不会做就是困难!!管它简不简单!)
1、Socket通信。
由于之前一直采用串口通信,并未了解过其他通信机制,所以&*%¥%!@#(啥也不会)。打开网页、视频各种学习,发现是自己掌握的TCP通信机制,但自己只是理论掌握,不具备代码实现的能力,在优快云、GitHub寻找各种资源后,终于写出了自己的Socket.cpp。这只是开始,耗时一周(严重浪费!!!)
1.1、Socket通信连接问题
在不打开服务器的情况下,程序会一直停在连接时(我用的是connect连接)。且打开服务器后,通信连接成功,但会报出一个错误(自己写的,取出connect返回值为-1)。这里理想的优化方案是连接服务器超时时,报出一个错误,然后再尝试继续连接。实现方式学习中……
2、Modbus帧结构。(这个我可以,最喜欢帧结构!)
2.1、Socket通信连接问题
耗时一个下午,各处查找资料后,学习到Modbus帧中的位所代表的信息。——这里安利两个小工具(Modbus Slave和Modbus Poll)下载地址(链接:https://pan.baidu.com/s/1YNz1wbb6PeRrVDhg2mrdgQ 提取码:z2a0 --来自百度网盘超级会员V4的分享)——下图可以即为帧结构,显然~~~所以~~~这里懂了。在代码实现的过程中,由于不可抗力的被要求加入CRC校验算法,然后打开GitHub一顿扒拉,读了很多之后ÿ