昨天经过“鉴定”确实为程序读取缓冲区过慢导致数据包丢失,那就尽量的提高读取速度。
好,这次我专门用一个线程来检查是否有消息,全部用后天方式处理,避免了因为windows系统本身的非实时性导致数据的不同步。
并且,我换了一台酷睿2双核,2GB内存的电脑来跑。效果真的有很多的提高,原来发送一条指令要耗时很多,看出来是在一卡一卡,现在要好多了~
1553B通信的问题就暂时告一段落,接下来就是针对ARINC661标准进行分析了。
ARINC 661-3标准中的第四章专门讲了如何通信,即基于现有的传输层传输所谓ARINC661指令包,标准中关于如何传输或者实现细节并未规定,也就是说,即使用网线TCP/IP来传输ARINC661指令包也不不违反标准的,但是前提是你所发送的数据包要和ARINC661中规定的相同。
那么,所有的工作就集中在将有效信息打包成ARINC661指令数据包上了。ARINC661指令共有5种,CDS方面有“窗体部件事件”“出错信息”“层通知”三种,UA方面有“参数设置”“请求”两种指令,这样只需按照标准中规定的数据结构,将有效信息打包或解包即可。这里就没有什么比较高深的技术来,因为ARINC661标准写的真的很想系了。
这部分做好之后,就可以通过自定义的基于1553B的传输层来传输ARINC661指令了。