Автоматизированное рабочее место для исследования и проектирования систем передачи информации
Программная реализация автоматизированного рабочего места для исследования и проектирования дискретных систем передачи информации с использованием устройств преобразования сигналов. Описание интерфейса программного комплекса и основные этапы работы с ним.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 13.11.2018 |
Размер файла | 957,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
КРАТНОСТЬ; 0 ; 1 ; 2 ; 3 ; 4
0 ; 0.2940000; 0.3800000; 0.2390000; 0.0620000; 0.0220000
5 ; 0.0030000; 0.0000000; 0.0000000; 0.0000000; 0.0000000
РАСПРЕДЕЛЕНИЕ КРАТНОСТЕЙ ОШИБОК ПОСЛЕ ДЕКОДИРОВАНИЯ: k=12;
КРАТНОСТЬ; 0 ; 1 ; 2 ; 3 ; 4
0 ; 0.9750000; 0.0010000; 0.0000000; 0.0060000; 0.0120000
5 ; 0.0050000; 0.0010000; 0.0000000; 0.0000000; 0.0000000
Эквивалентная вер-ть ошибки Рвх=0.049869565-+0.001865902;
Эквивалентная вер-ть ошибки Рвых=0.008166667-+0.001068057;
Пропускная способность канала без УЗО: Ск/Смах=0.713603;
Пропускная способность канала c УЗО: Сs/Смах=0.486064.
3. Листинг программного комплекса*
3.1 Листинг головного модуля
program arm1; {головной модуль программного комплекса
uses
Forms,
Unit1 in 'Unit1.pas' {ARM},
Inform in 'Inform.pas' {About},
Model_DC in 'Model_DC.pas' {DC_Canal,RU_Canal},
Unit5 in 'Unit2.pas' {Signal},
Unit6 in 'Unit3.pas' {N_Canal1},
Unit7 in 'Unit4.pas' {D_Canal1},
Unit9 in 'Unit5.pas' {PRM},
Unit12 in 'Unit6.pas' {Help},
Unit13 in 'Unit7.pas' {N_Canal2},
Unit14 in 'Unit8.pas' {RU_Form},
Unit16 in 'Unit9.pas' {Results},
Unit17 in 'Unit10.pas' {Count},
Vartype in 'Vartype.pas',
Statpro1 in 'Statpro1.pas',
Sgncan1 in 'Sgncan1.pas',
Splash in 'Splash.pas' {Splash_Form},
dcanal1 in 'Dcanal1.pas',
UZO in 'UZO.pas' {UZO1},
Codec_RS in 'Codec_RS.pas',
Codec_BM in 'Codec_BM.pas',
Codec_SV in 'Codec_SV.pas',
Dec_Lebel in 'Dec_Lebel.pas',
Viterbi in 'Viterbi.pas',
Vi2_Code in 'Vi2_Code.pas',
Vi3_code in 'Vi3_code.pas',
SV_Cod in 'SV_Cod.pas',
Cyclcod in 'CyclCod.pas',
Diagram in 'Diagram.pas' {Picture},
Stat_UZO in 'Stat_UZO.pas' {Stat2},
Stat_DC in 'Stat_DC.pas' {Stat1};
*Примечание: Приводится листинг только 50 страниц программного комплекса согласно «Правила составления, подачи и рассмотрения заявок на официальную регистрацию ……», приказ РасАПО от 5 марта 1993г.
{$R *.RES}
begin
Splash_Form := TSplash_Form.Create(Application);
Application.Initialize;
Application.Title := 'АРМ';
Application.HelpFile := 'Help.hlp';
Application.CreateForm(TARM, ARM);
Application.CreateForm(TAbout, About);
Application.CreateForm(TSignal, Signal);
Application.CreateForm(TN_Canal1, N_Canal1);
Application.CreateForm(TD_Canal1, D_Canal1);
Application.CreateForm(TStat1, Stat1);
Application.CreateForm(TPRM, PRM);
Application.CreateForm(TUZO1, UZO1);
Application.CreateForm(TStat2, Stat2);
Application.CreateForm(TN_Canal2, N_Canal2);
Application.CreateForm(TRU_Form, RU_Form);
Application.CreateForm(TResults, Results);
Application.CreateForm(TCount, Count);
Application.CreateForm(TPicture, Picture);
Application.CreateForm(TStat2, Stat2);
Application.CreateForm(TStat1, Stat1);
Application.Run;
end.
3.2 Листинг модуля главного меню и главной формы
unit Unit1; { Модуль главного меню и главной формы}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, ExtCtrls, Buttons, ComCtrls;
type
TARM = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
N1: TMenuItem;
PrintSetup1: TMenuItem;
Print1: TMenuItem;
N2: TMenuItem;
Save1: TMenuItem;
Open1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
Help2: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
PrintDialog1: TPrintDialog;
PrinterSetupDialog1: TPrinterSetupDialog;
options1: TMenuItem;
Color1: TMenuItem;
ColorDialog1: TColorDialog;
FontDialog1: TFontDialog;
Panel1: TPanel;
Panel2: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton4: TSpeedButton;
Save1_1: TMenuItem;
Save1_2: TMenuItem;
SpeedButton1: TSpeedButton;
SpeedButton7: TSpeedButton;
N3: TMenuItem;
DC1: TMenuItem;
RU1: TMenuItem;
RichEdit1: TRichEdit;
procedure Button1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Print1Click(Sender: TObject);
procedure PrintSetup1Click(Sender: TObject);
procedure Color1Click(Sender: TObject);
procedure Font1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Help2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Save1_1Click(Sender: TObject);
procedure Save1_2Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure RU1Click(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure DC1Click(Sender: TObject);
procedure options1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
procedure Save(FileName:String;par:byte);
end;
var
ARM: TARM;
Menu_Color,Item_Color:TColor;
implementation
uses Model_DC, Unit2, Unit5, Unit6,VarType, Inform, UZO,Codec_RS;
{$R *.DFM}
procedure TARM.Button1Click(Sender: TObject);
begin
close;
end;
procedure TARM.Exit1Click(Sender: TObject);
begin
close;
end;
procedure TARM.Open1Click(Sender: TObject);
var
fil: file of rec9;
i:integer;
dat: rec9;
begin
if ARM.MDIChildCount>0 then
if OpenDialog1.Execute then
begin
AssignFile(fil,OpenDialog1.FileName);
Reset (fil);
Read (fil,dat);
if dat.Qualifier=123123 then
with dat do begin
with Uzo1 do begin
RadioButton1.Checked:=False; RadioButton3.Checked:=False;
RadioButton4.Checked:=False; RadioButton5.Checked:=False;
RadioButton6.Checked:=False; RadioButton13.Checked:=False;
RadioButton14.Checked:=False;RadioButton17.Checked:=False;
RadioButton18.Checked:=False;RadioButton19.Checked:=False;
RadioButton2.Checked:=False; RadioButton7.Checked:=False;
RadioButton8.Checked:=False; RadioButton9.Checked:=False;
RadioButton10.Checked:=False; RadioButton11.Checked:=False;
RadioButton12.Checked:=False; RadioButton15.Checked:=False;
RadioButton16.Checked:=False; end;
DSignal:=Signal;Dncan:=Ncan;
Ddcan:=Dcan;Dbrk:=Brk;DRust:=Rust;
Duzo1.codec_num:=Uzo.codec_num;
Duzo1.num:=Uzo.num;
if (Duzo1.codec_num=13)or (Duzo1.codec_num=17)
or (Duzo1.codec_num=18)or (Duzo1.codec_num=19)
then Npole;{процедура из Codec_RS}
Duzo1.n:=Uzo.n;
Duzo1.k:=Uzo.k;
Duzo1.n0:=Uzo.n0;
Duzo1.k0:=Uzo.k0;
Duzo1.sum_pro:=Uzo.sum_pro;
Duzo1.cm:=Uzo.cm;
Dprm:=Prm;
Duzo1.gKodSt:=Uzo.gKodSt;
Duzo1.gkodStr:='';
for i:=1 to 200 do
if Uzo.gkodCh[i]<>'~'
then Duzo1.gkodStr:=Duzo1.gkodStr+Uzo.gkodCh[i]
else break;
MessageDlg('Чтение завершено успешно.',mtWarning,[mbOk],0);
DC_Menu.BitBtn5.Enabled:=True;
DC_Menu.BitBtn8.Enabled:=False;
DoRefl:=1;
end
else
MessageDlg('Файл не принадлежит программе АРМ.',mtWarning,[mbOk],0);
CloseFile (fil);
end;
end;
procedure TARM.Print1Click(Sender: TObject);
begin
ARM.Save ('impfile.txt',0);
RichEdit1.Lines.LoadFromFile('impfile.txt');
RichEdit1.Print('');
DeleteFile ('impfile.txt');
end;
procedure TARM.PrintSetup1Click(Sender: TObject);
begin
PrinterSetupDialog1.Execute;
end;
procedure TARM.Color1Click(Sender: TObject);
begin
if ActiveMDIChild=DC_Menu then
begin
DC_Menu.ColorDialog1.Execute;
Menu_Color:=DC_Menu.ColorDialog1.Color;
DC_Menu.Color:=Menu_Color
end;
end;
procedure TARM.Font1Click(Sender: TObject);
begin
FontDialog1.Execute;
ARM.Panel1.Font:=FontDialog1.Font;
end;
procedure TARM.About1Click(Sender: TObject);
begin
About.showModal;
end;
procedure TARM.N3Click(Sender: TObject);
begin
DC_Menu.Color:=Menu_Color;
ARM.Visible:=False;
DC_Menu.ShowModal;
ARM.Visible:=True;
end;
procedure TARM.Help2Click(Sender: TObject);
begin
Application.HelpCommand(HELP_CONTENTS, 0);
end;
procedure TARM.FormCreate(Sender: TObject);
begin
Menu_Color:=$00C43C42;
Item_Color:=clAqua;
end;
procedure TARM.Save1_1Click(Sender: TObject);
var
fil: file of rec9;
i,j:integer;
dat: rec9;
begin
SaveDialog1.FileName:='var1';
SaveDialog1.FilterIndex:=1;
j:=0;
if SaveDialog1.Execute then
begin
for i:=1 to length (SaveDialog1.FileName)-4 do
if copy (SaveDialog1.FileName,i+1,4)='.dat' then j:=1;
if j=0 then SaveDialog1.FileName:=SaveDialog1.FileName+'.dat';
AssignFile(fil,SaveDialog1.FileName);
Rewrite (fil);
with dat do begin
Signal:=DSignal;
Ncan:=Dncan;
Dcan:=Ddcan;
Brk:=Dbrk;
Rust:=DRust;
Uzo.codec_num:=Duzo1.codec_num;
Uzo.n:=Duzo1.n;
Uzo.k:=Duzo1.k;
Uzo.n0:=Duzo1.n0;
Uzo.k0:=Duzo1.k0;
Uzo.sum_pro:=Duzo1.sum_pro;
Uzo.cm:=Duzo1.cm;
Uzo.num:=Duzo1.num;
Uzo.gKodSt:=Duzo1.gKodSt;
Prm:=Dprm;
for i:=1 to length(Duzo1.gkodStr)+1 do
if i<=length(Duzo1.gkodStr)
then Uzo.gkodCh[i]:=Duzo1.gkodStr[i]
else Uzo.gkodCh[i]:='~';
Qualifier:=123123;
end;
write(fil,dat);
{ MessageDlg('Запись завершена успешно.',mtWarning,[mbOk],0);}
end;
end;
procedure TARM.Save (FileName:string;par:byte);
var i,j:integer;
r:double;
fil:TextFile;
procedure Table(j:integer;q:byte);
var i:integer;
rk:double;
begin
if par=1 then
begin
Writeln(fil,
Writeln(fil,
' ¦ КРАТНОСТЬ¦ 0 ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦');
Writeln(fil,
' ¦--------------------+--------------------+--------------------+--------------------+--------------------+--------------------¦');
for i:=0 to j do begin
if q=1 then rk:=rk1[i] else rk:=rk2[i];
if (i mod 5)=0 then Write(fil,' ¦ ',i:3,' ¦ ');
Write(fil,rk:8:7,'¦ ');
if ((i+1) mod 5 = 0) and (i<>j) then Writeln(fil);
end;
for i:=1 to 4-j mod 5 do Write(fil,'0.0000000¦ ');
Writeln(fil);
Writeln(fil,
' +--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+');
end
else
begin
Writeln(fil,
' КРАТНОСТЬ; 0 ; 1 ; 2 ; 3 ; 4 ');
for i:=0 to j do begin
if q=1 then rk:=rk1[i] else rk:=rk2[i];
if (i mod 5)=0 then Write(fil,' ',i:3,' ; ');
if ((i+1) mod 5=0) then Write(fil,rk:8:7,' ')
else Write(fil,rk:8:7,'; ');
if ((i+1) mod 5 = 0) and (i<>j) then Writeln(fil);
end;
for i:=1 to (4-j mod 5) do
if i<(4-j mod 5) then Write(fil,'0.0000000; ')
else Write(fil,'0.0000000 ');
Writeln(fil);
end;
end;
begin
AssignFile(fil,FileName);
Rewrite (fil);
with Ddcan do with Dbrk do with Duzo1 do with Dncan do begin
Writeln(fil,' РЕЗУЛЬТАТЫ ИСПЫТАНИЙ');
Writeln(fil,#10' Исходные данные:');
Writeln(fil,' СИГНАЛ двоичный: p(1) =',Dsignal.p1sign:8:7,'.');
Writeln(fil,#10' НЕПРЕРЫВНЫЙ КАНАЛ: Hp =',Hp:5:1,'; Hc =',Hc:5:1,';');
Writeln(fil,' m =',m:3,'; Q = ',q:8:7,';');
Writeln(fil,' Модулятор: md =',md:3:1,'; Демодулятор: dm =',dm,';');
if DRust.Rule=0 then
Writeln(fil,' Критерий качества: МП ;') else
Writeln(fil,' Критерий качества: МАВ.');
Writeln(fil,#10' ДИСКРЕТНЫЙ КАНАЛ:' );
if model=1 then begin
Writeln(fil,' Пороговые уровни: H1 =',H1:5:1,'; H2 =',H2:5:1,';');
Writeln(fil,' Вероятности состояний: P0 =',p0:8:7,';');
Writeln(fil,' P1 =',p1:8:7,';');
Writeln(fil,' P2 =',p2:8:7,';');
Writeln(fil,' Вероятности ошибок: E0 =',e0:8:7,';');
Writeln(fil,' E1 =',e1:8:7,';');
Writeln(fil,' E2 =',e2:8:7,';');
Writeln(fil,' Матрица переходных вероятностей:');
Writeln(fil,' ',p00:8:7,' ',p01:8:7,' ',0.0:8:7);
Writeln(fil,' ',p10:8:7,' ',p11:8:7,' ',p12:8:7);
Writeln(fil,' ',0.0:8:7,' ',p21:8:7,' ',p22:8:7);
Writeln(fil,' Средняя вероятность ошибки: Pcp=',Pcp:8:7,';');
end;
if PP>0 then begin
Writeln(fil,' Параметры перерывов:');
Writeln(fil,' PP=',pp:8:7,'; PI=',pi:8:7,'; E4=',e4:8:7,';');
Writeln(fil,' P4=',p4:8:7,'; P5=',p5:8:7,'; B1=',b1:8:7,';');
Writeln(fil,' B2=',b2:8:7,'; TM=',tm:8:1,';');end;
Write(fil,' Параметры перемежителя:');
Writeln(fil,' A=',Dprm.Aprm,'; C=',Dprm.cprm,'; L=',Dprm.Lprm,'.');
r:=0;
for i:=0 to rk2_Count-1 do r:=r+rk2[i];
if r=0 then begin
Writeln(fil,#10' УЗО НЕ ИСПОЛЬЗУЕТСЯ.');
Writeln(fil,#10' ОБЪЕМ ИСПЫТАНИЙ NB=',Dstat.col_blok,'.');
Writeln(fil,#10' РАСПРЕДЕЛЕНИЕ КРАТНОСТЕЙ ОШИБОК n=',Dstat.n);
for j:= rk1_Count-1 downto 0 do
if rk1[j]<>0 then break;
Table(j,1);
end else
begin
case codec_num of
0,2,3,4,5,14:begin
Writeln(fil,#10' ИСПОЛЬЗУЕТСЯ ЦИКЛИЧЕСКИЙ КОД: n=',n,' k=',k,';');
Writeln(fil,' Производящий многочлен (8-ичная запись):');
Writeln(fil,' g(x)=',gkodStr,';');
Writeln(fil,' МАКС.кратность исправл.ошибок t=',cm,';');
if codec_num=0 then
Writeln(fil,' Декодер синдромно-матричный.');
if codec_num=14 then
Writeln(fil,' Декодер АБМВ.');
end;
13,18: begin
Writeln(fil,#10' ИСПОЛЬЗУЕТСЯ КОД Рида-Соломона: n=',n,' k=',k,';');
Writeln(fil,' Производящий многочлен g(x)=',gkodStr,';');
Writeln(fil,' МАКС.кратность исправл.ошибок t=',cm,';');
if codec_num=13 then Writeln(fil,' Декодер АБМВ.');
if codec_num=18 then Writeln(fil,' Декодер АБМЧ.');
end;
1,6,7,8,9,10:begin
Writeln(fil,#10' ИСПОЛЬЗУЕТСЯ СВЕРТОЧНЫЙ КОД: n=',n,'; k=',k,';');
Writeln(fil,' Производящий(е) многочлен(ы): g(x)=',gkodStr,';');
if codec_num=6 then writeln(fil,' (8-ричная запись)')
else begin
if codec_num=8 then writeln(fil,' g1=1+x; g2=1+x+x2; R=1/2, Декодер Витерби.');
if codec_num=9 then
begin
writeln(fil,' g(ij)=1+x,1+x,1');
writeln(fil,' 0, x, 1+x; R=2/3,Декодер Витерби.');
end;
if codec_num=10 then
begin
writeln(fil,' g(ij)=1+x,1+x,1');
writeln(fil,' 0, x, 1+x; R=3/4,Декодер Витерби.');
end;
if (codec_num=1) or (codec_num=7) then
begin
writeln(fil,' (степени мн-на(ов))');
write(fil,' Декодер итерационный пороговый,');
Writeln(fil,' МАКС.число итераций:',cm:3,'.');
end;
end;
end;
12,15,16,17,19:begin
Write(fil,#10' ИСПОЛЬЗУЕТСЯ КАСКАДНЫЙ КОД.' );
Writeln(fil,#10' Внутренний код свёрточный: ');
Writeln(fil,' Производящий(е) многочлен(ы):');
if (codec_num=12) or (codec_num=17) then
write(fil,' g1=1+x; g2=1+x+x2; R=1/2, Декодер Витерби.');
if codec_num=15 then
begin
writeln(fil,' g1=1+x; g2=1+x+x2; выколотый R=1/3,');
Write(fil,' Декодер Витерби.' );
end;
if (codec_num=16) or (codec_num=19) then
begin
Writeln(fil,' Номер многочлена g(x)=',UZO1.Edit7.Text,';');
Write(fil,' Декодер итерационный пороговый.');
end;
if (codec_num=12) or (codec_num=15) or (codec_num=16) then
begin
Writeln(fil,#10' Внешний код свёрточный: n=',n,'; k=',k,';');
Writeln(fil,' Производящий(е) многочлен(ы): g(x)=',gkodStr,';');
Writeln(fil,' Декодер итерационный пороговый.');
end;
if (codec_num=17) or (codec_num=19) then
begin
Writeln(fil,#10' Внешний код РС: n=',n,'; k=',k,';');
Write(fil,' Производящий многочлен g(x)=',gkodStr,';');
Writeln(fil,' МАКС.кратность исправл.ошибок t=',cm,';');
Writeln(fil,' Декодер АБМЧ.');
end;
end;
end;
Writeln(fil,#10' ОБЪЕМ ИСПЫТАНИЙ NB=',Dstat.col_blok,'.');
Writeln(fil,#10' РАСПРЕДЕЛЕНИЕ КРАТНОСТЕЙ ОШИБОК ДО ДЕКОДИРОВАНИЯ: n=',n,';');
for j:= rk1_Count-1 downto 0 do
if rk1[j]<>0 then break;
Table(j,1);
Writeln(fil,
#10' РАСПРЕДЕЛЕНИЕ КРАТНОСТЕЙ ОШИБОК ПОСЛЕ ДЕКОДИРОВАНИЯ: k=',k,';');
for j:= rk2_Count-1 downto 0 do
if rk2[j]<>0 then break;
Table(j,2);
if codec_num=0 then
Writeln(fil,#10' Вероятность обнаружения Робн=',Pob:8:7,';');
end;
Writeln(fil,#10' Эквивалентная вер-ть ошибки Рвх=',PE1:10:9,'-+',D1:10:9,';');
Writeln(fil,' Эквивалентная вер-ть ошибки Рвых=',PE2:10:9,'-+',D2:10:9,';');
Writeln(fil,' Пропускная способность канала без УЗО: Ск/Смах=',Ck:7:6,';');
Writeln(fil,' Пропускная способность канала c УЗО: Сs/Смах=',Cs:7:6,'.');
end;
CloseFile(fil);
end;
procedure TARM.Save1_2Click(Sender: TObject);
var
i,j:integer;
begin
if ARM.MDIChildCount>0 then
begin
j:=0;
SaveDialog1.FileName:='rezult1';
SaveDialog1.FilterIndex:=2;
if SaveDialog1.Execute then
begin
for i:=1 to length (SaveDialog1.FileName)-4 do
if copy (SaveDialog1.FileName,i+1,4)='.rez' then j:=1;
if j=0 then SaveDialog1.FileName:=SaveDialog1.FileName+'.rez';
ARM.Save(SaveDialog1.FileName,1);
end;
end;
end;
procedure TARM.SpeedButton7Click(Sender: TObject);
begin
if ActiveMDIChild=nil then
if SpeedButton7.Down then ARM.Cursor:=crHelp
else ARM.Cursor:=crDefault
else
begin
if SpeedButton7.Down then
begin
ARM.Cursor:=crHelp;
if model=1 then
begin
SpeedButton7.Cursor:=crHelp;
DC_Menu.Cursor:=crHelp;
DC_Menu.BitBtn2.Cursor:=crHelp;
DC_Menu.BitBtn3.Cursor:=crHelp;
DC_Menu.BitBtn4.Cursor:=crHelp;
DC_Menu.BitBtn5.Cursor:=crHelp;
DC_Menu.BitBtn6.Cursor:=crHelp;
DC_Menu.BitBtn7.Cursor:=crHelp;
DC_Menu.BitBtn8.Cursor:=crHelp;
end;
if model=2 then
begin
SpeedButton7.Cursor:=crHelp;
DC_Menu.Cursor:=crHelp;
DC_Menu.BitBtn2.Cursor:=crHelp;
DC_Menu.BitBtn9.Cursor:=crHelp;
DC_Menu.BitBtn10.Cursor:=crHelp;
DC_Menu.BitBtn5.Cursor:=crHelp;
DC_Menu.BitBtn6.Cursor:=crHelp;
DC_Menu.BitBtn7.Cursor:=crHelp;
DC_Menu.BitBtn8.Cursor:=crHelp;
end;
end
else
begin
ARM.Cursor:=crDefault;
if model=1 then
begin
SpeedButton7.Cursor:=crDefault;
DC_Menu.Cursor:=crDefault;
DC_Menu.BitBtn2.Cursor:=crDefault;
DC_Menu.BitBtn3.Cursor:=crDefault;
DC_Menu.BitBtn4.Cursor:=crDefault;
DC_Menu.BitBtn5.Cursor:=crDefault;
DC_Menu.BitBtn6.Cursor:=crDefault;
DC_Menu.BitBtn7.Cursor:=crDefault;
DC_Menu.BitBtn8.Cursor:=crDefault;
end;
if model=2 then
begin
SpeedButton7.Cursor:=crDefault;
DC_Menu.Cursor:=crDefault;
DC_Menu.BitBtn2.Cursor:=crDefault;
DC_Menu.BitBtn9.Cursor:=crDefault;
DC_Menu.BitBtn10.Cursor:=crDefault;
DC_Menu.BitBtn5.Cursor:=crDefault;
DC_Menu.BitBtn6.Cursor:=crDefault;
DC_Menu.BitBtn7.Cursor:=crDefault;
DC_Menu.BitBtn8.Cursor:=crDefault;
end;
end;
end;
end;
procedure TARM.RU1Click(Sender: TObject);
begin
ARM.SpeedButton1.Enabled:=True;
ARM.SpeedButton2.Enabled:=True;
ARM.SpeedButton3.Enabled:=True;
ARM.SpeedButton4.Enabled:=True;
ARM.Open1.Enabled:=True;
ARM.Save1.Enabled:=True;
ARM.Print1.Enabled:=True;
ARM.Color1.Enabled:=True;
model:=2;
if ARM.MDIChildCount=0 then
DC_Menu:=TDC_Menu.Create(Application);
DC_Menu.Show;
DC_Menu.BitBtn9.Visible:=true;
DC_Menu.BitBtn10.Visible:=true;
DC_Menu.BitBtn3.Visible:=false;
DC_Menu.BitBtn4.Visible:=false;
end;
procedure TARM.FormClick(Sender: TObject);
begin
if ARM.Cursor=crHelp
then Application.HelpCommand(HELP_CONTEXT,1);
end;
procedure TARM.DC1Click(Sender: TObject);
begin
ARM.SpeedButton1.Enabled:=True;
ARM.SpeedButton2.Enabled:=True;
ARM.SpeedButton3.Enabled:=True;
ARM.SpeedButton4.Enabled:=True;
ARM.Open1.Enabled:=True;
ARM.Save1.Enabled:=True;
ARM.Print1.Enabled:=True;
ARM.Color1.Enabled:=True;
model:=1;
if ARM.MDIChildCount=0 then
DC_Menu:=TDC_Menu.Create(Application);
DC_Menu.Show;
DC_Menu.BitBtn9.Visible:=false;
DC_Menu.BitBtn10.Visible:=false;
DC_Menu.BitBtn3.Visible:=true;
DC_Menu.BitBtn4.Visible:=true;
end;
procedure TARM.Options1Click(Sender: TObject);
begin
if ARM.MDIChildCount>0 then Color1.Enabled:=True
else Color1.Enabled:=False;
end;
procedure TARM.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Application.MessageBox(
'Результаты ввода данных и испытаний возможно не сохранены! ВЫ ДЕЙСТВИТЕЛЬНО ХОТИТЕ ВЫЙТИ?',
' ВНИМАНИЕ!!', MB_YESNO+MB_ICONQUESTION)= IDYES
then CanClose:=true else CanClose:=false;
end;
{Конец программы «unit Unit1»}end.
3.3 Листинг модуля моделей СПИ
unit Model_DC; {Модуль формирования модели СПИ}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus, ExtCtrls;
type
TDC_Menu = class(TForm)
BitBtn1: TBitBtn;
PopupMenu1: TPopupMenu;
color1: TMenuItem;
ColorDialog1: TColorDialog;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
BitBtn10: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure color1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn2MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn3MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn4MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn6MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn7MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn8MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn5MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure BitBtn2Exit(Sender: TObject);
procedure BitBtn3Exit(Sender: TObject);
procedure BitBtn4Exit(Sender: TObject);
procedure BitBtn5Exit(Sender: TObject);
procedure BitBtn6Exit(Sender: TObject);
procedure BitBtn7Exit(Sender: TObject);
procedure BitBtn8Exit(Sender: TObject);
procedure BitBtn2Enter(Sender: TObject);
procedure BitBtn3Enter(Sender: TObject);
procedure BitBtn4Enter(Sender: TObject);
procedure BitBtn5Enter(Sender: TObject);
procedure BitBtn6Enter(Sender: TObject);
procedure BitBtn7Enter(Sender: TObject);
procedure BitBtn8Enter(Sender: TObject);
procedure BitBtn1Enter(Sender: TObject);
procedure BitBtn1Exit(Sender: TObject);
procedure BitBtn1MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
procedure FormClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn9Click(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
private
{ Private declarations }
public
procedure ReadPolynom;
procedure RandPosl;
{ Public declarations }
end;
var
DC_Menu: TDC_Menu;
code,i,jj:integer;
cancel:boolean;
implementation
uses Unit1, Unit2, Unit3, Unit4, Stat_DC, Unit5, Stat_UZO,
Unit7, Unit8, Unit9, Unit10, VarType,
Cyclcod,Viterbi, CodecSV05,Dec_Lebel,Codec_SV,
Codec_RS,Codec_BM,Dcanal1,SgnCan1,StatPro1, RUunit, UZO;
var s,s1:string;
{$R *.DFM}
procedure TDC_Menu.Button1Click(Sender: TObject);
begin
close;
end;
procedure TDC_Menu.ReadPolynom;{чтение производящего мн-на}
var i,j,ll,code:integer;
begin
code:=0;
ll:=0;
with Duzo1 do
begin
if gkodStr='' then
MessageDlg('Ошибка ввода g(x).',mtWarning,[mbOk],0)
else
begin
for i:=0 to 300 do gkod[i]:=0;
if (Codec_Num<>8) and (Codec_Num<>9) and (Codec_Num<>10)
then
if Pos(',',gkodStr)<>0
then
begin
j:=1;
repeat
for i:=j to Length(gkodStr){+1} do
if (gkodStr[i]=',') then break;
Val(Copy(gkodStr,j,i-j),gkod[ll],code);
inc (ll);
j:=i+1;
until i>=Length(gkodStr){+1;}
end
else
if Odd(byte(gkodStr[Length(gkodStr)])) and (Pos('8',gkodStr)=0)
and (Pos('9',gkodStr)=0)
then
begin
for i:=Length(gkodStr) downto 1 do
for j:=0 to 2 do
if Odd(byte(gkodStr[i]) shr j) then
begin
gkod[ll]:=3*(Length(gkodStr)-i)+j;
inc (ll);
end;
end
else MessageDlg('Ошибка ввода g(x).',mtError,[mbOk],0);
end;
sum_pro:=ll;
if (Codec_Num=7) or (Codec_Num=12)
or (Codec_Num=15) or (Codec_Num=16)
then
begin {Проверка набора многочленов}
for i:=1 to Sum_pro-1 do
for j:=i+1 to Sum_pro do
if (gkod[i]<>0) and (gkod[i]=gkod[j])then
MessageDlg('В наборе g(x) имеются одинаковые степени',mtError,[mbOk],0);
j:=0;
for i:=1 to Sum_pro do
if gkod[i]=0 then j:=j+1;
if (Sum_pro mod j) <> 0
then
MessageDlg('В наборе g(x) многочлены разной длины ',mtError,[mbOk],0);
end;
end;
end;
procedure TDC_Menu.RandPosl;
var i,j,Ap:integer;
begin
with Dprm do with Duzo1 do
begin
Ap:=0;
for i:=0 to (n*Lprm-1) do
begin
PsP[i]:=Aprm*Ap+Cprm;
while PsP[i]>=(n*Lprm-1) do PsP[i]:=PsP[i]-(n*Lprm-1);
Ap:=PsP[i];
if (i>1) and (i<n*Lprm-1) then
for j:=0 to i-1 do
if PsP[i]=PsP[j] then
begin
MessageDlg(
'Допустимы А=1,L<=10,n/2<C<n*L; Повторите ввод A,L,C в перемежителе!'
,mtWarning,[mbOk],0);
Dstat.col_blok:=0;
exit;
end;
end;
PsP[n*Lprm-1]:=n*Lprm-1;
end;
end;
procedure TDC_Menu.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure TDC_Menu.color1Click(Sender: TObject);
begin
ColorDialog1.Execute;
Menu_Color:=ColorDialog1.Color;
DC_Menu.Color:=Menu_Color;
end;
procedure TDC_Menu.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn1.Font.Color:=clWindowText;
BitBtn2.Font.Color:=clWindowText;
BitBtn3.Font.Color:=clWindowText;
BitBtn4.Font.Color:=clWindowText;
BitBtn5.Font.Color:=clWindowText;
BitBtn6.Font.Color:=clWindowText;
BitBtn7.Font.Color:=clWindowText;
BitBtn8.Font.Color:=clWindowText;
end;
procedure TDC_Menu.BitBtn2Click(Sender: TObject);
begin
if DC_Menu.Cursor=crHelp
then
Application.HelpCommand(HELP_CONTEXT,14)
else
begin
Signal.Color:=Item_Color;
str (Dsignal.p1sign:6:4,s); Signal.Edit1.Text:=s;
Signal.showModal;
if Cancel=true then Cancel:=false
else val(Signal.Edit1.Text,Dsignal.p1sign,code);
end;
end;
procedure TDC_Menu.BitBtn2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn2.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn3Click(Sender: TObject);
var Xp,Xc:double;
Xm:integer;
begin
if DC_Menu.Cursor=crHelp
then
Application.HelpCommand(HELP_CONTEXT,18)
else
begin
N_Canal1.Color:=Item_Color;
with Dncan do begin
str(Hp:6:4,s); N_Canal1.Edit1.Text:=s;
str(Hc:6:4,s); N_Canal1.Edit2.Text:=s;
str(H1:6:4,s); N_Canal1.Edit3.Text:=s;
str(H2:6:4,s); N_Canal1.Edit4.Text:=s;
str(m:2,s); N_Canal1.Edit5.Text:=s;
str(Q:6:4,s); N_Canal1.Edit6.Text:=s;
case trunc (md*10) of
5 :N_Canal1.RadioGroup1.ItemIndex:=0;
10:N_Canal1.RadioGroup1.ItemIndex:=1;
20:N_Canal1.RadioGroup1.ItemIndex:=2;
end;
N_Canal1.RadioGroup2.ItemIndex:=1-dm;
N_Canal1.showModal;
if Cancel=true then Cancel:=false else
begin
DoRefl:=0;
BitBtn5.Enabled:=False;
BitBtn8.Enabled:=False;
val(N_Canal1.Edit1.Text,Xp,code);
val(N_Canal1.Edit2.Text,Xc,code);
val(N_Canal1.Edit5.Text,Xm,code);
{ Формирование порогов H1 и H2 "по умолчанию"
при изменении Hp,Hc или m}
if (Xp<>Hp) or (Xc<>Hc) or (Xm<>m)
then begin
if Xm>1 then begin H1:=Xm*Xc;H2:=0.2*H1;end
else begin H1:=Xp+Xc;H2:=0.2*H1;end;
str(H1:6:4,s); N_Canal1.Edit3.Text:=s;
str(H2:6:4,s); N_Canal1.Edit4.Text:=s;
end;
val(N_Canal1.Edit3.Text,H1,code);
val(N_Canal1.Edit4.Text,H2,code);
val(N_Canal1.Edit1.Text,Hp,code);
val(N_Canal1.Edit2.Text,Hc,code);
val(N_Canal1.Edit5.Text,m,code);
val(N_Canal1.Edit6.Text,Q,code);
case N_Canal1.RadioGroup1.ItemIndex of
0:md:=0.5;
1:md:=1;
2:md:=2;
end;
dm:=1-N_Canal1.RadioGroup2.ItemIndex;
end;
end;
end;
end;
procedure TDC_Menu.BitBtn3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn3.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn4Click(Sender: TObject); { Дискретный канал }
var h0,h1,h2:double;
begin
if DC_Menu.Cursor=crHelp
then
Application.HelpCommand(HELP_CONTEXT,13)
else
begin
D_Canal1.Color:=Item_Color;
if DoRefl=0 then Dcan;
if Ddcan.Pcp<>0 then
begin
DoRefl:=1;
with Ddcan do
begin
str (p0:9:7,s); D_Canal1.Edit1.Text:=s;
str(p1:9:7,s); D_Canal1.Edit2.Text:=s;
str(e0:10:8,s); D_Canal1.Edit3.Text:=s;
str(e1:10:8,s); D_Canal1.Edit4.Text:=s;
str(e2:10:8,s); D_Canal1.Edit5.Text:=s;
str(p01:9:7,s); D_Canal1.Edit6.Text:=s;
str(p21:9:7,s); D_Canal1.Edit7.Text:=s;
str(Pcp:10:8,s); D_Canal1.Label10.Caption:=' '+s;
str(Dbrk.pp:9:7,s); D_Canal1.Edit8.Text:=' '+s;
D_Canal1.showModal;
if Cancel=true then Cancel:=false else
begin
val(D_Canal1.Edit1.Text,p0,code);
val(D_Canal1.Edit2.Text,p1,code);
val(D_Canal1.Edit3.Text,e0,code);
val(D_Canal1.Edit4.Text,e1,code);
val(D_Canal1.Edit5.Text,e2,code);
val(D_Canal1.Edit6.Text,p01,code);
val(D_Canal1.Edit7.Text,p21,code);
val(D_Canal1.Edit8.Text,Dbrk.pp,code);
p2:=1-(p0+p1); p00:=1-p01; p10:=p01*p0/p1; p12:=p21*p2/p1;
p11:=1-p10-p12; p22:=1-p21;Pcp:=e0*p0+e1*p1+e2*p2;
if e0=0 then h0:=p0 else
h0:=-(E0*ln(E0)+(1-E0)*ln(1-E0))*P0;
if e1=0 then h1:=p1 else
h1:=-(E1*ln(E1)+(1-E1)*ln(1-E1))*P1;
if e2=0 then h2:=p2 else
h2:=-(E2*ln(E2)+(1-E2)*ln(1-E2))*P2;
Ck:=1-((h0+h1+h2)/ln(2.0));
end;
if Dbrk.pp<>0 then
begin
MessageDlg('В данном варианте АРМ перерывы не моделируются.',mtWarning,[mbOk],0);
Dbrk.pp:=0
end;
BitBtn5.Enabled:=True;
end;
end;
end;
end;
procedure TDC_Menu.BitBtn4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn4.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn5Click(Sender: TObject); { Стат 1 }
var count_dec,count_Bar,i:integer;
begin
if DC_Menu.Cursor=crHelp then
Application.HelpCommand(HELP_CONTEXT,12)
else
begin
Stat1.Color:=Item_Color;
with Dstat do
begin
Stat1.Edit1.Text:=IntToStr (n);
Stat1.Edit2.Text:=IntToStr (col_blok);
Stat1.ShowModal;
if Cancel=true then Cancel:=false else
begin
n:=StrToInt(Stat1.Edit1.Text);
col_blok:=StrToInt(Stat1.Edit2.Text);
InitStat(n,n,1,1,1,1);
Count.Show;
DC_Menu.Cursor:=crHourGlass;
count_Bar:=0;
count_dec:=trunc(col_blok/100);
for i:=1 to col_blok do {цикл статистики}
begin
if i mod count_dec=0 then
begin
count_Bar:=count_Bar+1;
Count.ProgressBar1.Position:=count_Bar;
end;
if i mod 100=0 then
begin
Count.Edit1.Text:=IntToStr(i);
Count.Repaint;
end;
case model of {Установка модели канала}
1: Canal(n,UZOoff);
2: Can0(n,i);
end;
GetStat(UZOoff,n,i,col_blok); {Стат.обработка}
end;
DC_Menu.Cursor:=crDefault;
Count.Close;
for i:=n-1 downto 0 do
if (rk1[i]<>0) or (rk2[i]<>0) then begin jj:=i; break; end;
if i>=0 then
begin
Results.BitBtn1.Enabled:=False;
Results.StringGrid1.Cells [1,0]:=' До декодирования n= '+IntToStr(n);
Results.StringGrid1.Cells [2,0]:=' После декодирования k= '+IntToStr(0);
Results.StringGrid1.RowCount:=jj+2;
for i:=0 to jj do
begin
Results.StringGrid1.Cells[0,i+1]:=' '+IntToStr(i);
str (rk1[i]:12:10,s);
Results.StringGrid1.Cells[1,i+1]:=' '+s;
s:='0.00';
Results.StringGrid1.Cells[2,i+1]:=' '+s;
end;
Results.Label4.Caption:=' '+IntToStr (Dstat.col_blok);
str (Ck:9:7,s); Results.Label10.Caption:=' '+s;
str (Pob:9:7,s); Results.Label3.Caption:=' '+s;
str (PE1:12:10,s); Results.Label7.Caption:=' '+s;
s:='0.00';
Results.Label8.Caption:=' '+s;
Results.ShowModal;
Results.BitBtn1.Enabled:=True;
end;
end;
end;
end;
end;
procedure TDC_Menu.BitBtn6Click(Sender: TObject);{ Перемежитель }
begin
if DC_Menu.Cursor=crHelp
then Application.HelpCommand(HELP_CONTEXT,7)
else
begin
PRM.Color:=Item_Color;
with Dprm do
begin
PRM.Edit1.Text:=IntToStr(Aprm);
PRM.Edit2.Text:=IntToStr(Cprm);
PRM.Edit3.Text:=IntToStr(Lprm);
PRM.showModal;
if Cancel=true then Cancel:=false else
begin
Aprm:=StrToInt(PRM.Edit1.Text);
Cprm:=StrToInt(PRM.Edit2.Text);
Lprm:=StrToInt(PRM.Edit3.Text);
end;
end;
end;
end;
procedure TDC_Menu.BitBtn6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn6.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn7Click(Sender: TObject);{ УЗО }
begin
if DC_Menu.Cursor=crHelp
then Application.HelpCommand(HELP_CONTEXT,8)
else
begin
UZO1.Color:=Item_Color;
with DUZO1 do
begin
case Codec_Num of
0: UZO1.RadioButton1.Checked:=true;
1: UZO1.RadioButton2.Checked:=true;
2: UZO1.RadioButton3.Checked:=true;
3: UZO1.RadioButton4.Checked:=true;
4: UZO1.RadioButton5.Checked:=true;
5: UZO1.RadioButton6.Checked:=true;
6: UZO1.RadioButton7.Checked:=true;
7: UZO1.RadioButton8.Checked:=true;
8: UZO1.RadioButton9.Checked:=true;
9: UZO1.RadioButton10.Checked:=true;
10: UZO1.RadioButton11.Checked:=true;
12: UZO1.RadioButton12.Checked:=true;
13: UZO1.RadioButton13.Checked:=true;
14: UZO1.RadioButton14.Checked:=true;
15: UZO1.RadioButton15.Checked:=true;
16: UZO1.RadioButton16.Checked:=true;
17: UZO1.RadioButton17.Checked:=true;
18: UZO1.RadioButton18.Checked:=true;
19: UZO1.RadioButton19.Checked:=true;
end;
UZO1.Edit2.Text:=IntToStr (n);
UZO1.Edit3.Text:=IntToStr (k);
UZO1.Edit4.Text:=IntToStr (cm);
UZO1.Edit1.Text:=gKodStr;
UZO1.Edit7.Text:= Duzo1.gKodSt;
UZO1.ShowModal;
if Cancel=true then Cancel:=false else
begin {установка номера кодека}
if UZO1.RadioButton1.Checked=true then Codec_Num:=0;
if UZO1.RadioButton2.Checked=true then Codec_Num:=1;
if UZO1.RadioButton3.Checked=true then Codec_Num:=2;
if UZO1.RadioButton4.Checked=true then Codec_Num:=3;
if UZO1.RadioButton5.Checked=true then Codec_Num:=4;
if UZO1.RadioButton6.Checked=true then Codec_Num:=5;
if UZO1.RadioButton7.Checked=true then Codec_Num:=6;
if UZO1.RadioButton8.Checked=true then Codec_Num:=7;
if UZO1.RadioButton9.Checked=true then Codec_Num:=8;
if UZO1.RadioButton10.Checked=true then Codec_Num:=9;
if UZO1.RadioButton11.Checked=true then Codec_Num:=10;
if UZO1.RadioButton12.Checked=true then Codec_Num:=12;
if UZO1.RadioButton13.Checked=true then Codec_Num:=13;
if UZO1.RadioButton14.Checked=true then Codec_Num:=14;
if UZO1.RadioButton15.Checked=true then Codec_Num:=15;
if UZO1.RadioButton16.Checked=true then Codec_Num:=16;
if UZO1.RadioButton17.Checked=true then Codec_Num:=17;
if UZO1.RadioButton18.Checked=true then Codec_Num:=18;
if UZO1.RadioButton19.Checked=true then Codec_Num:=19;
gKodStr:=UZO1.Edit1.Text;
n:=StrToInt (UZO1.Edit2.Text);
k:=StrToInt (UZO1.Edit3.Text);
Cm:=StrToInt (UZO1.Edit4.Text);
end;
end;
if (DUZO1.Codec_Num<>13) and (DUZO1.Codec_Num<>17) and
(DUZO1.Codec_Num<>18) and (DUZO1.Codec_Num<>19)
then DC_Menu.ReadPolynom;
end;
end;
procedure TDC_Menu.BitBtn7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn7.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn8Click(Sender: TObject);{ Стат 2 }
var count_Bar,count_dec:integer;
c,i,j,q:longint;
begin
if DC_Menu.Cursor=crHelp
then Application.HelpCommand(HELP_CONTEXT,11)
else
begin
Stat2.Color:=Item_Color;
Stat2.Edit1.Text:=IntToStr (Dstat.col_blok);
Stat2.ShowModal;
if Cancel=true then Cancel:=false else
begin
with Dstat do with Duzo1 do with Dprm do
begin
col_blok:=StrToInt (Stat2.Edit1.Text);
if (n>0) and (col_blok>0) then
begin
Count.Show;
DC_Menu.Cursor:=crHourGlass;
InitStat(n,k,n0,k0,Lprm,codec_num);
RandPosl;
count_Bar:=0;
count_dec:=trunc((col_blok div Lprm)/100);
if count_dec=0 then count_dec:=1;
for i:=1 to col_blok div Lprm do
begin
if i mod count_dec=0 then
begin
count_Bar:=count_Bar+1;
Count.ProgressBar1.Position:=count_Bar;
end;
if i mod 10=0 then
begin
Count.Edit1.Text:=IntToStr(i*Lprm);
Count.Repaint;
end;
for c:=1 to Lprm do
begin
Signal1(k,c);
case codec_num of {Установка кодера}
0,2,3,4,5: CyclCoder;
1,6: SvertCoder;
7,12,15,16: SverCoder;
8,9,10: K_vtrby;
13,17,18,19:BpCoder;
14:CyCoder;
end;
for j:=1 to n do
inf_prm[j+n*(c-1)]:=inf_kod[j];
for j:=1 to k do
inf_Sprm[j+k*(c-1)]:=inf_S[j];
end;
for j:=1 to n*Lprm do b[j]:=inf_prm[PsP[j-1]+1];
case model of {Установка модели канала}
1:Canal(n*Lprm,UZOon);
2:Can0(n*Lprm,i)
end;
if Dstat.col_blok=0 then exit;
for j:=1 to n*Lprm do inf_prm[PsP[j-1]+1]:=b[j] xor inf_err[j];
for c:=1 to Lprm do
begin
q:=c+(i-1)*Lprm;
for j:=1 to n do
begin
inf_dek[j]:=inf_prm[j+n*(c-1)];
inf_err[j]:=inf_err[j+n*(c-1)];
end;
for j:=1 to k do
case codec_num of {Установка задержки сравнения}
0,2,3,4,5,13,14,17,18,19: inf_in[j]:=inf_Sprm[j+k*(c-1)];
1,6,7,8,9,10,12,15,16: if c=1 then
inf_in[j]:=inf_Spred[j]
else
inf_in[j]:=inf_Sprm[j+k*(c-2)];
end;
GetStat(UZOoff,n,q,(Dstat.col_blok div Lprm)*Lprm);
case codec_num of {Установка декодера}
0:CyclDecoder(q);
1:SvertDecoder;
2:Kasami;
3:Meggit;
4:mPorog;
5:SEMTRI;
6:DecLabel;
7,12,15,16:SverDecoder;
8,9,10:D_vtrby(q);
13:BpDecoder;
14:CyDecoder;
17,18,19:ChDecoder;
end;
GetStat(UZOon,k,q,(Dstat.col_blok div Lprm)*Lprm);
end;
end;
if codec_num<>0 then Pob:=1-rk2[0];
DC_Menu.Cursor:=crDefault;
Count.Close;
for i:=n-1 downto 0 do
if (rk1[i]<>0) or (rk2[i]<>0) then begin jj:=i; break; end;
if i>0 then
begin
Results.StringGrid1.Cells [1,0]:=
' До декодирования n= '+IntToStr(n);
Results.StringGrid1.Cells [2,0]:=
' После декодирования k= '+IntToStr(k);
Results.StringGrid1.RowCount:=jj+2;
for i:=0 to jj do
begin
Results.StringGrid1.Cells[0,i+1]:=' '+IntToStr(i);
str (rk1[i]:12:10,s);
Results.StringGrid1.Cells[1,i+1]:=' '+s;
str (rk2[i]:12:10,s);
Results.StringGrid1.Cells[2,i+1]:=' '+s;
end;
Results.Label4.Caption:=' '+IntToStr (Dstat.col_blok);
str (Pob:9:7,s); Results.Label3.Caption:=' '+s;
str (Cs:9:7,s); Results.Label10.Caption:=' '+s;
str (PE1:12:10,s); str (D1:12:10,s1);
Results.Label7.Caption:=' '+concat(s,' +- ',s1);
str (PE2:12:10,s); str (D2:12:10,s1);
Results.Label8.Caption:=' '+concat(s,' +- ',s1);
Results.ShowModal;
end;
end;
end;
end;
end;
end;
procedure TDC_Menu.BitBtn8MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn8.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
BitBtn5.Font.Color:=clBlue;
end;
procedure TDC_Menu.BitBtn2Exit(Sender: TObject);
begin
BitBtn2.Font.Color:=clWindowText;
end;
procedure TDC_Menu.BitBtn3Exit(Sender: TObject);
begin
BitBtn3.Font.Color:=clWindowText;
end;
procedure TDC_Menu.BitBtn4Exit(Sender: TObject);
begin
BitBtn4.Font.Color:=clWindowText;
end;
procedure TDC_Menu.BitBtn5Exit(Sender: TObject);
begin
BitBtn5.Font.Color:=clWindowText;
end;
procedure TDC_Menu.BitBtn6Exit(Sender: TObject);
begin
BitBtn6.Font.Color:=clWindowText;
end;
procedure TDC_Menu.BitBtn7Exit(Sender: TObject);
begin BitBtn7.Font.Color:=clWindowText;end;
procedure TDC_Menu.BitBtn8Exit(Sender: TObject);
begin BitBtn8.Font.Color:=clWindowText;end;
procedure TDC_Menu.BitBtn2Enter(Sender: TObject);
begin BitBtn2.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn3Enter(Sender: TObject);
begin BitBtn3.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn4Enter(Sender: TObject);
begin BitBtn4.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn5Enter(Sender: TObject);
begin BitBtn5.Fon.Color:=clBlue;end;
procedure TDC_Menu.BitBtn6Enter(Sender: TObject);
begin BitBtn6.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn7Enter(Sender: TObject);
begin BitBtn7.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn8Enter(Sender: TObject);
begin BitBtn8.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn1Enter(Sender: TObject);
begin BitBtn1.Font.Color:=clBlue;end;
procedure TDC_Menu.BitBtn1Exit(Sender: TObject);
begin BitBtn1.Font.Color:=clWindowText;end;
procedure TDC_Menu.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin BitBtn1.Font.Color:=clBlue;end;
procedure TDC_Menu.FormClick(Sender: TObject);
begin
if DC_Menu.Cursor=crHelp
then if model=2 then Application.HelpCommand(HELP_CONTEXT,15)
else Application.HelpCommand(HELP_CONTEXT,2);
end;
procedure TDC_Menu.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if ARM.MDIChildCount=1 then
begin
ARM.SpeedButton1.Enabled:=False;
ARM.SpeedButton2.Enabled:=False;
ARM.SpeedButton3.Enabled:=False;
ARM.SpeedButton4.Enabled:=False;
ARM.Open1.Enabled:=False;
ARM.Save1.Enabled:=False;
ARM.Print1.Enabled:=False;
ARM.Color1.Enabled:=False;
end;
Action:=caFree;
end;
procedure TDC_Menu.BitBtn9Click(Sender: TObject);
begin
if DC_Menu.Cursor=crHelp
then Application.HelpCommand(HELP_CONTEXT,17)
else
begin
N_Canal2.Color:=Item_Color;
with Dncan do
begin
str(Hp:6:3,s); N_Canal2.Edit1.Text:=s;
str(Hc:6:4,s); N_Canal2.Edit3.Text:=s;
str(m,s); N_Canal2.Edit2.Text:=s;
str(Q:6:4,s); N_Canal2.Edit4.Text:=s;
case trunc (md*10) of
5 :N_Canal2.RadioGroup1.ItemIndex:=0;
10:N_Canal2.RadioGroup1.ItemIndex:=1;
20:N_Canal2.RadioGroup1.ItemIndex:=2;
end;
N_Canal2.RadioGroup2.ItemIndex:=1-dm;
N_Canal2.showModal;
if Cancel=true then Cancel:=false else
begin
DoRefl:=0;
val(N_Canal2.Edit1.Text,Hp,code);
val(N_Canal2.Edit2.Text,m,code);
val(N_Canal2.Edit3.Text,Hc,code);
val(N_Canal2.Edit4.Text,Q,code);
case N_Canal2.RadioGroup1.ItemIndex of
0:md:=0.5;
1:md:=1;
2:md:=2;
end;
dm:=1-N_Canal2.RadioGroup2.ItemIndex;
end;
end;
end;
end;
procedure TDC_Menu.BitBtn10Click(Sender: TObject);
begin
if DC_Menu.Cursor=crHelp
then Application.HelpCommand(HELP_CONTEXT,16)
else
begin
if DoRefl=0 then Dcan;
if Ddcan.Pcp<>0 then
begin
DoRefl:=1;
RU_Form.Color:=Item_Color;
RU_Form.RadioGroup1.ItemIndex:=DRust.Rule;
str(Ddcan.Pcp:10:8,s); RU_Form.Edit1.Text:=s;
RU_Form.ShowModal;
end;
if Cancel=true then Cancel:=false
else DRust.Rule:=RU_Form.RadioGroup1.ItemIndex;
BitBtn5.Enabled:=True;
end;
end;
{ Конец программы «unit Model_DC »}
end.
3.4 Листинг модуля кодека кодов БЧХ
unit Codec_BM; {Программа кодека двоичных кодов БЧХ с декодером по алгоритму Берликемпа-Месси во временном пространстве}
{$F+,O+}
interface
uses vartype;
var aa,a: array[0..255] of byte;
i,j,nk,jj,m:integer;
procedure Cycoder;
procedure Cydecoder;
implementation
{n= : длина кодового слова}
{ m=: расширение двоичного поля}
{sum_pro=: число ненулевых элементов произв. многочлена}
{sum_p=: число ненулевых элементов примитивного многочлена}
{gkod[i]: степени производящего многочлена}
{pkod[i]: степени примитивного многочлена}
function Pole(i,j:byte):byte; {умножение по mod n}
var p:integer;
begin
if (i=0) or (j=0) then Pole:=0 else begin
P:= (aa[i]+aa[j]) mod nk;
P:=a[p];
Pole:=p;end;
end;
function Sum(i,j:byte):byte; {сложение по mod n}
var z,s:integer;
x:array[0..10] of byte;
begin
for z:=0 to m-1 do
if odd(i shr z)=odd(j shr z) then x[z]:=0 else x[z]:=1;
s:=0;z:=1; {преобразование в десятичное число}
for i:=0 to m-1 do begin
s:= s+z*x[i];
z:=2*z; end;
sum:=s;
end;
procedure Npole;
var kod: array[0..255] of byte;
j,i,jj:integer;
begin
{вычисление элементов поля q^m:
a[0] .. a[n] -- значения элементов поля:a^0,a^1 .. a^n;
aa[1] ..aa[n] -- степени элементов: 0,1,2 и т.д.
Например, элементы поля GF(16):
a[i]:=(1,2,4,8,3,6,12,11,5,10,7,14,15,13,9,1);
aa[i]:=(0,1,4,2,8,5,10,3,14,9,7,6,13,11,12); }
With Duzo1 do
begin {определение примитивного многочлена}
for i:=1 to 5 do pkod[i]:=0;
if num[0]<3 then begin pkod[2]:=2;pkod[3]:=3;sum_p:=3 end
else if num[0]<7 then begin pkod[2]:=3;pkod[3]:=4;sum_p:=3 end
else if num[0]<13 then begin pkod[2]:=3;pkod[3]:=5;sum_p:=3 end
else if num[0]<25 then begin pkod[2]:=5;pkod[3]:=6;sum_p:=3 end
else if num[0]<43 then begin pkod[2]:=4;pkod[3]:=7;sum_p:=3 end
else if num[0]<77 then begin pkod[2]:=4;pkod[3]:=5;
pkod[4]:=6;pkod[5]:=8;sum_p:=5 end;
end;
m:=pkod[sum_p]; {расширение кода}
j:=1;{вычисление номинальной длины слова при укорочении кода}
for i:=0 to m-1 do j:=2*j;
nk:=j-1;
jj:=0;
repeat
jj:=jj+1;
for i:=1 to nk do kod[i]:=0;
kod[jj]:=1;
FOR i:=1 TO nk-m DO {деление на примитивный многочлен}
IF kod[i]=1 THEN
FOR j:=1 TO sum_p DO
kod[i+pkod[j]]:= 1-kod[i+pkod[j]];
a[nk-jj]:=0;
j:=1; {преобразование в десятичное число}
for i:=0 to m-1 do begin
a[nk-jj]:= a[nk-jj]+j*kod[nk-i];
j:=2*j; end;
until jj=nk-m;
for jj:=nk-m+1 to nk do
begin j:=1;{оставшиеся (nk-m) элементов}
for i:=1 to nk-jj do j:=2*j;
a[nk-jj]:=j;
end;
a[nk]:=1;
for jj:=0 to nk do begin j:=a[jj]; aa[j]:=jj; end; {степени элементов}
end;
procedure Cycoder; {кодер }
var i,j:integer;
begin with Duzo1 do
begin {ввод сигнала }
for i:=1 to k do inf_kod[i]:=inf_S[i];
for i:=k+1 to n do inf_kod[i]:=0;
for i:=1 to k do
if inf_kod[i]=1 then {деление на производящий мн-лен}
for j:=1 to sum_pro do begin
inf_kod[i+gkod[j-1]]:= 1-inf_kod[i+gkod[j-1]];
end;
for i:=1 to k do inf_kod[i]:=inf_S[i];
end;
end;{конец кодера}
procedure Cydecoder; {декодер }
var V,T,B,C: array[0..255] of byte;
r,dr,L,i:integer;
begin with Duzo1 do
begin
if Pro<>1e10 then begin Pro:=1e10;Npole; end;
if nk-n>0 then {укорочение кода,ввод данных }
for i:=0 to nk-n-1 do C[i]:=0;
for i:=nk-n to nk-1 do C[i]:=inf_dek[i+1-(nk-n)];
for i:=0 to nk-1 do begin V[i]:=1;B[i]:=1;end;
r:=0;L:=0;
repeat {декодирование}
r:=r+1;
dr:=0; {вычисление ошибки воспроизведения компоненты синдрома}
if odd(r) then
for i:=0 to nk-1 do
dr:=sum(dr,Pole(a[(i*r) mod nk],Pole(V[i],C[i])));
if dr=0 then {многочлен связей не изменять }
for i:=0 to nk-1 do B[i]:=Pole(a[nk-i],B[i])
else {вычислить новый многочлен связей}
begin
for i:=0 to nk-1 do
T[i]:= Sum(pole(dr,Pole(a[nk-i],B[i])),V[i]);
if 2*L<=r-1 then { увеличить длину регистра L}
begin L:=r-L;
for i:=0 to nk-1 do begin
B[i]:=pole(a[nk-aa[dr]],V[i]);
V[i]:=T[i]; end;
end
else {длину регистра V[i] оставить прежней}
for i:=0 to nk-1 do begin
V[i]:=T[i];
B[i]:=Pole(a[nk-i],B[i]);
end;
end;
until r>=2*Cm;
{исправление ошибок}
for i:=nk-n to k-1+(nk-n) do
if v[i]=0 then inf_out[i+1-(nk-n)]:=1- inf_dek[i+1-(nk-n)]
else inf_out[i+1-(nk-n)]:= inf_dek[i+1-(nk-n)];
end;
end;{конец декодера }
{Конец программы «unit Codec_BM»}
end.
3.5 Листинг модуля переменных и констант
unit VarType; {Модуль переменных и констант}
interface
const UZOon=True;UZOoff=False;
type
mass=array [0..7] of byte;
rec1=record p1sign:double;
end;
rec2=record md,Q,Hp,Hc,H1,H2:double; m,dm:integer;
end;
rec3=record p0,p1,p2,e0,e1,e2,p00,p01,p10,p11,
p12,p21,p22,Pcp,Ck:double;
end;
rec4=record pp,pi,e4,p4,p5,b1,b2,tm:double;
end;
rec5=record n,n0,k0:integer; col_blok:longint;
end;
rec6=record gkodStr:string; gKodSt:string[30]; codec_num:word;
n,k,n0,k0,sum_pro,cm:integer; num: mass;
end;
rec6_1=record gkodCh:array [0..200] of char;
gKodSt:string[30];
codec_num:word;
n,k,n0,k0,sum_pro,cm:integer;
num:mass;
end;
rec7=record Aprm,Cprm,Lprm:integer;
end;
rec8=record Rule:word;
end;
rec9=record{Для файла исходных данных}
Signal:rec1;
Ncan:rec2;
Dcan:rec3;
Brk:rec4;
Uzo:rec6_1;
Prm:rec7;
Rust:rec8;
Qualifier:double;
end;
rec10=record codec_num:word; d,k:integer;
end;
rec11=record Par1:integer;
end;
rec12=record dt,dn,dk: integer; poly:string[90];
end;
rec13=record dj,na:integer; poly:string[100];
end;
DataFile=rec9;
var
gkod: array [0..300] of Integer;
inf_in: array [0..2100] of Byte;
inf_Sprm: array [0..4000] of Byte;
inf_Spred: array [0..2100] of Byte;
inf_S: array [0..2100] of Byte;
inf_kod: array [0..5000] of Byte;
inf_dek: array [0..2100] of Byte;
inf_out: array [0..2100] of Byte;
inf_err,b: array [0..5000] of Byte;
inf_prm: array [0..5000] of Byte;
pro_kod: array [0..2100] of Byte;
ip,pr,sindr: array [0..2100] of Byte;
mm: array [0..10000] of Byte;
rk1: array [0..2100] of double;
rk2: array [0..2100] of double;
PsP: array [0..5000] of Integer;
pkod: array [1..10] of Byte;
Pob,Cs,Ck,Proo,Pro,StrtKackad:double;
PE1,PE2,pe, D1,D2,d:double;
DSignal:rec1;
Dncan:rec2;
Ddcan:rec3;
Dbrk:rec4;
Dstat:rec5;
Duzo1:rec6;
Dprm:rec7;
DRust:rec8;
Par:rec11;
cycle:array[1..87] of rec12;
svert:array[1..170] of rec13;
model,DoRefl,sum_p,n0_sv:byte;
rk_count,rk1_count,rk2_count,blok_sv:integer;
gk1,gk2,gk3,gk4,gk5,gk6,gk7:string;
implementation
var i:integer;
begin {Значения переменных по умолчанию, таблицы кодов БЧХ и
свёрточных кодов}
for i:=0 to 300 do gkod[i]:=0;
with Dncan do
begin
Hp:=3; Hc:=0;Q:=0.01;m:=1;md:=0.5;H1:=Hp+Hc;H2:=0.2*H1;dm:=1;
end;
with Dbrk do
begin
pp:=0;e4:=1;p4:=0.7;p5:=0.3;b1:=5;b2:=0.2e+4;tm:=0.36e+3;
end;
with Dsignal do p1sign:=0.5;
with Dstat do
begin n:=36; n0:=2;k0:=1; col_blok:=1000
end;
with Dprm do
begin Aprm:=1;Cprm:=1;Lprm:=1
end;
with Duzo1 do
begin codec_num:=5; n:=7; k:=3;cm:=1
end;
with DUZO1 do gKodStr:='35';
DRust.Rule:=0;
DoRefl:=0;
{Таблицы Кодов БЧХ и свёрточных кодов}
cycle[1].dt:=1; cycle[1].dn:=7; cycle[1].dk:=4; cycle[1].poly:='13';
cycle[2].dt:=3; cycle[2].dn:=7; cycle[2].dk:=1; cycle[2].poly:='177';
cycle[3].dt:=1; cycle[3].dn:=15; cycle[3].dk:=11; cycle[3].poly:='23';
cycle[4].dt:=2; cycle[4].dn:=15; cycle[4].dk:=7; cycle[4].poly:='721';
cycle[5].dt:=3; cycle[5].dn:=15; cycle[5].dk:=5; cycle[5].poly:='2467';
cycle[6].dt:=7; cycle[6].dn:=15; cycle[6].dk:=1; cycle[6].poly:='77777';
cycle[7].dt:=1; cycle[7].dn:=31; cycle[7].dk:=26; cycle[7].poly:='45';
cycle[8].dt:=2; cycle[8].dn:=31; cycle[8].dk:=21; cycle[8].poly:='3551';
cycle[9].dt:=3; cycle[9].dn:=31; cycle[9].dk:=16; cycle[9].poly:='107657';
cycle[10].dt:=5; cycle[10].dn:=31; cycle[10].dk:=11; cycle[10].poly:='5423325';
cycle[11].dt:=7; cycle[11].dn:=31; cycle[11].dk:=6; cycle[11].poly:='313365047';
cycle[12].dt:=15;cycle[12].dn:=31;cycle[12].dk:=1; cycle[12].poly:='17777777777';
cycle[13].dt:=1; cycle[13].dn:=63; cycle[13].dk:=57; cycle[13].poly:='103';
cycle[14].dt:=2; cycle[14].dn:=63; cycle[14].dk:=51; cycle[14].poly:='12471';
cycle[15].dt:=3; cycle[15].dn:=63; cycle[15].dk:=45; cycle[15].poly:='1701317';
cycle[16].dt:=4; cycle[16].dn:=63; cycle[16].dk:=39; cycle[16].poly:='166623567';
cycle[17].dt:=5;cycle[17].dn:=63; cycle[17].dk:=36; cycle[17].poly:='1033500423';
cycle[18].dt:=6;cycle[18].dn:=63;cycle[18].dk:=30;cycle[18].poly:='157464165547';
cycle[19].dt:=7;cycle[19].dn:=63;cycle[19].dk:=24;cycle[19].poly:='17323260404441';
cycle[20].dt:=10;cycle[20].dn:=63;cycle[20].dk:=18;cycle[20].poly:='1363026512351725';
cycle[21].dt:=11;cycle[21].dn:=63;cycle[21].dk:=16;cycle[21].poly:='6331141367235453';
cycle[22].dt:=13;cycle[22].dn:=63;cycle[22].dk:=10;cycle[22].poly:='472622305527250155';
cycle[23].dt:=15;cycle[23].dn:=63;cycle[23].dk:=7;cycle[23].poly:='5231045543503271737';
cycle[24].dt:=31;cycle[24].dn:=63;cycle[24].dk:=1;cycle[24].poly:='777777777777777777777';
cycle[25].dt:=1; cycle[25].dn:=127; cycle[25].dk:=120; cycle[25].poly:='211';
cycle[26].dt:=2; cycle[26].dn:=127; cycle[26].dk:=113; cycle[26].poly:='41567';
cycle[27].dt:=3; cycle[27].dn:=127; cycle[27].dk:=106; cycle[27].poly:='11554743';
cycle[28].dt:=4;cycle[28].dn:=127;cycle[28].dk:=99; cycle[28].poly:='3447023271';
cycle[29].dt:=5;cycle[29].dn:=127;cycle[29].dk:=92;cycle[29].poly:='624730022327';
cycle[30].dt:=6;cycle[30].dn:=127;cycle[30].dk:=85;cycle[30].poly:='130704476322273';
cycle[31].dt:=7;cycle[31].dn:=127;cycle[31].dk:=78;cycle[31].poly:='26230002166130115';
cycle[32].dt:=9;cycle[32].dn:=127;cycle[32].dk:=71;cycle[32].poly:='6255010713253127753';
cycle[33].dt:=10;cycle[33].dn:=127;cycle[33].dk:=64;cycle[33].poly:='1206534025570773100045';
cycle[34].dt:=11;cycle[34].dn:=127;cycle[34].dk:=57;cycle[34].poly:='335265252505705053517721';
cycle[35].dt:=13;cycle[35].dn:=127;cycle[35].dk:=50;cycle[35].poly:='54446512523314012421501421';
cycle[36].dt:=14;cycle[36].dn:=127;cycle[36].dk:=43;cycle[36].poly:='17721772213651227521220574343';
cycle[37].dt:=15; cycle[37].dn:=127; cycle[37].dk:=36; cycle[37].poly:='3146074666522075044764574721735';
cycle[38].dt:=21; cycle[38].dn:=127; cycle[38].dk:=29; cycle[38].poly:='403114461367670603667530141176155';
cycle[39].dt:=23; cycle[39].dn:=127; cycle[39].dk:=22; cycle[39].poly:='12337607040472252243544562...
Подобные документы
Проект автоматизированного рабочего места для работы с клиентами и использования клиентских баз данных. Регистрация данных о состоянии объекта управления. Обеспечение взаимодействия человека с системой. Доступ к результатам регистрации информации.
курсовая работа [1,7 M], добавлен 02.10.2010Проектирование автоматизированного рабочего места секретаря кафедры с использованием технологии прототипного проектирования. Формализация процесса проектирования. Методика оценки технико-экономической эффективности применения выбранной технологии.
курсовая работа [940,8 K], добавлен 06.05.2014Разработка и реализация автоматизированного рабочего места для менеджера по продажам компьютерной техники. Требования к функциональным характеристика программного изделия. Стадии и этапы разработки. Эксплуатационная документация, руководство оператора.
курсовая работа [686,9 K], добавлен 19.05.2014Общие принципы построения информационных систем и их реализации на языке программирования Паскаль. Разработка программного обеспечения для создания автоматизированного рабочего места "Склад" для ООО "Комторг". Основные требования к ресурсам компьютера.
дипломная работа [1,2 M], добавлен 13.01.2016Технологический процесс сбора, передачи, обработки и выдачи информации. Назначение программного продукта. Анализ экономических показателей внедрения автоматизированного рабочего места кассира-операциониста. Организация рабочего места оператора ЭВМ.
дипломная работа [2,6 M], добавлен 08.12.2014Создание программных комплексов для систем автоматизированного проектирования с системами объемного моделирования и экспресс-тестами. SolidWorks - мировой стандарт автоматизированного проектирования. Пользовательский интерфейс, визуализация модели.
курсовая работа [3,2 M], добавлен 13.10.2012Общая характеристика информационных систем, предназначенных для передачи, преобразования и хранения информации. Изучение форм представления детерминированных сигналов. Энтропия сложных сообщений. Рассмотрение основных элементов вычислительных машин.
лекция [1,5 M], добавлен 13.04.2014Разработка информационно-программного комплекса для использования на IBM-совместимых ПК в качестве автоматизированного рабочего места обработки информации. Реализация базы данных в СУБД IBexpert. Характеристики разработанной информационной системы.
курсовая работа [1,3 M], добавлен 13.08.2012Постановка задачи, системные требования, требования к входным данным и выходным формам. Описание пользовательского интерфейса, применяемых алгоритмов и их реализация. Определение логической и функциональной структуры программного продукта, его алгоритм.
дипломная работа [1,1 M], добавлен 03.07.2014Практический опыт и проблемы внедрения систем автоматизированного составления расписания. Описание исходных данных для разработки функционала программы. Описание структуры разделов пользовательского интерфейса. Модуль проверок корректности расписания.
курсовая работа [3,6 M], добавлен 26.09.2014Выгоды от автоматизации магазина автозапчастей. Виды и структура автоматизированного рабочего места. Анализ систем-аналогов. Информационное обеспечение. Структура описания таблиц БД. Описание работы разработанного приложения. Перспективы развития системы.
презентация [535,2 K], добавлен 21.06.2013Создание автоматизированного рабочего места сотрудника отдела кадров администрации Петровского муниципального района г. Светлоград. Задачи проектирования: реализация информационной подсистемы "Отдел кадров". Информационное и программное обеспечение.
дипломная работа [7,7 M], добавлен 24.06.2011Состав, содержание и документирование работ на стадиях создания систем автоматизированного проектирования. Стандарты создания технологического оборудования, тактико-техническое задание и технико-экономическое обоснование комплекса средств автоматизации.
курсовая работа [26,9 K], добавлен 22.11.2009Особенности и этапы создания автоматизированного рабочего места мастера строительно-монтажных работ. Рекомендации по применению информационных технологий в процессе автоматизации функций управления. Выявление проблем и недостатков в ИС цеха вентзаготовок.
дипломная работа [4,7 M], добавлен 30.08.2010Определение общих требований к организации автоматизированного рабочего места. Создание модели автоматизированного рабочего места менеджера фирмы "Информстиль". Разработка базы данных и описание алгоритма программы по учету продаж вычислительной техники.
дипломная работа [2,9 M], добавлен 03.07.2015Описание экономической сущности деятельности сотрудника администрации отдела по оценке земли. Характеристика нормативно-справочной и входной информации. Описание реализации клиентской части автоматизированного рабочего места. Обоснование выбора СУБД.
дипломная работа [2,3 M], добавлен 23.09.2014Описание работы заместителя главы районной администрации, информационное, техническое и программное обеспечение его автоматизированного рабочего места. Особенности основных задач и функций специалиста. Общее и функциональное программное обеспечение.
реферат [41,2 K], добавлен 16.04.2014Структура и классификация систем автоматизированного проектирования. Виды обеспечения САПР. Описание систем тяжелого, среднего и легкого классов. Состав и функциональное назначение программного обеспечения, основные принципы его проектирования в САПР.
курсовая работа [37,7 K], добавлен 18.07.2012Центральное понятие кибернетики – информация. Комплексная автоматизация процессов восприятия, преобразования, передачи, обработки и отображения информации и создание автоматизированных систем управления на различных уровнях. Система передачи информации.
книга [663,7 K], добавлен 07.05.2009Способы и методы разработки удаленного автоматизированного рабочего места специалиста службы социальной защиты района Северное Тушино г. Москвы. Теория реляционных баз данных. Этапы жизненного цикла проекта, обоснование его экономической эффективности.
дипломная работа [644,5 K], добавлен 19.02.2013