上周五,一家大型管道公司的控製中心把我請去,分析一下有個管道測控器無法與之通信的原因。
來到測試室,搜集了一堆通訊數據,我也懵圈了:測控器在遙遠的管道線上,給它發指令,它不回複。偏偏用另一家公司的軟件,它回複就很正常,不用說,顯然是我們自家的軟件出了問題。類似的控製器還有好幾百個,目前隻發現這個出問題,中間有一個類似路由器的部件,它的固件可能有問題,他們已經安排了人,讓他長途開車去現場,把舊的換下來。按計劃前一天就該完成,偏偏那人有事耽擱了。這回把我找來,算是雙管齊下,看看軟件這邊有什麽解決辦法。
折騰整整一個下午,沒有頭緒。
回到家裏,晚上繼續分析,把另外那個軟件發的數據一個字一個字檢查了一遍,跟我們的一對比,總算看出了差異:其實就少了4個字節。這個跟一個用戶輸入設置有關。
第二天周六,又是一行一行看CODE,昏天黑地。最後看明白了:在原先用戶輸入的“2,0”兩個數字前麵,應該加上:1,1,這樣改之後,跟另外那個軟件所發出的指令相比,還是少了最後的兩個字節,不過這已經最接近的了。自己寫了一個測試程序,確認了結果,然後給管道公司的人寫了郵件,請他們試試,看結果如何。
周一早上,終於看到對方發來的郵件:成功了!現在馬上通知那位技術員,不用開長途去換部件了。而且,以後要是碰到類似情況,也可以先試一試這個解決辦法。
我自己這邊的項目主管也發了郵件,隻有寥寥兩行字:“很高興攔路虎終於破解了!沒想到這麽簡單”。簡單?我的個天,說得輕巧!我可花了兩天的功夫,看了一千多行CODE,再加分析,測試。還有那兩百多個字節的通訊數據,原來是照片(他們的機器上不準插U盤,文件無法拷貝),我是用手工,一個一個敲進電腦的,於是才得出那個簡單的“1逗號1逗號”。