基于USB总线的多路电话录音系统
ADC_INT: CLRAD0INT;清ADC中断位
PUSHACC
PUSHPSW
PUSHB
PUSHDPH
PUSHDPL
MOVA,ADC_COUNTER
MOVB, #3
MULAB
MOV DPTR,#ADC_TAB
JMP @A+DPTR
ADC_TAB:
LJMP ADC_0
LJMP ADC_1
LJMP ADC_2
LJMP ADC_3
ADC_4:;查询电话状态
MOV ADC_COUNTER,#1
;将ADC切换至通道4
JMP ADC_INT_END
ADC_0:;读取电话1语音信号
;将ADC切换至通道5
JMP ADC_INT_END
ADC_1:;读取电话2语音信号
;将ADC切换到通道6
JMP ADC_INT_END
ADC_2:;读取电话3语音信号
;将ADC切换到通道7
JMP ADC_INT_END
ADC_3:;读取电话4语音信号
;将ADC切换至通道8
ADC_3_1:DEC A
JNZ ADC_3_2
;将ADC切换至通道1
JMP ADC_INT_END
ADC_3_2:DEC A
JNZADC_3_3
;将ADC切换至通道2
JMP ADC_INT_END
ADC_3_3:;将ADC切换至通道3
ADC_INT_END:INCADC_COUNTER
POPDPL
POPDPH
POPB
POPPSW
POPACC
RETI本文引用地址:https://www.eepw.com.cn/article/202542.htm
3.3 上位机应用程序的设计
系统选用 Visual C++ 6.0进行上位机应用程序的开发。程序采用多线程的思想,主线程为用户界面线程,负责应用程序与用户的交互;另外开辟一个工作线程,用于USB数据的传输。应用程序首先通过USBXpress提供的接口函数F32x_GetNumDevices()来取得当前连接的USB设备数。然后,根据获得的标识号利用接口函数F32x_Open()打开相应设备,并获得设备的句柄作为USB设备的标识。该句柄在程序中是独一无二的。这样,就可以调用F32x_Read()和F32x_Write()接口函数来读/写设备,控制数据的传输。为了准确读取录音数据,USBXpress提供了接口函数F32x_CheckRXQueue()来返回设备接收队列中的字节数,以确保录音数据的无差错传输。录音数据以PCM的格式存储在电脑硬盘中。
结语
该电话录音系统基于Silicon Laboratories公司提供的USBXpress软件开发包开发设计。开发调试简单、快捷,实现了四路电话同时录音,录音清晰,并实现了电话监听功能。通过对基于USB的多路电话录音系统的调试测试,证明了它不仅实现了基本的录音功能,达到了很好的录音效果,而且克服了以往传统方法的缺陷,实现了真正意义上的即插即用,极大地方便了用户使用。
评论