保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

USB便携式多道γ能谱仪的设计与实现


协议的自定义向量请求(Vendor Request)。由编译修改后的源代码即可得到驱动程序文件McaD12.SYS。

表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函数

API函数 功能说明 CreateFile 打开设备 ReadFile 从设读取数据 WriteFile 向设备发送数据 CloseHandle 关闭设备 DeviceIoControl I/O控制操作

本程序设计使用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页)》
本文链接地址:http://www.oyaya.net/fanwen/view/152537.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。