上一篇文章中,我们将转换器设备连接云端服务器,并正常获取报文,顺利打通了汽车数据传输到互联网的硬件通道。现在我们把真实汽车网络中的Canbus数据上传给服务器。于是我去老板办公室申请一辆车做测试,早晨老板送到我手里是是一个汽车零件。[○・`Д´・ ○]
该设备是汽车方向盘内获得转向角的传感器,串口通信四根线,分别是电源正负、极和Can信号高、低线。
我们把它连接到“以太网-Can”转换器,启动服务器调试,服务器未响应,程序卡死了。
检查了一下接收数据的代码部分,再次运行程序还是卡死。我只能暂时把转向角传感器断开,服务器又可以正常工作。之后又用串口调试助手确定转向角传感器正常工作,只是传输数据的频率非常快,一秒钟一百次左右。那么可以确定是因为汽车传感器疯狂数据传输导致服务器卡死,这和我之前做的低频广域物联网完全不同,汽车以为其安全性要求,所有数据必须实时更新,现在一个传感器一秒钟一百次数据上传,后期接入汽车Canbus网络后会有数以百计的汽车传感器和执行器来回交互,对服务器的压力一定是非常大的。
于是我再次对服务器架构进行检查,服务器获取报文之后仅仅显示在屏幕上打印一下,没有其它任何操作,最终找到了问题,是之前在代码里面封装了一个写入txt备份文档的代码,这会不停的调用IO接口,100次/s,
代码修改后再次运行服务器,很轻松的获得转向数据。
恭喜自己,又获得新的经验,下一篇我们需要再服务器里对获得的数据进行解析和处理,Can总线会自动校验数据,如果发送不成功会自动重新发送,但服务器和转换器直接并没有这个功能,如果数据发送失败或数据错误该怎么处理呢,,,接下来我们会逐步完善功能。