Система регистрации речи диспетчерских переговоров
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
;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