2008年5月15日修正版

利用频谱仪进行电磁干扰测试时,考虑到显示效果,点击测试对话框的“开始”按钮之后视图应该立刻切换到对数坐标系而不是等待测试完成后才切换,因此,必须采用多线程测试方式,也即,需要增加一个测试线程用来向频谱仪发送测试指令。该测试线程定义为CTestThread,由MFCCWinThread派生而来。主线程(在本程序中为CChildFrame类)和辅助线程(CTestThread)之间利用消息进行通信,消息处理函数的参数用来传递测试工程设置数据的指针。

另一方面,根据GJB152A-97《军用设备和分系统电磁发射和敏感度测量》规定,在不同的测试频段,接收机的6dB带宽(RBW)必须采用不同的数值,如下表所示:

 

频率扫描测量6dB带宽

频率范围

6dB带宽

30Hz1KHz

10Hz

110KHz

100Hz

10250KHz

1KHz

250KHz30MHz

10KHz

30MHz1GHz

100KHz

>1GHz

1MHz

如果一次测试横跨多个频段,那么就必须分为多段进行测量。另外,由于接收机或频谱仪一般为数字设备,受限于测量仪器的测量采样精度,如果频段较宽,因为一次测量采样点数是固定的(本文所用频谱仪一帧采样501个点),此时往往也需要将整个测试频段划分为几个更小的频段分段测量。本文中将这样的划分后的一个小频段称为一帧。

综上所述,一次测试是一个多线程逐帧测试的过程。辅助线程CTestThread用于向频谱仪发送测试指令,发送完一段测试指令,便休眠等待;主线程CChildFrame接收测试结果(ASCII格式),接收完一帧向辅助线程发送消息进行下一段测试,同时发送消息更新CEMCView中的测试曲线。测试流程如下图所示:

以下为最初的版本,予以保留。

################ 关于多线程测试方法的说明 ################

      利用频谱仪进行电磁干扰测试时,考虑到显示效果(点击“开始测试”按钮之后视图立刻切换到对数坐标系而不是等待测试完成后才切换),必须采用多线程方式,也即,增加一个TestThread用来向频谱仪发送测试指令。
       主线程和辅助线程(CTestThread)之间利用消息通信。根据GJB规定,CE102测试在10KHz~1000MHz之间需要分为三段:10KHz~250KHz(RBW:1KHz)、250KHz~30MHz(RBW:10KHz)、30MHz~1GHz(RBW:100KHz)。因此,一次测试工程势必要分为多段测量。辅助线程用于向频谱仪发送测试指令,发送完一段测试指令,便休眠等待;主线程接收测试结果(ASCII格式),接收完一帧向辅助线程发送消息进行
下一段测试。辅助线程也可以通过::PostMessage函数向主线程发送消息。
      测试流程如下图所示:


   file="/Best4cUserFiles/20080503/17143_1209816609220";showImage();    如需源代码,请联系本人。

PS:今天本人第一次使用CSDN的Best4c画流程图,很是惊异于网络编程的强大,难怪微软深刻感到Google等公司的在线Office的压力,也要推出自己的Live Office呢。(貌似Best4c采用了Adobe的Flex技术?请求达人指教)但是必须指出的是,Best4c在很多方面还不够理想,仍需努力……