上周五,一家大型管道公司的控制中心把我请去,分析一下有个管道测控器无法与之通信的原因。
来到测试室,搜集了一堆通讯数据,我也懵圈了:测控器在遥远的管道线上,给它发指令,它不回复。偏偏用另一家公司的软件,它回复就很正常,不用说,显然是我们自家的软件出了问题。类似的控制器还有好几百个,目前只发现这个出问题,中间有一个类似路由器的部件,它的固件可能有问题,他们已经安排了人,让他长途开车去现场,把旧的换下来。按计划前一天就该完成,偏偏那人有事耽搁了。这回把我找来,算是双管齐下,看看软件这边有什么解决办法。
折腾整整一个下午,没有头绪。
回到家里,晚上继续分析,把另外那个软件发的数据一个字一个字检查了一遍,跟我们的一对比,总算看出了差异:其实就少了4个字节。这个跟一个用户输入设置有关。
第二天周六,又是一行一行看CODE,昏天黑地。最后看明白了:在原先用户输入的“2,0”两个数字前面,应该加上:1,1,这样改之后,跟另外那个软件所发出的指令相比,还是少了最后的两个字节,不过这已经最接近的了。自己写了一个测试程序,确认了结果,然后给管道公司的人写了邮件,请他们试试,看结果如何。
周一早上,终于看到对方发来的邮件:成功了!现在马上通知那位技术员,不用开长途去换部件了。而且,以后要是碰到类似情况,也可以先试一试这个解决办法。
我自己这边的项目主管也发了邮件,只有寥寥两行字:“很高兴拦路虎终于破解了!没想到这么简单”。简单?我的个天,说得轻巧!我可花了两天的功夫,看了一千多行CODE,再加分析,测试。还有那两百多个字节的通讯数据,原来是照片(他们的机器上不准插U盘,文件无法拷贝),我是用手工,一个一个敲进电脑的,于是才得出那个简单的“1逗号1逗号”。