四年前我寫過一片文章《我是半個程序員》,最近重讀,發現挺有意思的,准備把最近四年的日子也寫下來,同時也算是一個總結。
2013年6月,我終於從學了7年的環境工程專業畢業了。別問我為什么選環境工程,是它選擇我的。高考失利,填了6個專業,前4個都是計算機專業相關,然后第5個才被選中,就是環境工程,隨后就在這個萬丈深淵里爬了7年。幸運的是,研究生期間從事的基本都是產品開發和軟件編程,最終畢業論文寫的也是儀器的開發。畢業后,我毫不猶豫的選擇了留在老師的公司,我覺得在這里能學到的東西太多了。那個暑假,CMC檢定通過了,進樣器也開發出來了。大家都很高興,儀器可以全面銷售了。
這個時候有一個非常嚴謹的經銷商,願意代理我們的儀器。他拿到儀器后,並不是立刻推給用戶,而是自己測試起來,連續兩天弄到凌晨2點。最后給我們的答復是,我們的儀器不行,原理上就行不通。事實證明他是正確的,我們的測試都是拿清水來做,一旦遇到真實的水樣,立刻就歇菜了。更加諷刺的是,這個原理我們都已經申請了專利,本來是引以為豪的東西,一下子被否定了。大家又陷入了開發危機,什么時候才能做出一款能正常使用的儀器呢?
經過大家的討論,新的方案出來了,就是在進樣器上增加一個攪拌的功能。說干就干,一個月的時間,帶攪拌的進樣器也出來了。當時的開發速度,簡直就是在飛。新的方案經過實際水樣的驗證,是可行的,於是就按這個結構生產。然而又出現了新的問題——電器控制總是時好時壞。儀器的整體結構是這樣的,PC機和主機通過RS232通信,進樣器並沒有獨立的電路板,上面的部件都是由主機的主板控制。主機和進樣器之間通過一根1.5米串口線連接。控制不正常,我從代碼里找了很久,剛開始懷疑是否有響應延時,加了一些延時,還是沒能解決。無奈之下,找了之前幫忙的王工過來查看原因。王工一過來,就哈哈大笑,舉着1.5米的串口線說,串口線怎么可以用來傳輸電壓?
由於進樣器里面的所有部件都是由主機繼電器控制的,我就從主機主板的IO口直接通過串口線接到進樣器里。而這些部件的控制電壓都是12V。也就是說,我用串口線來傳輸12V的電壓,結果是什么樣的呢?王工用萬用表量了進樣器里面電磁閥的輸入電壓,6.7V,而原本應該是12V,串口線竟然進行了如此嚴重的壓降!終於找到原因了,只能笑自己太想當然,誰讓我沒學過電路呢。解決方案是在旁邊單獨拉兩條線來傳輸電壓,用的是自制的兩針航空接頭。這種做法在后面又出了一系列隱患,因為電壓分正負,而接線的人經常不注意就接反了。
王工建議進樣器使用單獨的電路板,這樣結構就合理很多:進樣器<==>PC<==>主機,也就是使用兩條串口線接到PC上。問題來了,現有的VB軟件上只有一個串口,怎么辦?那時候,我對串口編程只懂點皮毛,只會收發指令,連一些基本的常識也不懂。我不知道串口對於軟件而言都是獨立的,根本沒想過可以使用兩個串口,而是自作聰明的想到了串口並用——把主機和進樣器的兩個串口一起並接到了PC上。於是,一不小心,又走上了一條不歸路。
首先,我進行了代碼剝離,把原本由主機控制的進樣器部件相關的代碼剔除。然后開始編寫進樣器的代碼,單片機用的51,所以很不費力的寫完了。我還查看了多設備通信的資料,了解到必須要有地址,於是,在原來的通信協議上面增加了一個地址位,一切都非常規范。我並沒有直接把兩個設備接在一起聯調,先試了下PC跟主機的通信,通過;然后單獨接進樣器,也很順利的調通了。心里就暗爽,這未免也太容易了吧。最后一步,兩個串口並聯,接到PC上,通信就異常了。每次都是第一步跟主機通信成功,第二步跟進樣器通信就失敗。把兩個並聯的串口脫開來,單獨運行,又是正常的。到底是怎么回事呢?用串口調試助手模擬軟件發送指令,發現收到的指令跟下位機應該回復的並不一致。以當時的見識和覺悟,完全是一頭霧水。現象一直能重現,但是找不到問題所在。
后來突發奇想,把本來接進樣器的那個串口,接到了另一台電腦上,也裝了串口助手,再次模擬。第一條指令是發給主機的,發現替代進樣器的電腦上也能顯示,這個是正常的,誰讓咱是並聯呢。主機正常回復了應答指令到PC上,咦,好像指令對上了。也就是說,用另一台電腦替換進樣器,PC收到的指令就正常了。這個差異可以得出結論,當PC第一次給主機發指令時,進樣器也能收到該指令,但是有異常的反饋,這個反饋和主機應答的指令混在一起,於是通信就異常了。至於進樣器為什么產生不該有的反饋,不得而知了,很有可能是串口中斷部分的代碼有bug。待我想進一步去驗證的時候,我接到了老板新的任務。后面就再也沒有涉及這個方案,也就是說就此夭折了。
第一代儀器落下帷幕。非常享受整個開發過程,小公司的好處在於,想到就能做。缺什么部件可以立刻下單,不知道哪個型號,那就多買幾個型號來試。需要加工的,立馬出圖去加工,在現場等着加工完就拿回來試。可以用“零阻力”來形容這種狀態。大家也都積極性很高,經常不由自主的加班到很晚,還樂此不疲。第一代儀器正式開發結束,進入銷售攻堅階段,看到自己開發的儀器能被大家用起來,對於涉世未深的我,自豪感爆棚。