TRAE+QT开发心得
最近需要做一个项目中的通信更改,原来的CAN改成了modbus tcp,通信本身很简单,但是因为兼顾系统内其他无法改变的架构,导致通信的备份和连接的逻辑变得有些复杂。
通信分为主站副站两种模式,主站模式时,首先和A1、A2、A3和C四个服务器请求连接,共4路传输不同业务数据,其中A1 A2 A3如果连通不成功时,分别单独切换至B1 B2 B3,C则是单路连接无备份。接着自身作为服务器,接收D、E、F、G四个终端请求,分别告知他们业务数据现在取自哪里。他们则根据获得的信息,自己去对应服务器去取业务数据。当DEFG接收不到主站告知他们的信息时,D自己升级成主站。
最开始的思路,是把需求在豆包上描述后,生成了通信的流程图,根据流程图描述,看到不正确的地方再去修正,直至导出最正确的流程图。接着在TRAE上,将需求完整描述,生成了QT中的C++代码,编译运行,首先是崩溃的问题,接着是自动重连的逻辑,因为实验环境下还没有配齐全所有的设备,所以看到的现象是不断地重连,完全不知道东南西北的状态,生成代码效率高,但开发处于失控的状态。一开始是让TRAE增加了一个试验状态,不要自动连接,但是处理不彻底,主站副站的切换,自动重连,客户端、服务器端的先后顺序等,还是非常混乱,于是完全放弃该版本程序,重新开始。
回到最初,不急于一气呵成,先从第一路modbus TCP连接建立开始,作为客户端和服务器建立连接,连接测试通过后,再加上主备切换的功能,然后加上计时器,连续发送请求,全部通过后记为V1.0。
第二步,加第二路连接,同样作为客户端,和之前一样的功能,通过服务器端建立连接和收发数据完成测试,全部完成记为V1.1。
第三步,加上作为服务器端的连接,客户端连接测试,完成后记为V1.2。
第四步,加上了主站副站的切换模式,测试主站断网后,副站可以升级为主站,完成后记为V1.3。
此时完成状态去对照最初的需求和流程图,发现从服务器取业务数据,服务器端的AB断开切换重连,以及自身作为服务器向外提供信息、副站自动升级为主站的功能都完成了,对比最开始一气呵成的程序来看,这版程序自我的掌控程度高了很多,逻辑也更为清晰。
整个开发过程使用免费的TRAE资源,上午时段的效率尤其十点以前,几乎没有排队,感受也非常好。
