我的一位前同事在面试一家做工业控制软硬件的公司时,面试挂了,原因是他没有上位机开发经验,于是就跑来问我,做上位机开发到底需要掌握哪些知识。我跟他说,上位机开发其实和普通的软件开发并无太大的区别,只不过是形式有些变化。提同事不解,于是我就跟他好好唠了一下,听完同事恍然大悟!

打开网易新闻 查看精彩图片

同事面试的“挂点”主要是在硬件通讯上,面试官问了他一大堆的跟硬件通讯的有关问题,因为都没对接过,所以他一个也回答不上来,所以问我和硬件通讯难不难!

我的回答是——一点也不难!

同事回答不上来,主要是对于硬件通信没有什么概念,简单的说,所有的硬件通讯,其实都是基于TCP/IP演化而来的,TCP/IP通讯你不会?不会的话去网上搜搜,不超过一个小时,我保证你会!

面试上位机程序员,被问到最多的就是会不会和PLC、传感器、继电器、数据采集卡、IO等硬件通讯。

别看好像硬件的种类五花八门,通讯协议也是五花八门,但是,其实都是基于TCP/IP通讯的!比如说什么Socket、Modbus等等(工业硬件通讯我只能想到这两种)。

在通讯协议上又分为网口通讯和串口通讯,看似不一样,那只是在代码层面与硬件连接的方式不一样了而已,实际上其他的都一样!

最重要的是,所有的常规硬件的通讯方法(包括以上所提到的所有硬件的通讯方法),在C++和C#这样常用的上位机编程语言里面,都已经封装好了,不需要我们自己去造轮子!

而一些非常规的硬件,稍微复杂一些的,比如说像工业摄像头数据获取,其实一般硬件厂商会有已经封装好的数据获取的SDK,程序员根据官方提供的调用文档去调用SDK里面的方法即可,甚至很多硬件厂商会有现成的Demo,实在看不懂,直接抄!

所以,从技术层面来讲,和硬件通讯这块其实并不是太难懂!大家如果想要从事上位机开发,不需要有任何心理负担,大胆上就是了!

而且,现在工业常规的工控硬件少说也有几千款,通讯协议也就那么几种,要说不同,最多也就是在数据格式上会有不同而已,通讯方式基本上都是一样的!

如果您对硬件通讯还有什么顾虑,担心自己理解不了,那么我建议大家去网上搜一些相关的工控模拟软件来先练练手,现在有很多专门为电气工程师和上位机软件工程师开发的通讯测试软件,里面会有不同品牌的工控硬件的通讯方法供大家参考,很多还提供通讯代码。

我自己碰到陌生的硬件,通讯这块拿不准,我也是会拿模拟测试软件去先模拟测试的!

打开网易新闻 查看精彩图片

看我说的那么容易,我同事悬着的心也放下了,现在在他看来,只是差一个机会而已!但是,有了我说的托底,他以后面试也会更有底气!

结语

其实,我在第一次接到上位机软件开发的项目的时候心里也很没底,因为以前都是跟服务器通讯,或者说是软件跟软件之间的通讯,通讯方式比较单一,数据格式也比较单一。但是,换成了跟硬件通讯,心里就没把握了!

我这里可以这么说,掌握所有常规(注意这里说的是常规)硬件通讯,基本上最多只需要花一个星期时间就能全部掌握了!这我还是说多了!

大部分情况下,在工作中,和硬件通讯都是现学现卖的!