5. Додаток
Лістинг програмного модуля
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <graphics.h>
#include <string.h>
#define Size 1600
#define Meanings 500
#define KO4
#defineKMO7
#defineKSO7
#define INTR 8 /* The clock tick interrupt */
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
static int kf;
int stop=1;
FILE *outst;
/*--------------- входные данные (4 канала) ------------------*/
int
azp[4][Meanings],
out[4][Meanings];
int
outmed[28]={ 0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0
},
outsr[28]={ 0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0
},
mean[4]={0,0,0,0},
kpmo[4]={0,0,0,0},
krs[4]={0,0,0,0},
amvoi[4]={0,0,0,0},
ofsmed[4]={0,0,0,0},
sum[4]={0,0,0,0},
tmpmed[7]={0,0,0,0,0,0,0},
flags[4]={0,0,0,0},
flags1[4]={0,0,0,0},
fla[4]={0,0,0,0},
iper[4]={0,0,0,0},
iex[4]={0,0,0,0},
io[4]={0,0,0,0},
fex[4]={0,0,0,0},
imean[4]={-1,-1,-1,-1},
st[4]={2,2,2,2},
ipd[4]={0,0,0,0},
ips[4]={0,0,0,0},
per[4][10],
percnt[4]={-1,-1,-1,-1};
/*переменные программы*/
int
t,f1=0,flag,iex1=0,j,kk=0,
ps=0,z,pd=1,
dko=0,
k=1,i,m,fl=1,
dx=3,dx1=-4;
char str[5];
/*выходные данные*/
static int me[4][Meanings],/*экстремумы*/
mp[4][Meanings],/*перегибы*/
mo[4][Meanings],/*особые точки*/
mr[4][Meanings],/*первые разности*/
ms[4][Meanings],/*секунды*/
md[4][Meanings];/*дискретные отсчеты*/
/* Переменные для процедуры обработки */
int ot1,ot2,ot3,ot4,ot5,ot6;
int tf,tf1,ne,vk,
int masp[4][11];
int kaz;
long sq,s;
void init_azp(int[][Meanings],char[] );
void interrupt ( *oldhandler)(__CPPARGS);
void interrupt handler(__CPPARGS)
{
if(--kf<0)
{
oldhandler();
kf=5;
}
else
outportb(0x20,0x20);
if(mean[dko]<Meanings-1)
{
amvoi[dko]=azp[dko][mean[dko]];
putpixel(dx,(dko*100+350)-amvoi[dko]/2,12);
putpixel(dx,dko*100+75,10);
mean[dko]++;
outmed[dko*7+ofsmed[dko]]=amvoi[dko];
if(mean[dko]>KMO-1)
{
for(i=0;i<7;i++)
tmpmed[i]=outmed[dko*7+i];
k=1;
while(k==1)
{
k=0;
for(i=0;i<6;i++)
if(tmpmed[i]<tmpmed[i+1])
{
m=tmpmed[i];
tmpmed[i]=tmpmed[i+1];
tmpmed[i+1]=m;
k=1;
}
}
outsr[dko*7+krs[dko]]=outmed[dko*7+3];
for(i=dko*7;i<dko*7+6;i++)
outmed[i]=outmed[i+1];
if(krs[dko]>=KSO-1)
{ // сглаживание
sum[dko]=0;
for(i=dko*7;i<dko*7+7;i++)
sum[dko]+=outsr[i];
for(i=dko*7;i<dko*7+6;i++)
outsr[i]=outsr[i+1];
++imean[dko];
out[dko][imean[dko]]=sum[dko]/7;
putpixel(dx1,(dko*100+350)-out[dko][imean[dko]]/2,14);
if(imean[dko]>=1)
{ // вычисление 1-ой разности
mr[dko][imean[dko]-1]=out[dko][imean[dko]] out[dko][imean[dko]-1];
if (imean[dko]>=3)
{ // вычисление второй разности
if(mr[dko][imean[dko]-2]<mr[dko][imean[dko]-3])
{
if(flags[dko]==1)
{
mp[dko][iper[dko]]=imean[dko]-2;
mo[dko][io[dko]++]=out[dko][imean[dko]-2];
md[dko][ipd[dko]++]=pd;
ms[dko][ips[dko]++]=ps;
iper[dko]++;
}
flags[dko]=-1;
}
else
if(mr[dko][imean[dko]-2]>mr[dko][imean[dko]-3])
{
if (flags[dko]==-1)
{
mp[dko][iper[dko]]=imean[dko]-2;
mo[dko][io[dko]++]=out[dko][imean[dko]-2];
md[dko][ipd[dko]++]=pd;
ms[dko][ips[dko]++]=ps;
iper[dko]++;
}
flags[dko]=1;
}
}
if((out[dko][1]-out[dko][0])>0)
flags1[dko]=1;
else
flags1[dko]=-1;
if((imean[dko]>14)&&(imean[dko]%6==0))
{
for(i=st[dko];i<imean[dko];i++)
{
if((out[dko][i]>out[dko][i-1])&&(flags1[dko]==-1))
{
st[dko]=i;
for(j=i+1,t=0;(t<13)&&(j<imean[dko]);t++,j++)
if(out[dko][j]<out[dko][i-1])
{fla[dko]=0;break;}
else fla[dko]=1;
if( (fla[dko]==1))
{
if(me[dko][iex[dko]-1]!=i-1 ){
me[dko][iex[dko]++]=i-1;
mo[dko][io[dko]++]=out[dko][me[dko][iex[dko]-1]];
fex[dko]=0;
md[dko][ipd[dko]++]=pd;
ms[dko][ips[dko]++]=ps;
circle(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,2);
floodfill(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,15);
}
flags1[dko]=1;
}
else
i=j;
}
else
if((out[dko][i]<out[dko][i-1])&&(flags1[dko]==1))
{
st[dko]=i;
for(j=i+1,t=0;(t<13)&&(j<imean[dko]);t++,j++)
if(out[dko][j]>out[dko][i-1])
{fla[dko]=0;break; }
else fla[dko]=1;
if((fla[dko]==1))
{
if(me[dko][iex[dko]-1]!=i-1 ){
me[dko][iex[dko]++]=i-1;
md[dko][ipd[dko]++]=pd;
ms[dko][ips[dko]++]=ps;
mo[dko][io[dko]++]=out[dko][me[dko][iex[dko]-1]];
fex[dko]=1;
circle(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,2);
floodfill(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,15);
}
flags1[dko]=-1;
}
else
i=j;
}
}
}
if((iex[dko]>1)&&(fex[dko]))
{
tf=me[0][1]-me[0][0]+1;
tf1=mo[0][14]-mo[0][12];
if(percnt[dko]==0)
line(me[dko][0]+10,dko*100+70,me[dko][0]+10,dko*100+80);
if(out[dko] [ me[dko] [iex[dko]-2]]<out[dko][ me[dko] [iex[dko]-iex[dko]]]+20)
{
fex[dko]=0;
++percnt[dko];
per[dko][percnt[dko]]=me[dko][iex[dko]-2];
if(percnt[dko]>0)
{
ne=iex[dko]-1+percnt[dko]-1;
if(ne%5)
goto End;
masp[dko][1] = dko + 1;
ot1=me[dko][(percnt[dko]-1)*4+0];
ot2=me[dko][(percnt[dko]-1)*4+1];
masp[dko][2]=out[dko][ot2];
ot3=me[dko][(percnt[dko]-1)*4+3];
masp[dko][5]=out[dko][ot3];
ot4=me[dko][(percnt[dko]-1)*4+2];
masp[dko][4]=out[dko][ot4];
masp[dko][3]=out[dko][ot4-4];
masp[dko][7]=per[dko][percnt[dko]]-per[dko][percnt[dko]-1];
if(!((masp[dko][7]>98)&&(masp[dko][7]<104) ))
goto End;
masp[dko][6]=me[dko][iex[dko]-1]-me[dko][iex[dko]-2]+1;
if(!( (masp[dko][6]>tf-3)&&(masp[dko][6]<tf+3)))
goto End;
for(int w =0;out[dko][ot2]!=mo[dko][w];w++);
if(! ( mo[dko][w]-mo[dko][w-2]+2) )
goto End;
line(me[dko][iex[dko]-2]+10,dko*100+70,me[dko][iex[dko]-2]+10,dko*100+80);
sprintf(str,"%d",masp[dko][7]);
setcolor(11);
outtextxy(me[dko][iex[dko]-2]-50,dko*100+85,str);
setcolor(15);
ot6=me[dko][(percnt[dko]-1)*4+4];
masp[dko][9]=me[dko][(percnt[dko]-1)*4+4]/100;
masp[dko][10]=me[dko][(percnt[dko]-1)*4+4]%100;
kaz=(out[dko][ot1]+out[dko][ot6])/2;
for(vk=2;vk<6;vk++)
masp[dko][vk]=masp[dko][vk]-kaz;
s=0;
for(vk=0;vk<ot4-1;vk++)
s=s+(out[dko][vk]+out[dko][vk+1])/2;
sq=(s/ot4-kaz)*masp[dko][7];
masp[dko][8]=sq;
fprintf(outst,"t%d",percnt[dko]);
fprintf(outst,"t");
for(z=1;z<11;z++)
fprintf(outst,"%5d ",masp[dko][z]);
fprintf(outst,"n");
}
}
}
}
}
else
++krs[dko];
}
else
++ofsmed[dko];
End:if(dko==3)
{
++pd;
if(pd==100)
{
++ps;
pd=0;
}
dko=0;
++dx;
++dx1;
}
else
++dko;
}
else
stop=-1;
}
void main(void)
{
int gdriver = DETECT, gmode, errorcode;
unsigned int newtic=10947,oldtic=65535L;// new tic for 100,1 in second
init_azp(azp,"kanal1.dat");
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %sn", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
outst=fopen("masp.res","w");
if(outst==NULL){
puts("Anable open filen");
exit(1);
}
fprintf(outst,"ttttРезультаты обработки n");
fprintf(outst,"n");
fprintf(outst," ПериодttttПараметры сигнала n");
setbkcolor(0);
setcolor(1);
cleardevice();
line(1,100,640,100);
line(1,200,640,200);
line(1,300,640,300);
line(1,400,640,400);
line(1,1,1,400);
setcolor(15);
outportb(0x43,0x36);
outportb(0x40,newtic&0x00ff);
outportb(0x40,newtic>>8);
oldhandler = getvect(INTR);
setvect(INTR, handler);
while (stop==1)
{
}
setvect(INTR, oldhandler);
outportb(0x43,0x36);
outportb(0x40,oldtic&0x00ff);
outportb(0x40,oldtic>>8);
fclose(outst);
getch();
closegraph();
}
void init_azp(int mas[][Meanings],char filename[])
{
int i=0,j;
unsigned int *tmp;
FILE *f;
char mode[]="rt";
f=fopen(filename,mode);
if(f==NULL){
puts("Anable open filen");
exit(1);
}
for(i=0;i<4;i++)
{
for(j=0;j<500;j++)
{
fscanf(f,"%d",tmp);
mas[i][j]=*tmp;
}
rewind(f);
}
fclose(f);
}
Результати роботи програми
... В АБС АКБ «ПРОМІНВЕСТБАНК» ТА ОЦІНКА РІВНЯ ВРАЗЛИВОСТІ БАНКІВСЬКОЇ ІНФОРМАЦІЇ 3.1 Постановка алгоритму задачі формування та опис елементів матриці контролю комплексної системи захисту інформації (КСЗІ) інформаційних об’єктів комерційного банку В дипломному дослідженні матриця контролю стану побудови та експлуатації комплексної системи захисту інформації в комерційному банку представлена у вигляді ...
... ів і зборів. Розділ 3. Напрямки підвищення рівня організаційної та правової регламентації діяльності Київської обласної митниці 3.1 Напрями вдосконалення організаційної та правової регламентації діяльності Київської обласної митниці Основні напрями розвитку Державної митної служби України координу-ються «Концепцією створення багатофункціональної комплексної системи "Електронна митниця" в ...
... ї технічної кваліфікації. 1. Коротка характеристика об'єкта автоматизації і технологічного процесу, що протікає в ньому Розглянемо схему автоматизації регулювання адсорберів з нерухомим шаром адсорбента. Адсорбція - це хімічний процес поглинання компонента газу пари або розчину твердим пористим поглиначем , тобто процес розділення який характеризується із газової або рідкої фази. Рі ...
... достаточно нажать кнопку <Выход>. При входе в пункт меню «Просмотр» / «Основные фонды» на экране появляется реестр основных средств, выводится наиболее полный перечень полей базы данных OSl.dbf. Причем данные предоставлены только для просмотра. Для модификации данных служит пункт меню «Коррекция» / «Основные фонды». Чтобы отредактировать запись курсор подводят к нужной строке списка и ...
0 комментариев