我的一位前同事在面試一家做工業(yè)控制軟硬件的公司時(shí),面試掛了,原因是他沒有上位機(jī)開發(fā)經(jīng)驗(yàn),于是就跑來問我,做上位機(jī)開發(fā)到底需要掌握哪些知識(shí)。我跟他說,上位機(jī)開發(fā)其實(shí)和普通的軟件開發(fā)并無太大的區(qū)別,只不過是形式有些變化。提同事不解,于是我就跟他好好嘮了一下,聽完同事恍然大悟!
同事面試的“掛點(diǎn)”主要是在硬件通訊上,面試官問了他一大堆的跟硬件通訊的有關(guān)問題,因?yàn)槎紱]對(duì)接過,所以他一個(gè)也回答不上來,所以問我和硬件通訊難不難!
我的回答是——一點(diǎn)也不難!
同事回答不上來,主要是對(duì)于硬件通信沒有什么概念,簡(jiǎn)單的說,所有的硬件通訊,其實(shí)都是基于TCP/IP演化而來的,TCP/IP通訊你不會(huì)?不會(huì)的話去網(wǎng)上搜搜,不超過一個(gè)小時(shí),我保證你會(huì)!
面試上位機(jī)程序員,被問到最多的就是會(huì)不會(huì)和PLC、傳感器、繼電器、數(shù)據(jù)采集卡、IO等硬件通訊。
別看好像硬件的種類五花八門,通訊協(xié)議也是五花八門,但是,其實(shí)都是基于TCP/IP通訊的!比如說什么Socket、Modbus等等(工業(yè)硬件通訊我只能想到這兩種)。
在通訊協(xié)議上又分為網(wǎng)口通訊和串口通訊,看似不一樣,那只是在代碼層面與硬件連接的方式不一樣了而已,實(shí)際上其他的都一樣!
最重要的是,所有的常規(guī)硬件的通訊方法(包括以上所提到的所有硬件的通訊方法),在C++和C#這樣常用的上位機(jī)編程語言里面,都已經(jīng)封裝好了,不需要我們自己去造輪子!
而一些非常規(guī)的硬件,稍微復(fù)雜一些的,比如說像工業(yè)攝像頭數(shù)據(jù)獲取,其實(shí)一般硬件廠商會(huì)有已經(jīng)封裝好的數(shù)據(jù)獲取的SDK,程序員根據(jù)官方提供的調(diào)用文檔去調(diào)用SDK里面的方法即可,甚至很多硬件廠商會(huì)有現(xiàn)成的Demo,實(shí)在看不懂,直接抄!
所以,從技術(shù)層面來講,和硬件通訊這塊其實(shí)并不是太難懂!大家如果想要從事上位機(jī)開發(fā),不需要有任何心理負(fù)擔(dān),大膽上就是了!
而且,現(xiàn)在工業(yè)常規(guī)的工控硬件少說也有幾千款,通訊協(xié)議也就那么幾種,要說不同,最多也就是在數(shù)據(jù)格式上會(huì)有不同而已,通訊方式基本上都是一樣的!
如果您對(duì)硬件通訊還有什么顧慮,擔(dān)心自己理解不了,那么我建議大家去網(wǎng)上搜一些相關(guān)的工控模擬軟件來先練練手,現(xiàn)在有很多專門為電氣工程師和上位機(jī)軟件工程師開發(fā)的通訊測(cè)試軟件,里面會(huì)有不同品牌的工控硬件的通訊方法供大家參考,很多還提供通訊代碼。
我自己碰到陌生的硬件,通訊這塊拿不準(zhǔn),我也是會(huì)拿模擬測(cè)試軟件去先模擬測(cè)試的!
看我說的那么容易,我同事懸著的心也放下了,現(xiàn)在在他看來,只是差一個(gè)機(jī)會(huì)而已!但是,有了我說的托底,他以后面試也會(huì)更有底氣!
結(jié)語
其實(shí),我在第一次接到上位機(jī)軟件開發(fā)的項(xiàng)目的時(shí)候心里也很沒底,因?yàn)橐郧岸际歉?wù)器通訊,或者說是軟件跟軟件之間的通訊,通訊方式比較單一,數(shù)據(jù)格式也比較單一。但是,換成了跟硬件通訊,心里就沒把握了!
我這里可以這么說,掌握所有常規(guī)(注意這里說的是常規(guī))硬件通訊,基本上最多只需要花一個(gè)星期時(shí)間就能全部掌握了!這我還是說多了!
大部分情況下,在工作中,和硬件通訊都是現(xiàn)學(xué)現(xiàn)賣的!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
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.