示例#1
0
// Release wave in memory
int ReleaseWaveIn(HWAVEIN* hWaveIn, WAVEHDR* waveHeader)
{
	int res;

	res = waveInUnprepareHeader(*hWaveIn, waveHeader, sizeof(WAVEHDR));
	if ( res != MMSYSERR_NOERROR ) 
	{
		_debug_print("UnPrepare Wave In Header FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("UnPrepare Wave In Header SUCCEED!");
	}

	res = (int)GlobalFree(GlobalHandle( waveHeader->lpData ));
	if ( res != MMSYSERR_NOERROR )
	{
		_debug_print("Global Free FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("Global Free SUCCEED!");
	}

	return 0;
}
示例#2
0
// Open wave input channel
int OpenWaveIn(HWAVEIN* hWaveIn, WAVEFORMATEX* wf)
{
	int res;
	char lpTemp[256];

	res = waveInGetNumDevs();
	if (! res )
	{
		_debug_print("Access WaveIn channel FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("Access WaveIn channel SUCCEED!");
	}

	// Open wave input channel
	res = waveInOpen(hWaveIn,WAVE_MAPPER, wf, (DWORD)NULL,0L,CALLBACK_WINDOW); 
	if ( res != MMSYSERR_NOERROR )
	{
		sprintf(lpTemp, "Open wave input channel FAILED£¬Error_Code = 0x%x", res );
	    _debug_print(lpTemp,1);
	   return -1;
	}
	else
	{
		_debug_print("Open wave input channel SUCCEED!");
	}
	return 0;
}
示例#3
0
// Close Wave in channel
int CloseWaveIn(HWAVEIN* hWaveIn)
{
	int res;

	res = waveInClose(*hWaveIn);
	if(res != MMSYSERR_NOERROR)
	{
		_debug_print("Close wave in FAILED!",1);
	}
	else
	{
		_debug_print("Close wave in SUCCEED!");
	}
	return 0;
}
示例#4
0
// Start recording speech
int StartRecord(HWAVEIN* hWaveIn)
{
	int res;

	res = waveInStart(*hWaveIn);
	if(res != MMSYSERR_NOERROR)
	{
		_debug_print("Start recording FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("Start recording...",1);
	}
	return 0;
}
示例#5
0
uint8_t gsm_http_read(void)
{
	_gsm_print("AT+HTTPREAD\r");
	gsm_read_resp(gsm_buff, 1000);
	_debug_print(gsm_buff);
	return 1;
}
示例#6
0
// Prepare Wave In Header and allocate memory
int PrepareWaveIn(HWAVEIN* hWaveIn, WAVEHDR* waveHeader, DWORD dataSize)
{
	int res;
	char lpTemp[256];

	waveHeader->dwBufferLength = dataSize;
	waveHeader->dwBytesRecorded = 0;
	waveHeader->dwUser = 0;
	waveHeader->dwFlags = 0;
	waveHeader->dwLoops = 0;
	waveHeader->lpData = (char *)GlobalLock( GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE, dataSize) );
	memset(waveHeader->lpData, 0, dataSize );

	// Prepare Header
	res = waveInPrepareHeader( *hWaveIn, waveHeader, sizeof(WAVEHDR) ); 
	if ( res != MMSYSERR_NOERROR)
	{
		sprintf(lpTemp, "Cannot prepare wave in header£¬Error_Code = 0x%03X", res );
		_debug_print(lpTemp,1);
		return -1;
	}
	else
	{
		_debug_print("Prepare wave in header SUCCEED!");
	}

	res = waveInAddBuffer( *hWaveIn, waveHeader, sizeof(WAVEHDR) );
	if ( res != MMSYSERR_NOERROR) 
	{
		sprintf(lpTemp, "Cannot add buffer for wave in£¬Error_Code = 0x%03X", res );
		_debug_print(lpTemp,1);
		return -1;
	}
	else
	{
		_debug_print("Add buffer for wave in SUCCEED!");
	}
	return 0;
}
示例#7
0
// Save recorded speech to file
int SaveRecordtoFile(const char* fileName, WAVEFORMATEX* wf, HWAVEIN* hWaveIn, WAVEHDR* waveHeader, MMTIME* mmTime)
{
	int res;
	DWORD NumToWrite=0;
	DWORD dwNumber = 0;

	waveHeader->dwBytesRecorded = mmTime->u.cb;
	
	HANDLE FileHandle = CreateFile( CString(fileName), GENERIC_WRITE, 
		FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

	dwNumber = FCC("RIFF");
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	dwNumber = waveHeader->dwBytesRecorded + 18 + 20;
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	dwNumber = FCC("WAVE");
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	dwNumber = FCC("fmt ");
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	dwNumber = 18L;
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	WriteFile(FileHandle, wf, sizeof(WAVEFORMATEX), &NumToWrite, NULL);

	dwNumber = FCC("data");
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	dwNumber = waveHeader->dwBytesRecorded;
	WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);

	WriteFile(FileHandle, waveHeader->lpData, waveHeader->dwBytesRecorded, &NumToWrite, NULL);
	SetEndOfFile( FileHandle );
	CloseHandle( FileHandle );
	FileHandle = INVALID_HANDLE_VALUE;
	
	_debug_print("SaveRecordtoFile SUCCEED!",1);

	return 0;
}
示例#8
0
// Stop recording speech
int StopRecord(HWAVEIN* hWaveIn, MMTIME* mmTime)
{
	int res;

	res = waveInGetPosition(*hWaveIn, mmTime, sizeof(MMTIME));
	if(res != MMSYSERR_NOERROR)
	{
		_debug_print("Get Position of wave in FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("Get Position of wave in SUCCEED!");
	}

	res = waveInStop(*hWaveIn);
	if(res != MMSYSERR_NOERROR)
	{
		_debug_print("Stop recording FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("Stop recording SUCCEED!");
	}

	res = waveInReset(*hWaveIn);
	if(res != MMSYSERR_NOERROR)
	{
		_debug_print("Reset wave in memory FAILED!",1);
		return -1;
	}
	else
	{
		_debug_print("Reset wave in memory SUCCEED!");
	}

	return 0;
}