四年前我写过一片文章《我是半个程序员》,最近重读,发现挺有意思的,准备把最近四年的日子也写下来,同时也算是一个总结。

  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。待我想进一步去验证的时候,我接到了老板新的任务。后面就再也没有涉及这个方案,也就是说就此夭折了。

  第一代仪器落下帷幕。非常享受整个开发过程,小公司的好处在于,想到就能做。缺什么部件可以立刻下单,不知道哪个型号,那就多买几个型号来试。需要加工的,立马出图去加工,在现场等着加工完就拿回来试。可以用“零阻力”来形容这种状态。大家也都积极性很高,经常不由自主的加班到很晚,还乐此不疲。第一代仪器正式开发结束,进入销售攻坚阶段,看到自己开发的仪器能被大家用起来,对于涉世未深的我,自豪感爆棚。

http://www.cnblogs.com/seanbei/p/7160528.html