|
| API 函数实现E1 数据的存储 |
| 作者:本站 来源:转载 发布时间:2008-7-24 7:50:53 发布人:guo8130 |
减小字体
增大字体
|
|
摘 要:E1 是2M/s 的数据流,对E1 的应用可分为多种方法,例如将整个2M 用作一条链 路,或者将2M 用作若干个64k 及其组合,但是实现对E1 的存储是数据通信中迫切需要解 决问题。本论文介绍了一种捕获E1 数据的方法。该方法借助DN600 硬件平台,该硬件平台 可以将E1 数据通过PCI 总线传入PC 机,通过VC 开发环境编写了相关的应用软件,在软 件的控制下,实现了对E1 数据的存储。该软件可以对E1 数据进行分析和处理,主要包括 提取组合时隙、查找和修改时隙、以及重放某个时隙。软件还可以以16 进制和2 进制显示 捕获的部分E1 数据。 关键词:E1;时隙;存储;DN600;分析 中图分类号: 1. 引言 VC 编程可以实现许多功能,诸如播放音频/视频文件、会话通讯等等,但是在存储E1 数据时,由于数据流过大,内存不够占用,需要特殊的方法实现。本文通过VC 编程调用WINDOWS API 函数实现对E1 数据的存储,并且对存储下来的数据进行分析。 2. DN600 硬件平台简介 DN600 是插在计算机PCI 插槽的一块板卡。该卡上有8 个DSP 处理芯片,采用DSP 架 构,处理能力强大,减轻了主机CPU 的负担。一端是E1 接口,数据流从此接口输入;另一 端是PCI 插槽,经过PCI 总线将数据传入内存,在应用程序的支撑下实现数据的存储。 图1 DN600 板卡示意图 3. VC 程序设计 VC 程序是一种基于对话框的编程。程序分为三大模块:存储模块、数据分析模块和显 示模块[1] 。 3.1存储模块 在硬件板卡启动后,选择E1 号(有0、1 和所有E1 三种选择)、定界字符(定界字符为 16 进制,比如0x12345678,在界面上只需填入”12345678”,不需换算成10 进制)、保存的 文件夹路径,点击”捕获”按钮,开始捕获,同时显示部分会显示对应通道在“捕获数据中”。
- 2 - 3.2数据分析模块 该模块实现对数据的提取、修改、查找和语音重放功能。 选择源文件名、开始帧号(多个开始帧号;隔开)、要提取的帧数(不同时;隔开,注 意起始帧号间隔)、时隙号(多个时隙中间用分号;隔开),如果需要也可对提取出的文件命名。 点击”提取”按钮,即可实现对指定数据的提取功能。 选择文件名、开始帧号、修改的帧数、时隙号(多个时隙中间用分号;隔开)、要修改的数 据(数据为16 进制,比如0x12345678,在界面上只需填入”12345678”,不需换算成10 进制, 并且时隙号的数量要和要修改的数据对应,比如时隙号为:1,数据则为xx;时隙为:1;2, 数据则为xxyy;时隙号为:1;2;3,数据则为xxyyzz;时隙号为:1;2;3;4,数据则为aabbccdd, 可以多个时隙号修改的数据相同,比如,时隙号为1;2;3;4,数据为xx) 点击”修改”, 即可 实现对指定数据的修改功能。 输入文件名、开始帧号、显示帧数、要查的数据,点击查找后,显示查找到的信息。点 击属性后,显示文件中该数据出现的次数。 选择通道号或提取的文件、文件名、开始帧号、播放帧数,点击”重放”按钮,从声卡播 放相应的音频数据。 3.3显示模块 选择文件名、开始帧号、显示的帧数,点击”显示”按钮后,分别以16 进制和2 进制在 数据显示部分显示,由于2 进制的数据比较长,所以分成两行显示,每行16 个字节。点击 属性,显示所显示的数据信息。输入要跳到的帧数,点击跳到。跳到制定帧的位置,并且高 亮显示该帧。 4. API 函数调用 在DJDBDK3.4.0 基础上安装DJDBDK_SPBY 后,可以实现每个E1 捕获31 个时隙的数 据。 设计程序需要使用system32 下的动态库tce1_32.dll,DJDBDK\Inc 下的tce1_32.h 和 DJDBDK\Lib 下的tce1_32.lib 三个文件[2]。 程序使用轮询捕获数据。建议200ms 以上轮询一次。 需要使用的函数如下: 1.int WINAPI DJSys_EnableCard( const char* configFile, /*INPUT*/ const char*promptVoiceIdxFile /*INPUT*/ ); 参数说明: configFile:INI 系统配置文件名,一般为:空串””; promptVoiceIdxFile:提示音对照表文件名,一般为:一般使用”PROMPT.INI” 返回值: 0:成功 其他:失败
- 3 - 何时调用: 程序初始化的时候调用。 是否必需: 是必需,其他函数必须在DJSys_EnableCard 调用成功后调用才有意义。 2.void WINAPI DJSys_DisableCard(void); 参数说明: 无 返回值: 无 何时调用: 程序退岀的时候调用。 是否必需: 是必需,DJSys_DisableCard 才能释放DJSys_EnableCard 分配的资源。 3.void WINAPI DJSys_PushPlay(void); 参数说明: 无 返回值: 无 何时调用: 程序大循环里调用。 是否必需: 是必需,只有循环调用DJSys_PushPlay,才能正确检测到告警。 4.int WINAPI DJTrk_GetTotalTrunkNum(void); 参数说明: 无 返回值: 系统内的通道总数。除以30 就得到PCM 数。
- 4 - 何时调用: 获取系统内PCM 数时调用。 是否必需: 是必需,只有调用此函数,才能获取系统内PCM 数。 5.void WINAPI DJSys_DisableWarn(void); 参数说明: 无 返回值: 无 何时调用: 当东进中继语音卡上的任一PCM 中继出现故障时,系统会使PC 机的扬声器将报警, 这些故障包括:失去帧同步、失去复帧同步。 注意:如果在机器内有多于一个PCM,任意一个PCM 发生故障,都会导致PC 机的喇 叭报警。 调用本函数,禁止扬声器报警功能。即使某一PCM 出现故障,扬声器也不会报警。 是否必需: 不是必需。 6.int WINAPI DJTrk_GetE1Data( int trunkID, /*INPUT*/ BYTE *pData /*OUTPUT*/ ); 参数说明: trunkID:E1 号(从0 开始编号); pData:获取到数据;必须由应用程序分配空间。建议大小为2M; 返回值: 获取到数据的长度 何时调用: 获取数据时调用 是否必需: 是必需。
- 5 - 7.int WINAPI DJTrk_SendE1Data( int trunkID, /*INPUT*/ BYTE *pData, /*INPUT*/ int iLength /*INPUT*/ ); 参数说明: trunkID:E1 号(从0 开始编号); pData:要发送到数据;建议大小为2M; iLength:要发送到数据长度; 返回值: 0:成功 其他:失败 何时调用: 发送数据时调用 是否必需: 是必需。 5. 总结 对E1 数据的存储可以有很多种实现方法,例如将E1 转换位以太网,然后导入计算机 内存,实现存储。本文独辟蹊径,采用PCI 总线,通过硬件平台DN600 借助VC 编程实现 改功能。攻克了诸如内存不足,大文件读写的难题。 参考文献 [1] 任哲 《MFC Windows 应用程序设计》 清华大学 [2] 王海龙 董智勇 董跃钧《Visual C++ 6.0 设计师之路 》 电子工业出版社计 Storage and Analyse of Data E1 on Hardware Platform DN600 Li Haiwei, Zhang Minglun Key laboratory of optical communication and lightwave technologies ministry of education in BUPT (100876) Abstract E1 is a data stream of 2 M/s,many methods can apply to E1,for example using E1 as a link of 2 M/s ,or treat it as a component of several 64k datas,it is a urgent problem to solve in data communication that we storage the data of E1.In this paper we introduce a method to capture data of E1.Under hard platform DN600,which can import E1 to PC via PCI bus,it realizes the record of E1 data by VC programming a relating sofware.The software may analyse and dispose the data, mainly including pick-up and combination of time slots、search and modification of time slots、and replay of a time slot.This software could disply partial E1 data by binary system or hexadecimal too. Keywords: E1; Time Slot; Storage; DN600; Analyse |
|
| []
[返回上一页]
[打 印]
[收 藏] |
|
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|
|
|