USB便携式多道γ能谱仪的设计与实现
表2 自定义IOCTL接口 自定义IOCTL接口 功能说明 Mca_IOCTL_START 启动多道采集数据 Mca_IOCTL_READ 开始读取数据 Mca_IOCTL_START 停止多道数据
2.3 USB应用程序的设计
应用程序的设计在Visual C++6.0开发环境下进行。根据实际要求,本设计需要在软件中对采集的数据进行整理、分析并显示。其功能模块主要有数据采集、谱数据显示、ROI操作、系统刻度、谱分析等,其结构框图如图5所示。
在Win32系统中,USB设备被抽象为一个文件,应用程序只需要通过几个API函数就可以实现与驱动程序中USB设备的通信。API函数如表3所示。
表3 设备文件操作API函数
本程序设计使用MFC多线程技术。单击开始按钮,程序就创建一个用户接口线程,并且通过IOCTL启动USB设备,然后在此线程每隔一定时间(10~20ms)从USB总线上读取一次数据;而程序自身的主线程则不断地依据读取的数据刷新屏幕,显示多道能谱。当单击停止按钮或是设定采集时间到时,程序则通过IOCTL停止USB设备的数据采集,终止用户接口线程,并且停止屏幕谱线的更新。
当创建用户接口线程时,首先从CwinThread类派生一个CioThread类,然后调用AfxBeginThread()函数创建CioThread类的对象进行初始化,启动线程运行。根据需要可将初始化和结束代码分别放在类的InitInstance()和ExitInstance()函数中。其中,InitInstance()函数是从USB采集数据的线程的主要函数。从中实现对IOCTL的调用、对USB设备数据的读取等功能。其流程如图6所示。
3 测试与结论
实测Cs放射源γ能谱如图7所示。根据能量为0.6641MeV的谱峰,系统可以自动计算能量分辨率,实测能量分辨率小于10%。
经过严格测试,该系统其它主要技术指标为:γ射线能量分析范围为20keV~3.0MeV; γ能谱分析道数为1024道;放射源能量非线性系数小于5%;使用NaI(T1)探测器时,整机功耗小于960mW;实测USB最大数据传输速率约为1Mbps;连续测量数据符合放射性统计涨落规律;设备驱动及应用程序兼容Win98/2000/XP。
上述结果表明,本系统的技术路线和软硬件设计先进,方案合理,并具有一定的创新性和实用价值。对本系统编译稍加修改便可应用于其它基于微机的数据采集、自动化测控系统中。
《USB便携式多道γ能谱仪的设计与实现(第3页)》