📄 3kmenu1.c
字号:
ShowASCMem(355+XoStart, 210+YoStart, "SET PARAMETER", 0, 0, 0);
}
else
{ // 中文显示
gfMatrixOffList[0]= 9; /* 参 */
gfMatrixOffList[1]= 8; /* 数 */
gfMatrixOffList[2]=10; /* 设 */
gfMatrixOffList[3]=11; /* 置 */
ShowGB_CRT(365+XoStart, 210+YoStart, gfMatrixOffList, 4, 0, 0, 0);
}
switch( ID )
{
case 1: // 齿轮设置
Bar(330+XoStart, 235+YoStart, 480+XoStart, 251+YoStart, 222, 222, 222);
if( VarST3000.Language )
{ // 英文显示
ShowASCMem(330+XoStart, 235+YoStart, "GEAR NUMBER", 0, 0, 0);
}
else
{ // 中文显示
gfMatrixOffList[0]= 6; /* 齿 */
gfMatrixOffList[1]= 7; /* 轮 */
gfMatrixOffList[2]= 6; /* 齿 */
gfMatrixOffList[3]= 8; /* 数 */
ShowGB_CRT(330+XoStart, 235+YoStart, gfMatrixOffList, 4, 0, 0, 0);
}
break;
case 2: // 打开文件
Bar(330+XoStart, 235+YoStart, 480+XoStart, 251+YoStart, 222, 222, 222);
if( VarST3000.Language )
{ // 英文显示
ShowASCMem(330+XoStart, 235+YoStart, "OPEN FILE", 0, 0, 0);
}
else
{ // 中文显示
gfMatrixOffList[0]= 4; /* 打 */
gfMatrixOffList[1]= 5; /* 开 */
gfMatrixOffList[2]= 2; /* 文 */
gfMatrixOffList[3]= 3; /* 件 */
ShowGB_CRT(330+XoStart, 235+YoStart, gfMatrixOffList, 4, 0, 0, 0);
}
break;
case 3: //保存文件
Bar(330+XoStart, 235+YoStart, 480+XoStart, 251+YoStart, 222, 222, 222);
if( VarST3000.Language )
{ // 英文显示
ShowASCMem(330+XoStart, 235+YoStart, "SAVE FILE", 0, 0, 0);
}
else
{ // 中文显示
gfMatrixOffList[0]= 0; /* 保 */
gfMatrixOffList[1]= 1; /* 存 */
gfMatrixOffList[2]= 2; /* 文 */
gfMatrixOffList[3]= 3; /* 件 */
ShowGB_CRT(330+XoStart, 235+YoStart, gfMatrixOffList, 4, 0, 0, 0);
}
break;
default:
break;
}
// 数字显示
ShowASCMem(440+XoStart, 235+YoStart, ptr, 0, 0, 0);
}
/******************************
描述: 申请静止画面占用的扩展内存
******************************/
int InitXMS(void)
{
long dwIMGSize;
WORD szXMS,thXMS; // SizeXMS TempHandleXMS
if( InitXMSMem() )
{
/* 第一个内存块句柄申请 */
szXMS=GetFreeXMSMem();
if( szXMS<1024L*XMEMS_USED ) { return 0;}
szXMS=1024L*XMEMS_USED;
thXMS=AllocXMSMem(szXMS);
if( !thXMS ) { return 0;}
g_hxms=thXMS;
/* 内存块数计算 */
dwIMGSize=(long)nViewWinWid * (long)nViewWinHei * status.nBytesPerPixel;
status.nMaxMemIMGNum = szXMS*1024L/dwIMGSize;
/* 第二个内存块句柄申请 */
szXMS=GetFreeXMSMem();
if( szXMS<1024L*XMEMS_USED ) { return 0;}
szXMS=1024L*XMEMS_USED;
thXMS=AllocXMSMem(szXMS);
if( !thXMS ) { return 0;}
g_xms=thXMS;
/* 第三个内存块句柄申请 */
szXMS=GetFreeXMSMem();
if( szXMS<50 ) { return 0;}
szXMS=50;
thXMS=AllocXMSMem(szXMS);
if( !thXMS ) { return 0;}
g_hTrigMenu=thXMS;
}
else
{ status.nMaxMemIMGNum=0; return 0;}
return 1;
}
/******************************
描述: 释放静止画面占用的扩展内存
******************************/
void FreeXMS(void)
{
/* 释放第三个内存块 */
FreeXMSMem(g_hTrigMenu);
g_hTrigMenu=0;
/* 释放第二个内存块 */
FreeXMSMem(g_xms);
g_xms=0;
/* 释放第一个内存块 */
FreeXMSMem(g_hxms);
g_hxms=0;
}
/******************************
描述: 图像处理和插行
******************************/
void Data_Zip(const int flag)
{
unsigned long i,j,off,blocksize;
if( flag )
{
off=0;
blocksize=nViewWinWid*status.nBytesPerPixel;
_fmemset(bbf, 0, nViewWinWid*status.nBytesPerPixel);
for(i=0; i<nViewWinHei; i++)
{
CopyXMSMem(g_xms, off, blocksize, 0, (DWORD)bbf);
for(j=0; j<nViewWinWid/2; j++)
{
bbf[BitsOfPixel*j]=bbf[BitsOfPixel*j*2];
bbf[BitsOfPixel*j+1]=bbf[BitsOfPixel*j*2+1];
bbf[BitsOfPixel*j+2]=bbf[BitsOfPixel*j*2+2];
}
for(j=nViewWinWid/2; j<nViewWinWid; j++)
{
bbf[BitsOfPixel*j]=0;
bbf[BitsOfPixel*j+1]=0;
bbf[BitsOfPixel*j+2]=0;
}
CopyXMSMem(0, (DWORD)bbf, blocksize, g_xms, off);
off+=blocksize;
}
}
else
{
off=0;
blocksize=nViewWinWid*status.nBytesPerPixel;
_fmemset(bbf, 0, nViewWinWid*status.nBytesPerPixel);
_fmemset(bbf1,0,blocksize);//2007-4-16 9:45
for(i=0; i<nViewWinHei; i++)
{
CopyXMSMem(g_hxms, off, blocksize, 0, (DWORD)bbf);//
CopyXMSMem(g_xms, off, blocksize, 0, (DWORD)bbf1);//存储的
for(j=0; j<nViewWinWid/2; j++)
{
bbf[BitsOfPixel*j]=bbf[BitsOfPixel*j*2];
bbf[BitsOfPixel*j+1]=bbf[BitsOfPixel*j*2+1];
bbf[BitsOfPixel*j+2]=bbf[BitsOfPixel*j*2+2];
}
memcpy(bbf+nViewWinWid*BitsOfPixel/2, bbf1, nViewWinWid*BitsOfPixel/2);
CopyXMSMem(0, (DWORD)bbf, blocksize, g_hxms, off);
off+=blocksize;
}
}
}
/******************************
描述: 静止画面对采集到的数据进行处理显示在指定屏幕大小的窗口中
参数:
-bz 文件编号
******************************/
void Display_Full(int bz)
{
int i,j;
long off=576L*nViewWinWid*BitsOfPixel/2L;
long blocksize=nViewWinWid*status.nBytesPerPixel;
unsigned int colorr,colorg,colorb;
_fmemset(bbf, 0, blocksize);
status.nMaxMemIMGNum=1;
if(bz==0)
{
for(i=0; i<=nViewWinHei/2; i++)
{
CopyXMSMem(g_hxms, off, blocksize, 0, (DWORD)bbf);
CopyXMSMem(0, (DWORD)bbf, blocksize, g_hxms, off*2);
CopyXMSMem(g_hxms, off-blocksize, blocksize, 0, (DWORD)bbf1);
_fmemset(bbf2, 0, blocksize);
for(j=0; j<nViewWinWid; j++)//2007-4-17 9:01:11 __<=nViewWinWid
{
colorb = (bbf1[BitsOfPixel*j]+bbf[BitsOfPixel*j])>>1;
colorg = (bbf1[BitsOfPixel*j+1]+bbf[BitsOfPixel*j+1])>>1;
colorr = (bbf1[BitsOfPixel*j+2]+bbf[BitsOfPixel*j+2])>>1;
bbf2[BitsOfPixel*j] =colorb;
bbf2[BitsOfPixel*j+1]=colorg;
bbf2[BitsOfPixel*j+2]=colorr;
}
CopyXMSMem(0, (DWORD)bbf2, blocksize, g_hxms, off*2-blocksize);
_fmemset(bbf, 0, blocksize);
CopyXMSMem(0, (DWORD)bbf, blocksize, g_hxms, off);
off-=blocksize;
}
}
else
{
for(i=0; i<=nViewWinHei/2; i++)
{
CopyXMSMem(g_hxms, off, blocksize, 0, (DWORD)bbf);
CopyXMSMem(0, (DWORD)bbf, blocksize, g_hxms, i*2*blocksize);
CopyXMSMem(g_hxms, off+blocksize, blocksize, 0, (DWORD)bbf1);
_fmemset(bbf2, 0, blocksize);
for(j=0; j<nViewWinWid; j++)//2007-4-16 9:47 __<=nViewWinWid
{
colorb = (bbf1[BitsOfPixel*j]+bbf[BitsOfPixel*j])>>1;
colorg = (bbf1[BitsOfPixel*j+1]+bbf[BitsOfPixel*j+1])>>1;
colorr = (bbf1[BitsOfPixel*j+2]+bbf[BitsOfPixel*j+2])>>1;
bbf2[BitsOfPixel*j] =colorb;
bbf2[BitsOfPixel*j+1]=colorg;
bbf2[BitsOfPixel*j+2]=colorr;
}
CopyXMSMem(0, (DWORD)bbf2, blocksize, g_hxms, i*2*blocksize+blocksize);
_fmemset(bbf, 0, blocksize);
CopyXMSMem(0, (DWORD)bbf, blocksize, g_hxms, off);
off+=blocksize;
}
}
if(compressbz)
{ Data_Zip(0);}
PutImage_xms(XoStart, YoStart, nViewWinWid, nViewWinHei, g_hxms, 0);
}
/******************************
描述: 用户的中断服务程序
详细: BT878在采集完一帧图像后,产生中断
中断服务程序可以调用如下格式的用户程序
******************************/
extern int bProcessUserInterrupt;
void UserInterrupt(void)
{
bProcessUserInterrupt=1;
if( dwTotalFrames==0 ) { dwTotalFrames++;}
else { dwTotalFrames=0;} // 奇偶场
if( captureflag==1 )
{ captureflag=2;}
else if( captureflag==2 )
{ captureflag=3;}
else if( captureflag==3 )
{ // 实质性的处理
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -