⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3kmenu1.c

📁 嵌入式开发 嵌入式开发 嵌入式开发
💻 C
📖 第 1 页 / 共 2 页
字号:
        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 + -