之前一直在学习一些后台部分的内容,因为涉及到一些业务的具体模型,因此也请教了同事应该如何设计这些内容。最近抽空来写写最近一段时间的开发过程吧。
首先是后台的搭建,通过Asp.Net Core来创建WebAPI服务,然后通过C#自带的TcpListener来实现与串口设备的通讯,业务数据的存储通过EF Core与mySQL来实现。
然后是前端的设计。好消息是前端这块的内容分出去了;坏消息是分出去的只有桌面端前端,网页和手机端以及小程序还得自己写;好消息是桌面端的一些控件我基本上没有使用过,对API的调用基本上一窍不通;坏消息是新同事的C#技术能力有限,很多通讯类的接口得我来帮他封装成一个个单独的方法。
关于Asp.Net Core以及EF Core部分的内容我就不再详细地叙述了,这块的教程在优快云上也有不少,这里放两个我自己学习用的网站:
EFCore 从入门到精通
Asp.Net Core框架解密-实例演示
发现的一些问题
在实际的开发过程中还是遇到过不少的问题,我这里就简单描述一下吧。
使用开机指令开机后前两次传输的Ascii码异常
我定义了一个GeocomCommand的类,封装了一些常用的指令,例如:
[Serializable]
public class OpenDeviceCommand : GeoCommand
{
public OpenDeviceCommand()
{
this.SendCommand = "%R1Q,5011:\r\n";
}
}
结果在执行时,设备处于一个关机的状态,因此绘制的消息出现了两次相当长的文本:
//内容我这边暂时获取不到,等能拿到之后我这边再更新这块的内容
貌似是开机的一些内容。因此在执行任何测量任务之前,最好是获取一次设备的基础信息,例如设备电量或者主板温度之类的消息来判断设备是否开机。
值得一提的是,在设备关机时,发送任意消息都会让设备开机。
无法通过GeoCom来获取设备本身是否水平
在一次测量过程中,我发现测量结果误差较大,在12月份左右居家办公的时候,我没有办法去办公室现场调试设备,后来询问同事之后得知,因为旁边另外一个设备安装时,没有足够的空间,因此稍微挪动了脚架的其中一个脚,导致设备不水平。这个在实际应用场景中非常致命,因为我们的设备长时间放置时,如果遇到一些震动或者建筑本身变形,极有可能会导致设备发生倾斜。而geocom口中没有获取仪器水平气泡的信息,无法第一时间了解到仪器的状态。当累计倾斜角超过一定数值时,会不可避免地导致仪器测量失真,因此需要人工频繁地检查仪器状态。
如果能有一个装置,能让自动调节放置在上面的设备水平角,并且可以连入物联网来进行远程的调控以及信息获取,那这个问题可以迎刃而解。
棱镜小角度辨别问题
在桥梁施工监控的过程中,在成桥之后需要对桥梁进行全桥测量。此时如果全站仪放置在岸边,会导致全站仪无法看到梁顶标高。因此全站仪只能放置在竖向位移偏小的桥墩处。但是这样会导致多个棱镜相对全站仪的角度偏小(如下图所示)
在这种情况下,在将仪器旋转至指定角度,并采用自动锁定时,会导致仪器锁到后面的棱镜,最终测量的结果是后面棱镜的结果。
解决的方案并不多,其中一个是增加棱镜和仪器的高差,保证两个棱镜之间有足够的角度。但是这种方案并不能很好地解决大跨桥梁的问题,而且仪器放置的越高,对仪器本身的维护、检查会更加麻烦,同时更高的高度意味着更大的变形。
另外一个解决方案是需要测量指定棱镜时,将其他棱镜的角度反转,从而让仪器捕捉不到其他的棱镜。但是这种方案会导致人工成本呈几何倍数的增加,需要测量的棱镜越多,需要进行操作的棱镜也就越多。
还有一个新方案是根据桥的跨度来部署仪器。当角度小于7分时采用另外一台设备来进行测量。这种方案也同样无法解决大跨桥梁的问题,而且这种方案也意味着需要购置的设备越多。
最好的解决方案还是,尽可能放置在岸边较高地势的位置,避免出现小角度测量多棱镜的情况;或者利用偏振片的原理来控制仪器测量指定棱镜,让仪器能够识别不同的棱镜。不过后者需要仪器设备厂商来进行调整。
其他因素的影响
车辆的震动,地面与空气的温差(尤其是在夏天)都会导致测量结果出现较大误差。因此在进行测量时,尽可能在阴天或者清晨进行测量来避免地面热浪导致空气折射率不规律地改变;同时多次测量取平均值。另外雾霾天气也会对仪器造成很大的影响。
另外顺便一提,徕卡在排除干扰这块做的相当不错。南方测绘的全站仪在自动识别棱镜时经常将光滑的镜面识别为棱镜,从而导致错误的锁定。而徕卡基本上不会将平面镜识别为棱镜,这对于建筑幕墙的测量相当好用 (徕卡打钱)。
徕卡成熟的技术和产品使得它在对标国内同类产品时具有更大的优势。不过国内大部分徕卡经销商提供的技术支持有限,而且很多服务以及手续比较复杂,收费也比较高,在采购具体的设备时希望能根据自身的项目情况来进行具体的挑选。
个人总结以及未来发展的方向
个人认为,为了避免我上面所说的一些问题,自动测量机器人的项目最适合来解决跨度不大的桥梁,或者一些建筑的项目。自动测量机器人实现远程测控这块的技术栈整个流程在行业内都算是相当成熟的,涉及到的数据量也非常小,因此开发成本不算很高,更多的考虑还是设备本身以及部分服务的费用。
感谢各位能看到这里,这应该是我最后一篇更新的徕卡geocom开发的文章了(主要是想做图传功能,结果发现单位没有购置相应的功能),之后的博客可能更多的会是一些个人的兴趣爱好方面的更新,更多的是充当一个自我学习的笔记来使用。