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

📄 sercap.cpp

📁 BCB下驱动摄像头的例程
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "bmp.h"
#include "Unit1.h"
#include "sercap.h"
FILE *fpBMP,*fpDATA;
//#pragma package(smart_init)
//------------------------------------------------------------------------------
extern int index;
extern HANDLE com1_handle;;
extern unsigned char *BMPbuffer ,*CAMdata;
extern BMP_Header_T BmpHeader;
__fastcall TCOM1_Thread::TCOM1_Thread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall TCOM1_Thread::Execute()
{
   unsigned long read_bytes;
   unsigned char com1_buf[20000];
   int x,y;
    while(!Terminated){
        read_bytes = 20000;

        ReadFile(com1_handle, com1_buf, read_bytes, &read_bytes, NULL);

        if(read_bytes != 0){
                memcpy(CAMdata + index, com1_buf, read_bytes);
                index += read_bytes;
               
        }

         Form1->StatusBar1->Panels->Items[0]->Text = "Receive bytes:"+IntToStr(index);
         
         if (index == 800*600){
         fpDATA = fopen("cam.dat","wb");
         fwrite(CAMdata,800*600,1,fpDATA);
         fclose(fpDATA);
         for(y = 0; y<600; y--)
                for(x = 0; x<800; x++){
                        if(y%2 == 0){
                                if(x%2 == 0)
                                        *(BMPbuffer + ((599 - y)*800 + x)*3+2)=*(CAMdata+y*800+x);
                                else
                                        *(BMPbuffer + ((599 - y)*800 + x)*3+1)=*(CAMdata+y*800+x);
                                }
                        else{
                                if(x%2 == 0)
                                        *(BMPbuffer + ((599 - y)*800 + x)*3+1)=*(CAMdata+y*800+x);
                                else
                                        *(BMPbuffer + ((599 - y)*800 + x)*3+0)=*(CAMdata+y*800+x);
                                }

                }
         fpBMP = fopen("cam.bmp","wb");
         fwrite(&BmpHeader,sizeof(BmpHeader),1,fpBMP);
         fwrite(BMPbuffer,800*600*3,1,fpBMP);
         fclose(fpBMP);
         CloseHandle(com1_handle);
         delete BMPbuffer;
         delete CAMdata;
         Form1->Image1->Picture->LoadFromFile("cam.bmp");
         break;         
         }
                
    }
    
}
//---------------------------------------------------------------------------
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -