Разработка программного имитатора цифрового канала связи с применением помехоустойчивого кодирования
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
p;
Функция lowpassf осуществляет цифровую фильтрацию сигнала. Тип фильтра - фильтр нижних частот. Входные параметры: isignal - массив дискретов модулированного сигнала, osignal - массив дискретов демодулированного сигнала, N - количество дискретов, dfreq - частота дискретизации, freq_cut - частота среза, order - порядок фильтра.
procedure lowpassf;:TReal1DArray;, j :AlglibInteger;:Real;:= 0;:= exp(-2 * PI * freq_cut / dfreq);:= Copy(isignal);(osignal, N);(inputsignal, N);i 0 then[j] := osignal[j] + alpha * osignal[j - 1];(j);;:= Copy(osignal);
inc(i);;;
Функция dac осуществляет цифро-аналоговое преобразование. Входные параметры: level - оцифрованный уровень.
procedure dac;_gl.dac_res.level := level;_gl.dac_res.discret := (Int64(dac_gl.dac_res.level) + 1);_gl.dac_res.discret := dac_gl.dac_res.discret *_gl.level_height +_propertion.minvalue - dac_gl.level_height / 2;
dac_savetofile;;
Функция logit осуществляет протоколирование работы ПО. Входные параметры: event_str - протоколируемое сообщение.
procedure logit;:string;:= FormatDateTime('dd.mm.yy hh:nn:ss', now);(logfile, Format('%s >%s', [sdate, event_str]));
fflush(logfile);;
Функция logout осуществляет завершение работы ПО.
procedure logout;blogin thencuruser do(Format('Пользователь%s закончил работу', [userl]));ReadIni(combinepath(cworkdir, 1, [proffile]), 'main', 'permanent') <> '1' then(cworkdir, true, true, true);;;;:= False;;
end;
Функция truecrypt осуществляет шифрование MD5. Входные параметры: login - имя пользователя, passw - пароль пользователя, fit - тип шифруемой информации (файл, строка). Возвращаемое значение - MD5-строка.
function truecrypt;:array[1..10] of char = '#!@~&$%?^*';:TMD5Digest;:TMD5Digest;:string;:string;:string;, n :LongInt;fit then:= MD5File(passw):= MD5String(passw);:= MD5String(LowerCase(MD5DigestToStr(MD5String(login))) +(MD5DigestToStr(crypto)));:= LowerCase(MD5DigestToStr(crypted));:= LowerCase(MD5DigestToStr(crypto));:= Length(crypt1);:= '';i := 1 to n do(ord(crypt2[i]) >= ord('0')) and (ord(crypt2[i]) = ord('a')) and (ord(crypt2[i]) <= ord('d')) then:= crypt3 + UpperCase(crypt1[i]):= crypt3 + crypt1[i];;:= MD5String(crypt3);;
Функция loginto осуществляет аутентификацию и авторизацию пользователя. Входные параметры: login - имя пользователя, passw - пароль пользователя. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.
function loginto;:string;:string;not chkprofile(login) then:= False;;;:= combinepath(curuser.profdir, 2, [login, curuser.proffile]);:= ReadIni(fname, 'main', 'userid');MD5DigestCompare(md5fromstr(userid), truecrypt(login, passw)) then.userl := login;:= True;else:= False;:= Result;;
Функция newreg осуществляет создание нового пользователя. Входные параметры: login - имя пользователя, passw - пароль пользователя. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.
function newreg;
var:string;chkprofile(login) then:= False;;;not CreateDir(combinepath(curuser.profdir, 1, [login])) then:= False;;;:= combinepath(curuser.profdir, 2, [login, curuser.proffile]);(fname, 'main', 'userid', MD5DigestToStr(truecrypt(login, passw)));(fname, 'graph', 'xywidth', '1');
Result := True;;
Функция draw_xy осуществляет рисование линии на графике. Входные параметры: x - координата по оси X, y - координата по оси Y. Возвращаемое значение 0 - удачное, 1 - неудачное завершение операции.
function TMGraph.draw_xy;config do.Pen.Width := xywidth;(npoint = 1) then_o := round(xen + (x - xn) / mx);_o := round(yen - (y - yn) / my);
point(xe_o, ye_o);
end else:= round(xen + (x - xn) / mx);:= round(yen - (y - yn) / my);((xe = xe_o) and (ye = ye_o)) then:= -1;;;(xe_o, ye_o, xe, ye);
xe_o := xe;_o := ye;
end;:= npoint + 1;;:= 0;;
Функция draw_axis осуществляет рисование осей графика.
procedure TMGraph.draw_axis;, y :real;,:integer;, hy :real;:integer;:string;config do:=xn;:=(xk-xn)/(kdx-1);:=yn;:=(yk-yn)/(kdy-1);.Pen.Width := 2;(xen, yek, xek, yen);:= round (xen+(0-xn)/mx);:= round (yen-(0-yn)/my);i:=1 to kdx do:= Round (xen+(x-xn)/mx);(xe, yen, xe, yen + 5);(x * kux:5:2, xyst);.TextOut(xe - 10, yen + dyen div 2, xyst);:= x + hx;;i:=1 to kdy do:= Round (yen-(y-yn)/my);(xen, ye, xen - 5, ye);(y * kuy:5:2, xyst);.TextOut(xen - dxen, ye - 6, xyst);:= y + hy;;.Pen.Width := 1;
end;;
Функция addbyte осуществляет добавление байта в таблицу. Входные параметры: row - строка таблицы, byte - добавляемый байт, color - цвет байта, gridnumber - номер таблицы.
procedure Tgridform.addbyte;:Integer;gridnumber of
:i := tables_propertion.cont1.size.colcount - 1 downto 0 do.grid1.Cells[ tables_propertion.cont1.size.colcount - i, row + 1] :=((byte shr i) and 1);_propertion.cont1.cellscolor[_propertion.cont1.size.colcount - i, row] := color;;
:i := tables_propertion.cont2.size.colcount - 1 downto 0 do.grid2.Cells[ tables_propertion.cont2.size.colcount - i, row + 1] :=((byte shr i) and 1);_propertion.cont2.cellscolor[_propertion.cont2.size.colcount - i, row] := color;;
:i := tables_propertion.cont3.size.colcount - 1 downto 0 do.grid3.Cells[ tables_propertion.cont3.size.colcount - i, row + 1] :=((byte shr i) and 1);_propertion.cont3.cellscolor[_propertion.cont3.size.colcount - i, row] := color;
end;;;
Функция sinus вычисляет значение гармонического сигнала при заданных параметрах в конкретный момент времени. Входные параметры: Amplitude - амплитуда, f - частота, t - текущие время. Возвращаемое значение - значение сигнала.
function sinus;:= roundto(Amplitude * sin(2 * PI * f * t), -9);;
Функция rect вычисляет значение прямоугольного сигнала при заданных параметрах в конкретный момент времени. Входные параметры: Amplitude - амплитуда, tperiod - период, pulse_ratio - скважность, t - текущие время. Возвращаемое значение - значение сигнала.
rect;abs(realmod(t, signal_propertion.tperiod)) <_propertion.tperiod / signal_propertion.pulse_ratio then:= Amplitude:= 0;;
Функция triangle вычисляет значение треугольного сигнала при заданных параметрах в конкретный момент времени. Входные параметры: Amplitude - амплитуда, f - частота, t - текущие время. Возвращаемое значение - значение сигнала.
function triangle;:= roundto(Amplitude * (t * f - floor(t * f)), -9);
end;