Разработка программного имитатора цифрового канала связи с применением помехоустойчивого кодирования

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

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

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;