Система регистрации речи диспетчерских переговоров

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



;VolGain,HandSetGain,0)/2);

ConfigFile.Free;

except

errormsg(Ошибка загрузки конфигурации!);

Application.Terminate;

end;

end;

//открытие базы данных

Datamodule1.WavBase.Open;

if not Datamodule1.WavBase.Active then begin

errormsg(Ошибка открытия базы данных!);

Application.Terminate;

end;

end;

////////////////////////////////////////////////////////////////////////////

//при закрытии формы и всей проги

procedure TSysWaves.FormDestroy(Sender: TObject);

begin

//отключаем ТAPI (интерфейс, устройства)

TAPIPhoneService1.Active:=false;

TAPILineService1.Active:=false;

TAPILine1.Active:=false;

TAPIPhone1.Active:=false;

//если идет запись остановить ее

if FRecorderMode = recModeRecord then StopWaveRecord

//если идет проигрыш остановить его

else if FRecorderMode = recModePlay then StopWavePlay;

// Освобождение памяти, связанной с wav буферами.

DestroyWaveRecorder;

end;

//////////////////////////////////////////////////////////////////////////

//Вывод информациии о программе

procedure TSysWaves.About1Click(Sender: TObject);

begin

Abouts.ShowModal;

end;

////////////////////////////////////////////////////////////////////////////

//при нажатии Выход

procedure TSysWaves.exit1Click(Sender: TObject);

begin

close;

end;

{********************работа с модемом***************************************}

//при удаление устройства из системы

procedure TSysWaves.TAPILineDevice1StateReMoved(Sender: TObject);

begin

errormsg(Устройство было удалено из системы. Программа будет закрыта);

Application.Terminate;

end;

/////////////////////////////////////////////////////////////////////////////

//набор номера(запрос на соединение)

procedure TSysWaves.DialNoClick(Sender: TObject);

begin

DialNo.Enabled:=false;

CancelNo.Enabled:=true;

//проверка настройки тонального или импульсного набора номера

if FPulse then TAPIAddress1.OutboundCall.MakeCall(TAPILine1.Handle,p+ CallNo.Text,0)

else TAPIAddress1.OutboundCall.MakeCall(TAPILine1.Handle,t+ CallNo.Text,0)

end;

////////////////////////////////////////////////////////////////////////////

//отмена набора номера и соединения

procedure TSysWaves.CancelNoClick(Sender: TObject);

begin

Display(Идет отмена вызова...);

TAPICall1.Drop;//понижение статуса вызова

DialNo.Enabled:=true;

CancelNo.Enabled:=false

end;

/////////////////////////////////////////////////////////////////////////////

//при состоянии соединения модема с удаленным телефоном

procedure TSysWaves.TAPICall1StateConnected(Sender: TObject;

ConnectedMode: TLineConnectedModes; Rights: TLineCallPrivilege);

begin

Display(Соединение...);

TAPIPhone1.SpeakerHookSwitchMode:=phsmMicSpeaker;//включаем общую связь

TAPIPhone1.SpeakerVolume:=65000;

TAPIPhone1.SpeakerGain:=65000;

TAPIPhone1.HeadSetHookSwitchMode:=phsmMicSpeaker;//включаем наушники

TAPIPhone1.HandSetHookSwitchMode:=phsmMicSpeaker;//включаем микрофон

//установка громкости наушников и микрофона

TAPIPhone1.HeadSetVolume:=VG[1];

TAPIPhone1.HeadSetGain:=VG[2];

TAPIPhone1.HandSetGain:=VG[3];

TAPIPhone1.HandSetVolume:=VG[4];

//если идет запись

if FRecorderMode <> recModeOff then // остановить запись

StopWaveRecord

elsebegin

Display(Идет запись...);

//делаем записи в базе данных

Datamodule1.WavBase.Insert;

Datamodule1.WavBase.FieldByName(DateName).AsDateTime:=Date;//дата

Datamodule1.WavBase.FieldByName(TimeName).AsDateTime:=Time;//время

//имя пользователя

Datamodule1.WavBase.FieldByName(UserName).AsString:=VarS.UserName.Text;

FTimeCounter:=0;//обнуляем счетчик времени

StartWaveRecord; // начать запись

end;

end;

/////////////////////////////////////////////////////////////////////////////

//при состоянии разъединения модема с удаленным телефоном

procedure TSysWaves.TAPICall1StateDisconnected(Sender: TObject;

DisconnectedMode: TLineDisconnectMode; Rights: TLineCallPrivilege);

begin

Display(Соединение разорвано);

//если идет запись

if FRecorderMode <> recModeOff then //остановить запись

StopWaveRecord;

//если время разговора >= времени регистрации

if FTimeCounter >= FTimeReg then begin

SaveWaveFile;//сохранить файл с звуковыми данными

Datamodule1.WavBase.Post;//запись внесенных изменений в базу данных

end

else

Datamodule1.WavBase.Cancel;//отмена изменений внесенных в текущую запись

Answer.Enabled:=true;

HandsetDown.Enabled:=false;

TAPICall1.Drop;//понижение статуса запроса

end;

/////////////////////////////////////////////////////////////////////////////

//сообщение о наборе номера

procedure TSysWaves.TAPICall1StateProceeding(Sender: TObject;

Rights: TLineCallPrivilege);

begin

display(Идет набор номера + CallNo.Text);

end;

///////////////////////////////////////////////////////////////////////////////

//при состоянии звонка

procedure TSysWaves.TAPILineDevice1StateRinging(Sender: TObject;

RingModeIndex, RingCounter: Cardinal);

begin

display(Звонок...);

Windows.Beep(300, 500);//подача звукового сигнала через встроенный динамик

Windows.Beep(350, 500);

//если режим ответа модема - авто

if FAutoAnswer then begin

//если кол-во принятых звонков >= заданных

=TAPIAddress1.NumRingsthenbegin"> if RingCounter >= TAPIAddress1.NumRings then begin

Answer.Enabled:=false;

HandsetDown.Enabled:=true;

TAPIAddress1.InboundCall.Answer;//модем берет трубку

end;

end

end;

/////////////////////////////////////////////////////////////////////////

//при поступлении информации о входящем звонке

procedure TSysWaves.TAPICall1InfoCallerId(Sender: TObject);

begin

//если есть информация о входящем звонке

thenbegin"> if TAPICall1.Info.CallerID <> then begin

display(Входящий звонок с номером + TAPICall1.Info.CallerID);

end;

end;

////////////////////////////////////////////////////////////////////////////

//пользователь берет трубку

procedure TSysWaves.AnswerClick(Sender: TObject);

begin

Answer.Enabled:=false;

HandsetDown.Enabled:=true;

TAPIAddress1.InboundCall.Answer;//модем берет трубку

end;

////////////////////////////////////////////////////////////////////////////

//пользователь положил трубку

procedure TSysWaves.HandsetDownClick(Sender: TObject);

begin

Answer.Enabled:=true;

HandsetDown.Enabled:=false;

TAPICall1.Drop;//понижение статуса запроса

end;

////////////////////////////////////////////////////////////////////////////////

//отчистка набираемого номера

procedure TSysWaves.ClearNoClick(Sender: TObject);

begin

CallNo.Clear;

end;

//при состоянии поступления предложения запроса

procedure TSysWaves.TAPICall1State