1.单网络节点系统
所谓节点简单而言就是指的具有收发数据功能的电脑或其他设备。一个好的节点既需要选择好的硬件的支持,也需要选择适合的软件控制[1],本文选择S3C6410的Arm11芯片作为节点CPU,选择WindowsCE 6.0作为运行在ARM上的嵌入式操作系统,通过网口,串口,SD卡完成相应的数据通信功能。本文研究的节点硬件结构框图如图1所示。
2.WinCE下网口数据传输程序设计
2.1 网口服务器程序设计
在利用套接字进行网络通信的实际应用中,一般采用的是服务器/客户端[2]
的模式,在本文的设计中,既研究了以PC机作为服务器端,以ARM作为客户端,又研究了以ARM作为服务器端,以PC机作为客户端。本文服务器设计的基本流程为:
利用函数socket()创建一个套接字,然后利用函数bind()将该套接字与本地(PC机)的IP地址和端口号绑定,接着利用函数listen()使该套接字处于监听状态,然后当等待到客户端的连接信号后,利用函数accept()与客户端连接,最后利用函数send()和函数recv()进行通信工作。当结束通信后,再利用函数closesocket()将套接字关闭。
2.2 本文的服务器端程序设计思想
本文的服务器端程序设计思想如图2所示。
3.WinCE下AD数据采集程序设计
3.1 ARM板AD采集器驱动程序设计
流接口驱动就是通过调用动态连接库的方式来加载硬件的功能,它由设备管理器直接调用。WinCE系统下的流接口驱动编写,有着固定的接口入口点,其接口点是一系列的类似于XXX_Open()结构的函数集。由这些函数集来调用系统的文件API函数和相应的组件。本文设计的是AD采集器的流接口驱动,接口入口点(即函数集)和用途如下所描述:
(1)函数ADC_Init(),该函数用于初始化AD采集器设备,为系统的设备管理器所调用。
(2)函数ADC_Denit(),该函数用于卸载AD采集器设备,为系统的设备管理器所调用。
(3)函数ADC_Open(),该函数用于打开AD采集器设备,被系统的文件API函数CreateFile()调用。
(4)函数ADC_Close(),该函数用于关闭AD采集器设备,被系统的文件API函数CloseHandle()调用。
(5)函数ADC_Read(),该函数用于从AD采集器读取数据,被系统的文件API函数ReadFile()调用。
(6)函数ADC_Write(),该函数用于向AD采集器写入数据,被系统的文件API函数WriteFile()调用。
(7)函数ADC_IOControl(),该函数用于对AD采集器进行I/O操作,被系统的文件API函数DeviceIOControl()调用。
需要提出来的是本文研究的A D采集器不涉及到电源管理和设备指针的操作。
而需要用到这两个方面操作的流接口设备驱动程序,还需要添加函数XXX_Seek(),函数X X X _ P o w e r D o w n ( ) 和函数X X X _PowerUp()。其作用分别是对XXX设备进行移动数据指针,休眠和恢复电源。
3.2 WinCE下四通道AD采集应用程序设计
本研究采用的ARM提供了四个外部的AD通道,可以利用这些通道实现四路对模拟数据的采集功能。通过EVC++编写应用软件调用AD流接口驱动程序,实现对模拟信号的采集,将采集的数据通过网口发送到PC机端。该设计采用多线程方式,使AD采集,数据处理,网口通信模块化,并采用双buff采集和发送的交互方式,保证了数据的不丢失性。网口通信模块直接运用前面设计的网口通信流程,数据处理模块主要是对采集得到的数字信号数据由分线程向外部buff传输,便于通信模块的使用。AD采集模块在线程内调用驱动程序,实现AD采集器的读取数据功能。
3.3 四通道AD数据采集实验实现及调试
利用以上的设计思路,本文实现了WinCE系统下AD数据采集的系统设计,其调试过程和实验结果如下:
首先将编写好的驱动程序加载到Win-CE6.0系统的内核中,重新编译系统,启动新编译成功的WinCE系统,可以在Windows文件夹下看到已经加载进去的驱动程序生成的动态链接库。
然后将编写好的对采集数据进行波形处理的网络程序在PC端启动,再将编写好的四通道采集程序下载到ARM板中并启动,设置好采样率和采样通道,输入通道选择0,采样频率设置为400000hz(该AD采集器最大采样频率为500khz)。调好信号源,选择正弦波,将信号电压幅度设为1.5v,最低电压为0v,信号频率为3000hz,输出信号线连接到ARM板的AD第0号通道接口,启动信号输入,在ARM端得到如图3的调试截图。
这是本文设计的运行在ARM板上的AD采集应用程序,可以通过启动,停止,关闭按钮来启动AD采集,暂停AD采集,关闭AD采集器的功能,还可以通过输入通道号码来选择采样的通道,输入采样率来选择采样频率。而上方控件显示的是一次采集的字节数目,在这里是2048字节,与程序实际设计的一致。通过AD采集器的正确工作,不仅说明了应用程序设计的正确性,同时也体现了AD采集器驱动程序设计的正确性。
4.结束语
本文通过研究WinCE下的网口通信,串口通信,SD卡数据存取和AD数据采集程序设计,系统地提供了Wince嵌入式系统下数据通信的一般编程方法。本论文实现了水下通信网络单节点内部数据的交互,主要包含以下内容:完成了ARM板通过网口与DSP通信的程序设计;完成了ARM板通过串口同时与PC机和姿态方位仪的数据通信的程序设计;完成了ARM板对SD卡的操作,实现了将DSP通过网口传输来的数据自动的储存在SD卡中,并能读取SD卡中的数据;完成了ARM11流接口AD驱动程序的设计和AD采集应用程序的设计。