Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2008, 18:16   #1
AsPeeD
Новичок
Джуниор
 
Регистрация: 01.04.2008
Сообщений: 2
Сообщение Программа-кодировщик(или Морзе возвращается!)

Доброе время суток.
Вот такая задачка мне попалась:
Дан русский текст(из файла, клавиатура). Требуется воспроизвести его звуковыми сигналами азбуки Морзе.
Предусмотреть возможность регулировки скорости воспроизведения и громкасти зукового сигнала.


Тело я нашол на вашем форуме, собственно вот:

Цитата:
procedure TForm1.Button6Click(Sender: TObject);
const
morse : array [192..223] of string[4]=('.- ','-...','.---','--. ',{А,Б,В,Г}
'-.. ','. ','...-','--..',{Д,Е,Ж,З}
'.. ','.---','-.- ','.-..',{И,Й,К,Л}
'-- ','-. ','--- ','.--.',{М,Н,О,П}
'.-. ','... ','- ','..- ',{Р,С,Т,У}
'..-.','....','-.-.','---.',{Ф,Х,Ц,Ч}
'----','--.-','-..-','-.--',{Ш,Щ,Ъ,Ы}
'-..-','..-.','..--','.-.-'{Ь,Э,Ю,Я}
);
{параметры передачи}
Tone=800; {частота сигнала (гц)}
L1=50; {длительность(мс) "точки"}
L2=100; {длительность(мс) "тире"}
L3=50; {пауза (мс) между точками и тире одной буквы}
L4=150; {пауза (мс) между буквами}
L5=200; {пауза (мс) между словами}
var mes,sim: string;
i,j,dl: integer;
begin
Edit2.SetFocus;
mes:=AnsiUpperCase(Edit2.Text);
for i:=1 to Length(mes) do
Begin
if (mes[i]>='А')and(mes[i] <='Я') then
Begin
Edit2.SelStart:=i-1;
Edit2.SelLength:=1;
{определим код очередной буквы (ф-я ORD) сообщения
и получим из таблицы кодировки соответсвующий
элемент массива - последовательность точек и тире }
sim:=morse[Ord(mes[i])];
Edit1.Text:=sim;
Application.ProcessMessages;
for j:=1 to 4 do
begin
dl:=0; //длительность звукового сигнала
case sim[j] of
'-': dl:=L2; //длительность тире
'.': dl:=L1; //длительность точки
end;
if dl>0 then
Windows.Beep(Tone,dl);
Sleep(L3); // пауза между точками, тире, пробелами
end;
Sleep(L4); {пауза между буквами}
end
else
if mes[i]=' ' then {пробел между словами}
Sleep(L5);
end;
Edit2.SelStart:=0;
Edit2.SelLength:=0;
Application.ProcessMessages;
end;

В Edit1 - обозначение букливицы в азбуке Морзе, в Edit2 - показывает озвучиваемую в данный момент букливицу...
Была попытка сделать Трэк бар для регулятора горомкости.
Для этого я подключал MMsystem, и использовал waveOutSetVolume:

Цитата:
procedure TForm1.TrackBar1Change(Sender: TObject);
var

Value: DWord;

begin

Value := $FFFF - TrackBar1.Position;

waveOutSetVolume(0, (Value SHL 16) + Value);

end;
....и работало...только не в рамках моей программы.
Как я понял есть спец выход для "Бипа": Pc Beep ( ), а MMsystem работает только с midi и Wave выходами.

Ну с чтением и сохранением в файл думаю справлюсь ,
а вот с регулятор скорости...

Жду ответа...

P.S. Вот если бы еще отдельно можно было бы устанавливать параметры передачи, то былобы вообще супер

Последний раз редактировалось AsPeeD; 01.04.2008 в 18:20.
AsPeeD вне форума Ответить с цитированием
Старый 01.04.2008, 18:34   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от AsPeeD Посмотреть сообщение
а вот с регулятор скорости...
P.S. Вот если бы еще отдельно можно было бы устанавливать параметры передачи, то былобы вообще супер
По-моему, я довольно подробно описал:
Цитата:
{параметры передачи}
Tone=800; {частота сигнала (гц)}
L1=50; {длительность(мс) "точки"}
L2=100; {длительность(мс) "тире"}
L3=50; {пауза (мс) между точками и тире одной буквы}
L4=150; {пауза (мс) между буквами}
L5=200; {пауза (мс) между словами}
Или вам нужны еще какие-то "супер-пупер параметры передачи"?
Или вы не в состоянии оформить изменение этих цифровых параметров через тот же бегунок?
А скорость разве не L2-4 определяют?

Чувствую, вам крайне необходимо срочно скачать книгу с сайта клуба:
http://programmersclub.ru/files/book1_100comp.rar

З.Ы. Можете, конечно, и обижаться, но поставленные вами вопросы никак не свидетельствуют о том, что вы ее читали...

Последний раз редактировалось mihali4; 01.04.2008 в 18:44.
mihali4 вне форума Ответить с цитированием
Старый 01.04.2008, 18:41   #3
AsPeeD
Новичок
Джуниор
 
Регистрация: 01.04.2008
Сообщений: 2
По умолчанию

Цитата:
Чувствую, вам крайне необходимо срочно скачать книгу с сайта клуба
Возможно.

Но всетаки мня больше интересует горомкость.
AsPeeD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
компьютер издает какую-то азбуку морзе - один длинный и два коротких гудка и не грузиться совсем Красавчег))) Свободное общение 13 18.01.2008 04:27
Программа ben95 Общие вопросы Delphi 1 04.01.2008 20:52
Программа на С++ natan Помощь студентам 1 23.12.2007 15:59
обновление в блоге - Рассылка возвращается! Pblog Обсуждение статей 0 03.08.2007 21:56