void initall() { static int inited; if (inited) return; inited = 1; initimport(); /* Modules '__builtin__' and 'sys' are initialized here, they are needed by random bits of the interpreter. All other modules are optional and are initialized when they are first imported. */ initbuiltin(); /* Also initializes builtin exceptions */ initsys(); setpythonpath(getpythonpath()); initsigs(); /* Signal handling stuff, including initintr() */ initmain(); }
int main(){ // Global variables values are set here Nsph = 8; eta = 0.644; Ncol = 0; // sigma = 2.0f*sqrt(eta/((double)Nsph*PI)); initsys(); return 0; }
bool ReadKadr() { int fff; char sFile[50]="/tmp/testVOIK.dat"; char *m_temp,*m_kadr,*m11; int VideoOffset; TEX_INFO *tex_inf; char *s; int i,ntk,maska[5],kko=0,kzv=0; CONVOLUTION conv; CONVOLUTION *cnv=&conv; nObj oobj; nObj *pobj=&oobj; double A,T; UPRST &u=uprst; m_temp=(char*)malloc(1024); fff=open(sFile,O_RDONLY); if (fff<0) { printf("Error read file /tmp/testVOIK.dat\n"); return false; } read(fff,m_temp,1024); tex_inf=(TEX_INFO*)(m_temp+16); VideoOffset=tex_inf->nVideoOffset; // printf("kadr%6d Video%6d\n",tex_inf->nCadrNum,tex_inf->nVideoOffset); if (VideoOffset!=1024) { m_kadr=(char*)malloc(VideoOffset); memcpy(m_kadr,m_temp,1024); free(m_temp); read(fff,m_kadr+1024,VideoOffset-1024); } else m_kadr=m_temp; tex_inf=(TEX_INFO*)(m_kadr+16); m11=(char*)malloc(tex_inf->wSizeX*tex_inf->wSizeY*sizeof(short)); read(fff,m11,tex_inf->wSizeX*tex_inf->wSizeY*sizeof(short)); close(fff); char *stanc; int stani=0; stanc=(char*)tex_inf->pbtReserv2; //номер станции stani=atoi(stanc); if (stani<561||stani>602||(stani%10)>2) { if (!readCONFIG()) return false; } else { //printf("CTAH=%s (%d)\n",stanc,stani); for(i=1;i<=4;i++) RABTK[i]=1; TIPST=stani/10; NPORST=stani%10; switch(TIPST) { case 56: MAXTK=4; break; case 57: MAXTK=4; break; case 58: MAXTK=2; break; case 59: MAXTK=2; break; case 60: MAXTK=1; break; } NUMRABTK=0; for(i=1;i<=MAXTK;i++) NUMRABTK+=RABTK[i]; } IMIT = IMITVU = IMITOS[OS_A] = IMITOS[OS_L] = IMITOS[OS_R] = IMITAPOI = IMITCTK = 0; num_komplex=2; //НОМЕР КОМПЛЕКСА dumpizmer=1; //IMITAPOI=1; //deb //initrv(); //date-time //printf("D=%2d.%2d.%4d JD=%f\n",rvday,rvmonth,rvyear,JDsea); struct stat fi; char *sobj; int count_o=0; strcpy(sFile,"/tmp/testVOIK.obj"); if (stat(sFile,&fi)==0) { sobj=(char*)malloc(fi.st_size); fff=open(sFile,O_RDONLY); if (fff<0) { printf("Error read file /tmp/testVOIK.obj\n"); return false; } read(fff,sobj,fi.st_size); close(fff); count_o=fi.st_size/sizeof(nObj); //printf("count_o=%d\n",count_o); } rvday =tex_inf->btExpDay; rvmonth=tex_inf->btExpMonth; rvyear =tex_inf->btExpYear+2000; rvhour =tex_inf->btExpHour; rvmin =tex_inf->btExpMinutes; rvsec =tex_inf->btExpSeconds; rvtime=hms_to_rvtime(rvhour,rvmin,rvsec); standard_dump_names(rvday,rvmonth,rvyear,rvhour); // printf("Date=%d.%d.%d hour=%d %s\n",rvday,rvmonth,rvyear,rvhour,ftextdump); if (!open_text_dump()) return 0; initsys(0,ftextdump); initcsn(); if (!initglobst(TIPST,NPORST,rvday,rvmonth,rvyear,rvhour)) return false; // printf("ST=%d%d\n",TIPST,NPORST); // printf("D=%2d.%2d.%4d JD=%lf\n",rvday,rvmonth,rvyear,JDsea); initinter(); T=tex_inf->btExpHour*3600+tex_inf->btExpMinutes*60+ tex_inf->btExpSeconds+tex_inf->nExpMicroseconds/1000000.0+tex_inf->nExposition/2000000.0; if (tex_inf->wConvolutionsCount==0) return false; switch (tex_inf->btCamType) { case 0:s="БИК";break; case 1:s="ШПК";break; case 2:s="ЛИК";break; case 3:s="БПК";break; } A=(tex_inf->iDatchA%524288)*360./524288.; if(A>215) A=A-360; cd[OS_A]=A; cd[OS_L]=(tex_inf->iDatchL%524288)*360./524288.; cd[OS_R]=(tex_inf->iDatchR%524288)*360./524288.; timecd[OS_A]=timecd[OS_L]=timecd[OS_R]=rvtime; skor[OS_A]=skor[OS_L]=skor[OS_R]=0; ntk=tex_inf->btCamNum; //номер камеры for (i=1;i<=MAXTK;i++) maska[i]=0; maska[ntk]=1; NUMRABTK=0; for (i=1;i<=MAXTK;i++) { RABTK[i]=maska[i]; NUMRABTK+=RABTK[i]; } int bin=0; switch (tex_inf->btBinX) { case 0:bin=1;break; case 1:bin=2;break; case 2:bin=4;break; case 3:bin=8;break; } pasbin(ntk)=bin; ObjAPOI[ntk]=(nObj*)malloc(sizeof(nObj)*tex_inf->wConvolutionsCount); KOAPOI[ntk]= (KOtype*)malloc(sizeof(KOtype)*tex_inf->wConvolutionsCount); ZVAPOI[ntk]= (ZVtype*)malloc(sizeof(ZVtype)*tex_inf->wConvolutionsCount); printf("kadr%6d %s T=%d:%d:%d:%d A=%8.3f L=%8.3f r=%8.3f TK=%d Bin=%d T=%f RT=%f JD=%f\n", tex_inf->nCadrNum,s, tex_inf->btExpHour,tex_inf->btExpMinutes,tex_inf->btExpSeconds,tex_inf->nExpMicroseconds, cd[OS_A],cd[OS_L],cd[OS_R],ntk,bin,T,rvtime,JDsea); if (!IMITAPOI) { double x,y,vx,vy; get_VXVY_zv(ntk,cd[OS_A],cd[OS_L],cd[OS_R],skor[OS_A],skor[OS_L],skor[OS_L],&vx,&vy); for (i=0;i<tex_inf->wConvolutionsCount;i++) { nObj *obj=&ObjAPOI[ntk][i]; if (count_o==0) { memcpy(cnv,m_kadr+256+i*sizeof(CONVOLUTION),sizeof(CONVOLUTION)); //coord_pix2mm(ntk,cnv->nX,cnv->nY,&x,&y); x=cnv->nX;y=cnv->nY; obj->X=x; obj->Y=y; obj->DX=cnv->wReserv==1?0:vx; obj->DY=cnv->wReserv==1?0:vy; obj->S=cnv->nS; obj->V=cnv->nV; obj->KO=cnv->wReserv==1?1:-1; obj->T=T; if (cnv->wReserv==+1) { KOtype *ko=&KOAPOI[ntk][kko]; if (kko>=MAXKKO) continue; coord_pix2mm(ntk,cnv->nX,cnv->nY,&x,&y); ko->x=x; ko->y=y; ko->vx=ko->vy=0; ko->e=cnv->nV; kko++; } else if (cnv->wReserv==65535) { ZVtype *zv=&ZVAPOI[ntk][kzv]; if (kzv>=MAXKZV) continue; coord_pix2mm(ntk,cnv->nX,cnv->nY,&x,&y); zv->x=x; zv->y=y; zv->e=cnv->nV; kzv++; } printf("wNum=%3d s=%6d v=%8d x=%4d y=%4d ko=%d\n",cnv->wNum,cnv->nS,cnv->nV,cnv->nX,cnv->nY,cnv->wReserv); } else { memcpy(pobj,sobj+i*sizeof(nObj),sizeof(nObj)); obj->X=pobj->X; obj->Y=pobj->Y; obj->DX=pobj->DX; //pobj->KO==1?pobj->DX:vx; obj->DY=pobj->DY; //pobj->KO==1?pobj->DY:vy; obj->S=pobj->S; obj->V=pobj->V; obj->KO=pobj->KO==1?1:-1; obj->T=pobj->T; if (pobj->KO==+1) { KOtype *ko=&KOAPOI[ntk][kko]; if (kko>=MAXKKO) continue; coord_pix2mm(ntk,obj->X,obj->Y,&x,&y); ko->x=x; ko->y=y; ko->vx=ko->vy=0; ko->e=cnv->nV; kko++; //????? rvhour =obj->T/3600; rvmin =(obj->T-rvhour*3600)/60; rvsec =obj->T-rvhour*3600-rvmin*60; rvtime=hms_to_rvtime(rvhour,rvmin,rvsec); } else //if (pobj->KO==-1) ??? { ZVtype *zv=&ZVAPOI[ntk][kzv]; if (kzv>=MAXKZV) continue; coord_pix2mm(ntk,obj->X,obj->Y,&x,&y); zv->x=x; zv->y=y; zv->e=obj->V; kzv++; } printf("i=%3d s=%6.2f v=%8.2f x=%f y=%f dx=%f dy=%f T=%8.2f ko=%d\n",i,obj->S,obj->V,obj->X,obj->Y,obj->DX,obj->DY,obj->T,obj->KO); } } KolobjAPOI[ntk]=tex_inf->wConvolutionsCount; //kko+kzv; KKOAPOI[ntk]=kko; KZVAPOI[ntk]=kzv; if (dumpizmer) { dump_izmer(ntk); } printf("KKO=%d KZV=%d\n",kko,kzv); } else { IZMERAPOI(RABTK); } printf( "\n" "╔═версия от %-8s════════════════════════════════════════════════╗\n" "║ *** Запущена комплексная программа станции %dЖ6-%d *** ║\n" "║ Дата: %02d/%02d/%4d Время: %02d:%02d:%02.0f ║\n", myversion_date, TIPST,NPORST,rvday,rvmonth,rvyear,rvhour,rvmin,rvsec); if (IMIT) printf( "║ РЕЖИМ ИМИТАЦИИ! ║\n"); printf( "╚═══════════════════════════════════════════════════════════════════╝\n"); if (kko+kzv>0) //(KKOAPOI[ntk]>0) { MetodOMR(ntk); printOMR(ntk); } IZMERKO(RABTK); if (u.kolko>0) OBRKO(RABTK,1); //запись результатом ОМР OMRDATA &o = omrdata[ntk]; double x,y; int r,VideoOffsetr; // TEX_INFO texr1; // TEX_INFO *texr=&texr1; char *m_dubl; r=(256+(tex_inf->wConvolutionsCount+o.catkzv)*sizeof(CONVOLUTION))/1024+1; VideoOffsetr=1024*r; m_dubl=(char*)malloc(VideoOffsetr); // memcpy(texr,tex_inf,sizeof(TEX_INFO)); tex_inf->nVideoOffset=VideoOffsetr; tex_inf->wConvolutionsCount=tex_inf->wConvolutionsCount+o.catkzv; memcpy(m_dubl,m_kadr,VideoOffset); for(i=0;i<o.catkzv;i++) { CATZV &zv=o.catzv[i]; coord_mm2pix(ntk,zv.x,zv.y,&x,&y); cnv->wNum=i+1+tex_inf->wConvolutionsCount-o.catkzv; cnv->nS=10; //??? cnv->nV=pow(10,(20-zv.v)/2.5); cnv->nX=x; cnv->nY=y; if (o.catss[i]==-1) cnv->nID='KTZV'; else { cnv->nID='KZ++'; //отождествлена // printf("KatZv: x=%8.3f y=%8.3f\n",x,y); coord_mm2pix(ntk,o.izmzv[o.catss[i]].x,o.izmzv[o.catss[i]].y,&x,&y); // printf("IzmZv: x=%8.3f y=%8.3f\n",x,y); cnv->nS_XX=x; cnv->nS_YY=y; } memcpy(m_dubl+256+(cnv->wNum-1)*sizeof(CONVOLUTION),cnv,sizeof(CONVOLUTION)); } mode_t mode=S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; strcpy(sFile,"/tmp/resKPST.dat"); fff=open(sFile,O_WRONLY | O_CREAT | O_TRUNC,mode); //fcntl.h if (fff<0) { printf("Error write file /tmp/resKPST.dat\n"); return false; } write(fff,m_dubl,VideoOffsetr); write(fff,m11,tex_inf->wSizeX*tex_inf->wSizeY*sizeof(short)); close(fff); free(ObjAPOI[ntk]); free(KOAPOI[ntk]); free(ZVAPOI[ntk]); free(m_kadr); free(m_dubl); free(m11); if (sobj!=NULL) free(sobj); return true; }
int main(int argc, char **argv) { int ipldev; char *load; char *start = (char *)PDOS_CODE; void (*entry)(void *); int cyl; int head; int rec; /* programs using the standalone version of PDPCLIB need to be informed where they can allocate a heap and potentially other parameters (that's why there is a length indicator as well. dum should be 0 to indicate no normal MVS-style parameters */ struct { int dum; int len; char *heap; } pblock = { 0, 4, (char *)PDOS_HEAP }; void (*fun)(void *); int x; int cnt; ipldev = initsys(); #if 0 printf("IPL device is %x\n", ipldev); #endif if (findFile(ipldev, "PDOS.SYS", &cyl, &head, &rec) != 0) { printf("PDOS.SYS not found\n"); return (12); } #if 0 printf("PDOS resides on cylinder %d, head %d, rec %d of IPL device\n", cyl, head, rec); #endif load = start; for (x = 0; x < 30; x++) { #if 0 printf("loading to %p from %d, %d, %d\n", load, cyl, head, rec); #endif cnt = rdblock(ipldev, cyl, head, rec, load, CHUNKSZ); load += CHUNKSZ; rec++; if (rec >= 4) { rec = 1; head++; } if (head >= 15) { head = 0; cyl++; } if (cnt == 0) break; /* reached EOF */ } cnt = load - start; if (fixPE(start, &cnt, (int *)&entry, (int)start) != 0) { printf("MVS PE module corrupt\n"); } else { entry(&pblock); } #if 0 printf("about to read first block of PDOS\n"); rdblock(ipldev, cyl, head, rec, buf, sizeof buf); printf("got %x %x %x %x\n", buf[0], buf[1], buf[2], buf[3]); printf("and %x %x %x %x\n", buf[4], buf[5], buf[6], buf[7]); #endif return (0); }