程序員有多愛面子?我同事就是一個例子,為了面子,甚至可以白白浪費時間!事情是這樣的,我和我同事合作開發一個上位機項目,因為是非標項目,公司的采購為了節省成本,買了一些小公司的硬件,這些硬件因為比較小眾,其中有好幾個硬件的通訊模塊的文檔需要研究。
其實,并不是因為通訊協議復雜,這些硬件基本上都是TCP/IP或者Bodbus協議,只不過通訊是雙向的,我們寫的上位機程序需要發送命令給硬件,然后硬件再返回給我們數據,就這么簡單。
難點在于發送和接收數據的格式,因為這些硬件廠商寫的硬件通訊的說明文檔很糟糕,所以我們在調試通信協議的時候頗費周折。
我的同事就遇到了這樣的情況,他在調試某個硬件的時候足足花了三天時間,但是還是沒調通硬件通訊,向硬件發送命令沒有反應。
因為硬件是走Socket通信協議的,本來應該很簡單才對,文檔里寫得似乎也很清楚,就是將一串命令以字符串形式轉成16進制的Byte數據,然后發出去就行了,但是,我的同事按照要求始終沒有調通數據。
但是,詭異的使用Socket調試工具去發送命令,卻能夠收到硬件的反饋!問題就卡在了這里!
好,其實我說他好面子,事情也是從這里開始的!
他在調這個硬件的第一天,下班后我問他調通了沒有,然后他跟我說他調通了,我還說他搞得挺快,因為我手上也有一個硬件通訊部分很難搞!
結果第二天我搞定了手上的硬件以后,看他還在折騰這個硬件,我就問他:“你不是已經調通了嗎,怎么還在調?”
結果他跟我說,他只調通了網口,他想再試下串口通訊。
我也沒多想,于是就來到了第三天的中午,我把手上所有硬件都調通了,于是問他進度怎么樣,結果他跟我說,他之前調的那個硬件發送命令還是有問題,硬件始終沒有返回信息。
我一看,他又換回了網口,于是我問他:“這你不是已經調通了嗎?怎么還在調?”
然后他就跟我說了實話,說之前所謂的調通,只是在Socket調試工具里面調通了,實際在代碼里面調還是有問題。
眼看他進度這么慢,我就跟他說讓我來試試。
我仔細看了文檔以后,也試著寫了調試代碼,發現果然調不通。
折騰了好一會兒,我發現一個問題,那就是命令是字符串,雖然轉成了16進制的Byte數組,但是按照我以前對接的其他硬件的情況來看,有很多種情況是命令本身就是16進制的,在此基礎上還需要進行16進制的轉換,也就是說,需要轉換兩次才可以!
所以,我就試著在將命令轉成16進制數組以后,再挨個對數組的每一個元素再進行16進制的轉換,然后再將命令發出去,結果立馬就收到了硬件的反饋,我成功了!
成功之后,我就立馬把代碼發給了我同事,讓他按照我寫的去做就可以了!
我原本以為問題會很快得到解決,結果直到快下班,我看他還在調那個硬件,我很不解,問他:“我不是已經把代碼給你了嗎,你咋還在調?”
結果他跟我說:“我忘了看!”
這回答我一時半會兒也不知道咋說,因為我知道他為什么“忘了看”!
其實他的心思我很清楚,自己調試了三天的硬件被我給調通了,其實是很沒面子的,所以,不管是跟自己賭氣,還是覺得我多管閑事,他都不會去“抄”我的代碼,還是想通過自己的研究把問題解決。
結語
想到這里,我其實也就沒多說了,因為這樣的程序員我碰到的太多了,好心幫忙結果碰了一鼻子灰!
但是,換個角度想一想,如果我是他,我估計心里一樣不好受,也想通過自己的研究給自己爭口氣。
雖然道理我理解,可是我還是覺得,工作還是工作,不是不能為了爭一口氣,就隨意浪費工作時間!
您覺得呢?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.