调整寄存器读写
This commit is contained in:
parent
cd5d017147
commit
70354ab6cc
603
HCamDevice.cpp
603
HCamDevice.cpp
|
@ -10,10 +10,10 @@
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "../cameraConfig.h"
|
//#include "../cameraConfig.h"
|
||||||
#include "../CameraParams.h"
|
//#include "../CameraParams.h"
|
||||||
#include <linux/v4l2-subdev.h>
|
#include <linux/v4l2-subdev.h>
|
||||||
#include "camconfig.h"
|
//#include "camconfig.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@ -78,9 +78,9 @@ HCamDevice::HCamDevice()
|
||||||
subDeviceName = "/dev/v4l-subdev0";
|
subDeviceName = "/dev/v4l-subdev0";
|
||||||
subDevicefd = 0;
|
subDevicefd = 0;
|
||||||
videofd = 0;
|
videofd = 0;
|
||||||
v4lWidth = CamProperty::_V4LWIDTH;
|
v4lWidth = 3100;
|
||||||
v4lHeight = CamProperty::_V4LHEIGHT;
|
v4lHeight = 3100;
|
||||||
v4lBufferCount = CamProperty::_V4LBUFFERCOUNT;
|
v4lBufferCount = 3;
|
||||||
v4l2buftype = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
v4l2buftype = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||||
nplanes = 1; // only use one plane
|
nplanes = 1; // only use one plane
|
||||||
drivertype = V4L2_CAP_VIDEO_CAPTURE_MPLANE;
|
drivertype = V4L2_CAP_VIDEO_CAPTURE_MPLANE;
|
||||||
|
@ -100,8 +100,9 @@ HCamDevice::HCamDevice()
|
||||||
this->event_thread.reset(new std::thread(&HCamDevice::HtCamEventWorkThread, this));
|
this->event_thread.reset(new std::thread(&HCamDevice::HtCamEventWorkThread, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
int HCamDevice::open_video()
|
int HCamDevice::open_video(int width,int height)
|
||||||
{
|
{
|
||||||
|
int fd = 0;
|
||||||
if ((fd = open(videoDevName.c_str(), O_RDWR, 0)) == -1)
|
if ((fd = open(videoDevName.c_str(), O_RDWR, 0)) == -1)
|
||||||
{
|
{
|
||||||
camera_dbg("open video fial\n");
|
camera_dbg("open video fial\n");
|
||||||
|
@ -109,7 +110,8 @@ int HCamDevice::open_video()
|
||||||
}
|
}
|
||||||
videofd = fd;
|
videofd = fd;
|
||||||
camera_dbg("open video succeed\n");
|
camera_dbg("open video succeed\n");
|
||||||
|
|
||||||
|
set_size(width,height);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int HCamDevice::close_video()
|
int HCamDevice::close_video()
|
||||||
|
@ -169,79 +171,79 @@ int HCamDevice::HtCamEventWorkThread(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HCamDevice::HtCamStartVideoCapturing()
|
// void HCamDevice::HtCamStartVideoCapturing()
|
||||||
{
|
// {
|
||||||
uint8_t n_buffers;
|
// uint8_t n_buffers;
|
||||||
struct v4l2_buffer buf;
|
// struct v4l2_buffer buf;
|
||||||
if (((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status)
|
// if (((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status)
|
||||||
{
|
// {
|
||||||
printf("Run the scan multiple times %d\n", ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status);
|
// printf("Run the scan multiple times %d\n", ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status);
|
||||||
return ;
|
// return ;
|
||||||
}
|
// }
|
||||||
for (n_buffers = 0; n_buffers < v4lBufferCount; n_buffers++)
|
// for (n_buffers = 0; n_buffers < v4lBufferCount; n_buffers++)
|
||||||
{
|
// {
|
||||||
memset(&buf, 0, sizeof(buf));
|
// memset(&buf, 0, sizeof(buf));
|
||||||
if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
// if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
// buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||||
else
|
// else
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
// buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
buf.memory = V4L2_MEMORY_MMAP;
|
// buf.memory = V4L2_MEMORY_MMAP;
|
||||||
buf.index = n_buffers;
|
// buf.index = n_buffers;
|
||||||
if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
// if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
||||||
{
|
// {
|
||||||
buf.length = nplanes;
|
// buf.length = nplanes;
|
||||||
buf.m.planes = (struct v4l2_plane *)calloc(buf.length, sizeof(struct v4l2_plane));
|
// buf.m.planes = (struct v4l2_plane *)calloc(buf.length, sizeof(struct v4l2_plane));
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (ioctl(videofd, VIDIOC_QBUF, &buf) == -1)
|
// if (ioctl(videofd, VIDIOC_QBUF, &buf) == -1)
|
||||||
{
|
// {
|
||||||
((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 0;
|
// ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 0;
|
||||||
camera_err(" VIDIOC_QBUF error\n");
|
// camera_err(" VIDIOC_QBUF error\n");
|
||||||
|
|
||||||
if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
// if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
||||||
free(buf.m.planes);
|
// free(buf.m.planes);
|
||||||
free(captureBufers);
|
// free(captureBufers);
|
||||||
close(videofd);
|
// close(videofd);
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
// if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
||||||
free(buf.m.planes);
|
// free(buf.m.planes);
|
||||||
}
|
// }
|
||||||
|
|
||||||
enum v4l2_buf_type type;
|
// enum v4l2_buf_type type;
|
||||||
if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
// if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
||||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
// type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||||
else
|
// else
|
||||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
// type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
if (ioctl(videofd, VIDIOC_STREAMON, &type) == -1)
|
// if (ioctl(videofd, VIDIOC_STREAMON, &type) == -1)
|
||||||
{
|
// {
|
||||||
((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 0;
|
// ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 0;
|
||||||
camera_err(" VIDIOC_STREAMON error! %s\n", strerror(errno));
|
// camera_err(" VIDIOC_STREAMON error! %s\n", strerror(errno));
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 1;
|
// ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 1;
|
||||||
camera_print(" stream on succeed\n");
|
// camera_print(" stream on succeed\n");
|
||||||
}
|
// }
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
void HCamDevice::HtCamStopVideoCapturing()
|
// void HCamDevice::HtCamStopVideoCapturing()
|
||||||
{
|
// {
|
||||||
enum v4l2_buf_type type;
|
// enum v4l2_buf_type type;
|
||||||
((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 0;
|
// ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->cam_run_status = 0;
|
||||||
if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
// if (drivertype == V4L2_CAP_VIDEO_CAPTURE_MPLANE)
|
||||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
// type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||||
else
|
// else
|
||||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
// type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
if (ioctl(videofd, VIDIOC_STREAMOFF, &type) == -1)
|
// if (ioctl(videofd, VIDIOC_STREAMOFF, &type) == -1)
|
||||||
camera_err(" VIDIOC_STREAMOFF error! %s\n", strerror(errno));
|
// camera_err(" VIDIOC_STREAMOFF error! %s\n", strerror(errno));
|
||||||
}
|
// }
|
||||||
|
|
||||||
void HCamDevice::HtCamExitVideoCapturing()
|
void HCamDevice::HtCamExitVideoCapturing()
|
||||||
{
|
{
|
||||||
HtCamStopVideoCapturing();
|
//HtCamStopVideoCapturing();
|
||||||
|
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
for (i = 0; i < v4lBufferCount; ++i)
|
for (i = 0; i < v4lBufferCount; ++i)
|
||||||
|
@ -381,6 +383,13 @@ int HCamDevice::HtCamStopSampling()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int HCamDevice::set_size(int width, int height)
|
||||||
|
{
|
||||||
|
v4lWidth = width;
|
||||||
|
v4lHeight = height;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int HCamDevice::init_fd()
|
int HCamDevice::init_fd()
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
@ -607,15 +616,15 @@ int HCamDevice::init_dev()
|
||||||
HtCamSwitchSampleModes(0);
|
HtCamSwitchSampleModes(0);
|
||||||
// HtCamChangeExposureValue(500);
|
// HtCamChangeExposureValue(500);
|
||||||
// start sample
|
// start sample
|
||||||
camera_dbg("ST SP : %d , VSNP : %d \r\n" ,CamProperty::ST_SP ,CamProperty::VSNP);
|
// camera_dbg("ST SP : %d , VSNP : %d \r\n" ,CamProperty::ST_SP ,CamProperty::VSNP);
|
||||||
if(CamProperty::ST_SP != 0 || CamProperty::ST_SP_VSNP != 0)
|
// if(CamProperty::ST_SP != 0 || CamProperty::ST_SP_VSNP != 0)
|
||||||
HtCamChangeMonoStartSample(CamProperty::ST_SP * 3 + CamProperty::ST_SP_VSNP);
|
// HtCamChangeMonoStartSample(CamProperty::ST_SP * 3 + CamProperty::ST_SP_VSNP);
|
||||||
if(CamProperty::VSNP != 0)
|
// if(CamProperty::VSNP != 0)
|
||||||
{
|
// {
|
||||||
unsigned int value = HtCamReadFpgaRegs(16);
|
// unsigned int value = HtCamReadFpgaRegs(16);
|
||||||
value = value & 0xffffff00;
|
// value = value & 0xffffff00;
|
||||||
HtCamWriteFpgaRegs(16, CamProperty::VSNP | value);
|
// HtCamWriteFpgaRegs(16, CamProperty::VSNP | value);
|
||||||
}
|
// }
|
||||||
// ex_trigger = 0, int_trigger = 1
|
// ex_trigger = 0, int_trigger = 1
|
||||||
HtCamChangeTriggerInAndEXt(1);
|
HtCamChangeTriggerInAndEXt(1);
|
||||||
|
|
||||||
|
@ -718,18 +727,18 @@ void HCamDevice::setADCReg(int addr , uint8_t value)
|
||||||
|
|
||||||
void HCamDevice::saveADCReg()
|
void HCamDevice::saveADCReg()
|
||||||
{
|
{
|
||||||
CamADCConfig adcConfig(CamProperty::_ADCPATH);
|
// CamADCConfig adcConfig(CamProperty::_ADCPATH);
|
||||||
int size = adcConfig.getSize();
|
// int size = adcConfig.getSize();
|
||||||
size = adcRegSize < size ? adcRegSize : size ;
|
// size = adcRegSize < size ? adcRegSize : size ;
|
||||||
std::vector<int> adcValue(size) ;
|
// std::vector<int> adcValue(size) ;
|
||||||
for(int index =0 ; index < size ; index++)
|
// for(int index =0 ; index < size ; index++)
|
||||||
{
|
// {
|
||||||
adcValue[index] = pADCReg[index];
|
// adcValue[index] = pADCReg[index];
|
||||||
}
|
// }
|
||||||
if(!adcConfig.saveValue(adcValue))
|
// if(!adcConfig.saveValue(adcValue))
|
||||||
{
|
// {
|
||||||
std::cout << "Save adc Value Error!" << std::endl ;
|
// std::cout << "Save adc Value Error!" << std::endl ;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t HCamDevice::HtCamReadFpgaRegs(uint8_t reg_addr)
|
uint32_t HCamDevice::HtCamReadFpgaRegs(uint8_t reg_addr)
|
||||||
|
@ -751,18 +760,18 @@ void HCamDevice::HtCamWriteFpgaRegs(uint8_t reg_addr, uint32_t reg_value)
|
||||||
// fp = fopen("/home/root/logW", "a+");
|
// fp = fopen("/home/root/logW", "a+");
|
||||||
// fprintf(fp , "W reg %d , value : %d\r\n" ,reg_addr , reg_value );
|
// fprintf(fp , "W reg %d , value : %d\r\n" ,reg_addr , reg_value );
|
||||||
// fclose(fp);
|
// fclose(fp);
|
||||||
switch (reg_addr)
|
// switch (reg_addr)
|
||||||
{
|
// {
|
||||||
case 0x04:
|
// case 0x04:
|
||||||
reg4 = HtCamReadFpgaRegs(0x04);
|
// reg4 = HtCamReadFpgaRegs(0x04);
|
||||||
if (((CamZ_Reg_4 *)®4)->color_mode != ((CamZ_Reg_4 *)®_value)->color_mode)
|
// if (((CamZ_Reg_4 *)®4)->color_mode != ((CamZ_Reg_4 *)®_value)->color_mode)
|
||||||
{
|
// {
|
||||||
getImgFormat(((CamZ_Reg_4 *)®_value)->color_mode);
|
// getImgFormat(((CamZ_Reg_4 *)®_value)->color_mode);
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
uint32_t *pCamCtrlReg = virBaseAddr;
|
uint32_t *pCamCtrlReg = virBaseAddr;
|
||||||
pCamCtrlReg[reg_addr] = reg_value;
|
pCamCtrlReg[reg_addr] = reg_value;
|
||||||
}
|
}
|
||||||
|
@ -807,7 +816,7 @@ void HCamDevice::HtCamSetTriggerMode(int val)
|
||||||
{
|
{
|
||||||
uint32_t *pCamCtrlReg = virBaseAddr;
|
uint32_t *pCamCtrlReg = virBaseAddr;
|
||||||
if (val)
|
if (val)
|
||||||
pCamCtrlReg[10] |= 0x00000040;
|
pCamCtrlReg[10] |= 0x00000040; //40是16进制 转换为二进制0100 0000 刚好就是第十个寄存器的第七位
|
||||||
else
|
else
|
||||||
pCamCtrlReg[10] &= ~(0x00000040);
|
pCamCtrlReg[10] &= ~(0x00000040);
|
||||||
}
|
}
|
||||||
|
@ -824,51 +833,51 @@ int HCamDevice::HtCamGetColorMode()
|
||||||
return ((pCamCtrlReg[4] & (0x00000004)) >> 2);
|
return ((pCamCtrlReg[4] & (0x00000004)) >> 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
PERJECT_VERSION getByName(std::string name)
|
// PERJECT_VERSION getByName(std::string name)
|
||||||
{
|
// {
|
||||||
if(name == "PYTHONZ_1200")
|
// if(name == "PYTHONZ_1200")
|
||||||
return PERJECT_VERSION::PythonZ1200 ;
|
// return PERJECT_VERSION::PythonZ1200 ;
|
||||||
if(name == "PYTHONZ_1800")
|
// if(name == "PYTHONZ_1800")
|
||||||
return PERJECT_VERSION::PythonZ1800 ;
|
// return PERJECT_VERSION::PythonZ1800 ;
|
||||||
if(name == "PYTHONZ_WSS")
|
// if(name == "PYTHONZ_WSS")
|
||||||
return PERJECT_VERSION::PythonZWSS;
|
// return PERJECT_VERSION::PythonZWSS;
|
||||||
if(name == "PYTHONZ_1206" )
|
// if(name == "PYTHONZ_1206" )
|
||||||
return PERJECT_VERSION::PythonZ1206;
|
// return PERJECT_VERSION::PythonZ1206;
|
||||||
if(name == "PYTHONZ_1602" )
|
// if(name == "PYTHONZ_1602" )
|
||||||
return PERJECT_VERSION::PythonZ1602;
|
// return PERJECT_VERSION::PythonZ1602;
|
||||||
return PERJECT_VERSION::PythonZ1200; //return a default var
|
// return PERJECT_VERSION::PythonZ1200; //return a default var
|
||||||
}
|
// }
|
||||||
|
|
||||||
void HCamDevice::init_ps_regs()
|
void HCamDevice::init_ps_regs()
|
||||||
{
|
{
|
||||||
CamPSConfig psConfig(CONFIG_PATH);
|
//CamPSConfig psConfig(CONFIG_PATH);
|
||||||
memset(pPsReg, 0, sizeof(pPsReg));
|
// memset(pPsReg, 0, sizeof(pPsReg));
|
||||||
pPsReg[PS_VERSION] = VERSION;
|
// //pPsReg[PS_VERSION] = 100000;
|
||||||
pPsReg[BUF_WIDTH] = v4lWidth;
|
// pPsReg[BUF_WIDTH] = v4lWidth;
|
||||||
pPsReg[BUF_HEIGHT] = CamProperty::_V4LHEIGHT;
|
// pPsReg[BUF_HEIGHT] = CamProperty::_V4LHEIGHT;
|
||||||
pPsReg[IMG_WIDTH] = CamProperty::_IMG_BUF_WIDTH;
|
// pPsReg[IMG_WIDTH] = CamProperty::_IMG_BUF_WIDTH;
|
||||||
std::cout << "v4lBufferCount " << v4lBufferCount << std::endl;
|
// std::cout << "v4lBufferCount " << v4lBufferCount << std::endl;
|
||||||
pPsReg[BUF_NUM] = v4lBufferCount;
|
// pPsReg[BUF_NUM] = v4lBufferCount;
|
||||||
pPsReg[CAM_STATUS] = psConfig.getReg(CAM_STATUS);
|
// pPsReg[CAM_STATUS] = psConfig.getReg(CAM_STATUS);
|
||||||
CAM_INFO_REG *camInfo = (CAM_INFO_REG *)&pPsReg[CAM_INFO];
|
// CAM_INFO_REG *camInfo = (CAM_INFO_REG *)&pPsReg[CAM_INFO];
|
||||||
camInfo->CIS_Width = pPsReg[IMG_WIDTH] / CamProperty::_CIS_NUM;
|
// camInfo->CIS_Width = pPsReg[IMG_WIDTH] / CamProperty::_CIS_NUM;
|
||||||
camInfo->CIS_count = CamProperty::_CIS_NUM;
|
// camInfo->CIS_count = CamProperty::_CIS_NUM;
|
||||||
camInfo->ProjectVersion = getByName(CamProperty::_CAM_TYPE);
|
// camInfo->ProjectVersion = getByName(CamProperty::_CAM_TYPE);
|
||||||
camInfo->vidio_status = 0;
|
// camInfo->vidio_status = 0;
|
||||||
pPsReg[RLS_CHECK_CODE] = Alpha;
|
// pPsReg[RLS_CHECK_CODE] = Alpha;
|
||||||
pPsReg[DATA_STATUS] = 0;
|
// pPsReg[DATA_STATUS] = 0;
|
||||||
// pPsReg[HEARTBAT] = 0x80000001;
|
// pPsReg[HEARTBAT] = 0x80000001;
|
||||||
|
|
||||||
// CamPSConfig psConfig(CONFIG_PATH);
|
// CamPSConfig psConfig(CONFIG_PATH);
|
||||||
// pPsReg[PS_VERSION] = psConfig.getReg(PS_VERSION);
|
// pPsReg[PS_VERSION] = psConfig.getReg(PS_VERSION);
|
||||||
// pPsReg[CAM_STATUS] = psConfig.getReg(CAM_STATUS);
|
// pPsReg[CAM_STATUS] = psConfig.getReg(CAM_STATUS);
|
||||||
std::cout << "pPsReg[BUF_NUM] " << pPsReg[BUF_NUM] << std::endl;
|
// std::cout << "pPsReg[BUF_NUM] " << pPsReg[BUF_NUM] << std::endl;
|
||||||
std::cout << "CAM_STATUS " << pPsReg[CAM_STATUS] << std::endl;
|
// std::cout << "CAM_STATUS " << pPsReg[CAM_STATUS] << std::endl;
|
||||||
|
|
||||||
// pPsReg[MOTOR_SPEED] = psConfig.getReg(MOTOR_SPEED);
|
// pPsReg[MOTOR_SPEED] = psConfig.getReg(MOTOR_SPEED);
|
||||||
// pPsReg[CAM_DPI] = psConfig.getReg(CAM_DPI);
|
// pPsReg[CAM_DPI] = psConfig.getReg(CAM_DPI);
|
||||||
// pPsReg[RLS_CHECK_CODE] = psConfig.getReg(RLS_CHECK_CODE);
|
// pPsReg[RLS_CHECK_CODE] = psConfig.getReg(RLS_CHECK_CODE);
|
||||||
pPsReg[HEARTBAT] = psConfig.getReg(HEARTBAT);
|
//pPsReg[HEARTBAT] = psConfig.getReg(HEARTBAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t HCamDevice::HtCamReadPsRegs(uint8_t reg_addr)
|
uint32_t HCamDevice::HtCamReadPsRegs(uint8_t reg_addr)
|
||||||
|
@ -882,25 +891,25 @@ void HCamDevice::HtCamWritePsRegs(uint8_t reg_addr, uint32_t reg_value)
|
||||||
{
|
{
|
||||||
printf("reg addr %d\r\n" ,reg_addr );
|
printf("reg addr %d\r\n" ,reg_addr );
|
||||||
std::cout << "Write Camera PS reg addr " << reg_addr << "value " << reg_value << std::endl;
|
std::cout << "Write Camera PS reg addr " << reg_addr << "value " << reg_value << std::endl;
|
||||||
if (reg_addr >= PSReg::REG_NUM)
|
if (reg_addr >= REG_NUM)
|
||||||
return;
|
return;
|
||||||
pPsReg[reg_addr] = reg_value;
|
pPsReg[reg_addr] = reg_value;
|
||||||
switch (reg_addr)
|
switch (reg_addr)
|
||||||
{
|
{
|
||||||
case BUF_WIDTH:
|
// case BUF_WIDTH:
|
||||||
case BUF_HEIGHT:
|
// case BUF_HEIGHT:
|
||||||
case BUF_NUM:
|
// case BUF_NUM:
|
||||||
HtCamResizeBuffer(pPsReg[BUF_WIDTH], pPsReg[BUF_HEIGHT], pPsReg[BUF_NUM]);
|
// HtCamResizeBuffer(pPsReg[BUF_WIDTH], pPsReg[BUF_HEIGHT], pPsReg[BUF_NUM]);
|
||||||
break;
|
// break;
|
||||||
case CAM_DPI:
|
// case CAM_DPI:
|
||||||
HtCamPsDpiChange(reg_value);
|
// HtCamPsDpiChange(reg_value);
|
||||||
break;
|
// break;
|
||||||
case CAM_STATUS:
|
// case CAM_STATUS:
|
||||||
{
|
// {
|
||||||
HtCamImageProcessChange();
|
// // HtCamImageProcessChange();
|
||||||
if (getImgProcSize)
|
// // if (getImgProcSize)
|
||||||
getImgProcSize(reg_value);
|
// // getImgProcSize(reg_value);
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -909,14 +918,14 @@ void HCamDevice::HtCamWritePsRegs(uint8_t reg_addr, uint32_t reg_value)
|
||||||
|
|
||||||
void HCamDevice::savePsReg()
|
void HCamDevice::savePsReg()
|
||||||
{
|
{
|
||||||
CamPSConfig psConfig(CONFIG_PATH);
|
// CamPSConfig psConfig(CONFIG_PATH);
|
||||||
psConfig.setReg(PS_VERSION , pPsReg[PS_VERSION] );
|
// psConfig.setReg(PS_VERSION , pPsReg[PS_VERSION] );
|
||||||
psConfig.setReg(CAM_STATUS , pPsReg[CAM_STATUS] );
|
// psConfig.setReg(CAM_STATUS , pPsReg[CAM_STATUS] );
|
||||||
psConfig.setReg(MOTOR_SPEED , pPsReg[MOTOR_SPEED]);
|
// psConfig.setReg(MOTOR_SPEED , pPsReg[MOTOR_SPEED]);
|
||||||
psConfig.setReg(CAM_DPI , pPsReg[CAM_DPI] );
|
// psConfig.setReg(CAM_DPI , pPsReg[CAM_DPI] );
|
||||||
psConfig.setReg(HEARTBAT , pPsReg[HEARTBAT] );
|
// psConfig.setReg(HEARTBAT , pPsReg[HEARTBAT] );
|
||||||
psConfig.setReg(RLS_CHECK_CODE, pPsReg[RLS_CHECK_CODE]);
|
// psConfig.setReg(RLS_CHECK_CODE, pPsReg[RLS_CHECK_CODE]);
|
||||||
psConfig.save();
|
// psConfig.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HCamDevice::HtCamWriteAllADC()
|
void HCamDevice::HtCamWriteAllADC()
|
||||||
|
@ -943,14 +952,14 @@ void HCamDevice::HtCamInitADCReg()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ADC_82V48
|
#ifdef ADC_82V48
|
||||||
CamADCConfig adcConfig(CamProperty::_ADCPATH);
|
//CamADCConfig adcConfig(CamProperty::_ADCPATH);
|
||||||
int size = adcConfig.getSize();
|
//int size = adcConfig.getSize();
|
||||||
std::cout << " read ADC size : " << size << std::endl ;
|
//std::cout << " read ADC size : " << size << std::endl ;
|
||||||
if (size > 0)
|
//if (size > 0)
|
||||||
{
|
{
|
||||||
for (int index = 0; index < size; index++)
|
//for (int index = 0; index < size; index++)
|
||||||
{
|
{
|
||||||
pADCReg[index] = adcConfig.getReg(index);
|
//pADCReg[index] = adcConfig.getReg(index);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -958,76 +967,76 @@ void HCamDevice::HtCamInitADCReg()
|
||||||
pADCReg[0] = 0x07;
|
pADCReg[0] = 0x07;
|
||||||
pADCReg[1] = 0x50;
|
pADCReg[1] = 0x50;
|
||||||
|
|
||||||
/* 1200 cis */
|
// /* 1200 cis */
|
||||||
if (CamProperty::_CAM_TYPE == "PYTHONZ_1200")
|
// if (CamProperty::_CAM_TYPE == "PYTHONZ_1200")
|
||||||
{
|
// {
|
||||||
/* gain */
|
// /* gain */
|
||||||
pADCReg[2] = 0x90;
|
// pADCReg[2] = 0x90;
|
||||||
pADCReg[3] = 0x00;
|
// pADCReg[3] = 0x00;
|
||||||
pADCReg[4] = 0x90;
|
// pADCReg[4] = 0x90;
|
||||||
pADCReg[5] = 0x00;
|
// pADCReg[5] = 0x00;
|
||||||
pADCReg[6] = 0x90;
|
// pADCReg[6] = 0x90;
|
||||||
pADCReg[7] = 0x00;
|
// pADCReg[7] = 0x00;
|
||||||
pADCReg[8] = 0x90;
|
// pADCReg[8] = 0x90;
|
||||||
pADCReg[9] = 0x00;
|
// pADCReg[9] = 0x00;
|
||||||
pADCReg[0xa] = 0x90;
|
// pADCReg[0xa] = 0x90;
|
||||||
pADCReg[0xb] = 0x00;
|
// pADCReg[0xb] = 0x00;
|
||||||
pADCReg[0xc] = 0x90;
|
// pADCReg[0xc] = 0x90;
|
||||||
pADCReg[0xd] = 0x00;
|
// pADCReg[0xd] = 0x00;
|
||||||
/* offset */
|
// /* offset */
|
||||||
pADCReg[0xe] = 0x58;
|
// pADCReg[0xe] = 0x58;
|
||||||
pADCReg[0xf] = 0x5b;
|
// pADCReg[0xf] = 0x5b;
|
||||||
pADCReg[0x10] = 0x55;
|
// pADCReg[0x10] = 0x55;
|
||||||
pADCReg[0x11] = 0x55;
|
// pADCReg[0x11] = 0x55;
|
||||||
pADCReg[0x12] = 0x50;
|
// pADCReg[0x12] = 0x50;
|
||||||
pADCReg[0x13] = 0x55;
|
// pADCReg[0x13] = 0x55;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
/* offset */
|
// /* offset */
|
||||||
if (CamProperty::_CAM_TYPE == "PYTHONZ_WSS")
|
// if (CamProperty::_CAM_TYPE == "PYTHONZ_WSS")
|
||||||
{
|
// {
|
||||||
pADCReg[2] = 0x55;
|
// pADCReg[2] = 0x55;
|
||||||
pADCReg[3] = 0x00;
|
// pADCReg[3] = 0x00;
|
||||||
pADCReg[4] = 0x4a;
|
// pADCReg[4] = 0x4a;
|
||||||
pADCReg[5] = 0x00;
|
// pADCReg[5] = 0x00;
|
||||||
pADCReg[6] = 0x50;
|
// pADCReg[6] = 0x50;
|
||||||
pADCReg[7] = 0x00;
|
// pADCReg[7] = 0x00;
|
||||||
pADCReg[8] = 0x4e;
|
// pADCReg[8] = 0x4e;
|
||||||
pADCReg[9] = 0x00;
|
// pADCReg[9] = 0x00;
|
||||||
pADCReg[0xa] = 0x40;
|
// pADCReg[0xa] = 0x40;
|
||||||
pADCReg[0xb] = 0x00;
|
// pADCReg[0xb] = 0x00;
|
||||||
pADCReg[0xc] = 0x50;
|
// pADCReg[0xc] = 0x50;
|
||||||
pADCReg[0xd] = 0x00;
|
// pADCReg[0xd] = 0x00;
|
||||||
pADCReg[0xe] = 0x65;
|
// pADCReg[0xe] = 0x65;
|
||||||
pADCReg[0xf] = 0x65;
|
// pADCReg[0xf] = 0x65;
|
||||||
pADCReg[0x10] = 0x65;
|
// pADCReg[0x10] = 0x65;
|
||||||
pADCReg[0x11] = 0x65;
|
// pADCReg[0x11] = 0x65;
|
||||||
pADCReg[0x12] = 0x65;
|
// pADCReg[0x12] = 0x65;
|
||||||
pADCReg[0x13] = 0x65;
|
// pADCReg[0x13] = 0x65;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
pADCReg[2] = 0xA0;
|
// pADCReg[2] = 0xA0;
|
||||||
pADCReg[3] = 0x00;
|
// pADCReg[3] = 0x00;
|
||||||
pADCReg[4] = 0xA0;
|
// pADCReg[4] = 0xA0;
|
||||||
pADCReg[5] = 0x00;
|
// pADCReg[5] = 0x00;
|
||||||
pADCReg[6] = 0xA0;
|
// pADCReg[6] = 0xA0;
|
||||||
pADCReg[7] = 0x00;
|
// pADCReg[7] = 0x00;
|
||||||
pADCReg[8] = 0xA0;
|
// pADCReg[8] = 0xA0;
|
||||||
pADCReg[9] = 0x00;
|
// pADCReg[9] = 0x00;
|
||||||
pADCReg[0xa] = 0xA0;
|
// pADCReg[0xa] = 0xA0;
|
||||||
pADCReg[0xb] = 0x00;
|
// pADCReg[0xb] = 0x00;
|
||||||
pADCReg[0xc] = 0xA0;
|
// pADCReg[0xc] = 0xA0;
|
||||||
pADCReg[0xd] = 0x00;
|
// pADCReg[0xd] = 0x00;
|
||||||
pADCReg[0xe] = 0x20;
|
// pADCReg[0xe] = 0x20;
|
||||||
pADCReg[0xf] = 0x20;
|
// pADCReg[0xf] = 0x20;
|
||||||
pADCReg[0x10] = 0x20;
|
// pADCReg[0x10] = 0x20;
|
||||||
pADCReg[0x11] = 0x20;
|
// pADCReg[0x11] = 0x20;
|
||||||
pADCReg[0x12] = 0x20;
|
// pADCReg[0x12] = 0x20;
|
||||||
pADCReg[0x13] = 0x20;
|
// pADCReg[0x13] = 0x20;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1066,69 +1075,69 @@ void HCamDevice::set_reload_correct_event(ReLoadCorrecEvent _reLoadCorrectEvent)
|
||||||
this->reLoadCorrectEvent = _reLoadCorrectEvent;
|
this->reLoadCorrectEvent = _reLoadCorrectEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HCamDevice::HtCamImageProcessChange()
|
// void HCamDevice::HtCamImageProcessChange()
|
||||||
{
|
// {
|
||||||
CAM_STATUS_REG* status = (CAM_STATUS_REG*)&pPsReg[CAM_STATUS];
|
// CAM_STATUS_REG* status = (CAM_STATUS_REG*)&pPsReg[CAM_STATUS];
|
||||||
if(status->doImageProcess)
|
// if(status->doImageProcess)
|
||||||
{
|
// {
|
||||||
HtCamPsDpiChange(pPsReg[CAM_DPI]);
|
// HtCamPsDpiChange(pPsReg[CAM_DPI]);
|
||||||
}else
|
// }else
|
||||||
{
|
// {
|
||||||
pPsReg[IMG_WIDTH] = pPsReg[BUF_WIDTH];
|
// pPsReg[IMG_WIDTH] = pPsReg[BUF_WIDTH];
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// DPI切换-暂只适配1200/1800
|
// DPI切换-暂只适配1200/1800
|
||||||
bool HCamDevice::HtCamPsDpiChange(int dpi)
|
// bool HCamDevice::HtCamPsDpiChange(int dpi)
|
||||||
{
|
// {
|
||||||
std::cout << "DPI Change for " << dpi <<std::endl;
|
// std::cout << "DPI Change for " << dpi <<std::endl;
|
||||||
for (auto i = CamProperty::_DPI_WIDTH.begin(); i != CamProperty::_DPI_WIDTH.end(); i++)
|
// for (auto i = CamProperty::_DPI_WIDTH.begin(); i != CamProperty::_DPI_WIDTH.end(); i++)
|
||||||
{
|
// {
|
||||||
if (dpi == i->first)
|
// if (dpi == i->first)
|
||||||
{
|
// {
|
||||||
CamProperty::_N_DPI = dpi;
|
// CamProperty::_N_DPI = dpi;
|
||||||
CamProperty::_IMG_BUF_WIDTH = i->second;
|
// CamProperty::_IMG_BUF_WIDTH = i->second;
|
||||||
|
|
||||||
|
|
||||||
pPsReg[BUF_WIDTH] = CamProperty::_DPI_V4LWIDTH[dpi];
|
// pPsReg[BUF_WIDTH] = CamProperty::_DPI_V4LWIDTH[dpi];
|
||||||
|
|
||||||
if (dpi > 300)
|
// if (dpi > 300)
|
||||||
{
|
// {
|
||||||
HtCamChangeDpi(0);
|
// HtCamChangeDpi(0);
|
||||||
pPsReg[BUF_HEIGHT] = CamProperty::_V4LHEIGHT/2;
|
// pPsReg[BUF_HEIGHT] = CamProperty::_V4LHEIGHT/2;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
HtCamChangeDpi(1);
|
// HtCamChangeDpi(1);
|
||||||
pPsReg[BUF_HEIGHT] = CamProperty::_V4LHEIGHT;
|
// pPsReg[BUF_HEIGHT] = CamProperty::_V4LHEIGHT;
|
||||||
}
|
// }
|
||||||
std::cout << "image process " << ((CAM_STATUS_REG*)&pPsReg[CAM_STATUS])->doImageProcess << std::endl ;
|
// std::cout << "image process " << ((CAM_STATUS_REG*)&pPsReg[CAM_STATUS])->doImageProcess << std::endl ;
|
||||||
if(((CAM_STATUS_REG*)&pPsReg[CAM_STATUS])->doImageProcess)
|
// if(((CAM_STATUS_REG*)&pPsReg[CAM_STATUS])->doImageProcess)
|
||||||
pPsReg[IMG_WIDTH] = CamProperty::_IMG_BUF_WIDTH ;
|
// pPsReg[IMG_WIDTH] = CamProperty::_IMG_BUF_WIDTH ;
|
||||||
else
|
// else
|
||||||
pPsReg[IMG_WIDTH] = pPsReg[BUF_WIDTH];
|
// pPsReg[IMG_WIDTH] = pPsReg[BUF_WIDTH];
|
||||||
((CAM_INFO_REG *)&pPsReg[CAM_INFO])->CIS_Width = pPsReg[IMG_WIDTH] / ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->CIS_count;
|
// ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->CIS_Width = pPsReg[IMG_WIDTH] / ((CAM_INFO_REG *)&pPsReg[CAM_INFO])->CIS_count;
|
||||||
// 更改数据缓存区大小
|
// // 更改数据缓存区大小
|
||||||
|
|
||||||
std::cout << "LL " << v4lWidth << pPsReg[BUF_WIDTH] << v4lHeight << pPsReg[BUF_HEIGHT] << v4lBufferCount << pPsReg[BUF_NUM] << std::endl ;
|
// std::cout << "LL " << v4lWidth << pPsReg[BUF_WIDTH] << v4lHeight << pPsReg[BUF_HEIGHT] << v4lBufferCount << pPsReg[BUF_NUM] << std::endl ;
|
||||||
if(v4lWidth != pPsReg[BUF_WIDTH] || v4lHeight != pPsReg[BUF_HEIGHT] || v4lBufferCount != pPsReg[BUF_NUM])
|
// if(v4lWidth != pPsReg[BUF_WIDTH] || v4lHeight != pPsReg[BUF_HEIGHT] || v4lBufferCount != pPsReg[BUF_NUM])
|
||||||
{
|
// {
|
||||||
HtCamResizeBuffer(pPsReg[BUF_WIDTH], pPsReg[BUF_HEIGHT] , pPsReg[BUF_NUM]);
|
// HtCamResizeBuffer(pPsReg[BUF_WIDTH], pPsReg[BUF_HEIGHT] , pPsReg[BUF_NUM]);
|
||||||
camera_print(" fmt.fmt.pix.width = %d\n", v4lWidth);
|
// camera_print(" fmt.fmt.pix.width = %d\n", v4lWidth);
|
||||||
camera_print(" fmt.fmt.pix.height = %d\n", v4lHeight);
|
// camera_print(" fmt.fmt.pix.height = %d\n", v4lHeight);
|
||||||
camera_print(" fmt.fmt.pix.field = %d\n", pPsReg[BUF_NUM]);
|
// camera_print(" fmt.fmt.pix.field = %d\n", pPsReg[BUF_NUM]);
|
||||||
if(reLoadCorrectEvent)
|
// if(reLoadCorrectEvent)
|
||||||
reLoadCorrectEvent(CamProperty::_IMG_BUF_WIDTH);
|
// reLoadCorrectEvent(CamProperty::_IMG_BUF_WIDTH);
|
||||||
}
|
// }
|
||||||
if(config != nullptr)
|
// if(config != nullptr)
|
||||||
config->saveConfig();
|
// config->saveConfig();
|
||||||
// Camconfig h_config;
|
// // Camconfig h_config;
|
||||||
// h_config.saveConfig();
|
// // h_config.saveConfig();
|
||||||
return true;
|
// return true;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
|
|
||||||
void HCamDevice::HtCamOverClockClear()
|
void HCamDevice::HtCamOverClockClear()
|
||||||
{
|
{
|
||||||
|
|
25
HCamDevice.h
25
HCamDevice.h
|
@ -40,6 +40,20 @@ union CamZ_Reg_4
|
||||||
}params;
|
}params;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
union CAM_INFO_REG
|
||||||
|
{
|
||||||
|
int value = 0;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned int ProjectVersion : 6; //所属项目版本
|
||||||
|
unsigned int cam_run_status : 1; //相机扫描状态
|
||||||
|
unsigned int vidio_status : 1; // v4l状态
|
||||||
|
unsigned int CIS_count : 8; // CIS计数
|
||||||
|
unsigned int CIS_Width : 16;
|
||||||
|
/* data */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
#define adcRegSize 20
|
#define adcRegSize 20
|
||||||
#define REG_NUM 14
|
#define REG_NUM 14
|
||||||
typedef std::function<void(uint32_t)> GetImgProcSize;
|
typedef std::function<void(uint32_t)> GetImgProcSize;
|
||||||
|
@ -56,11 +70,11 @@ public:
|
||||||
|
|
||||||
~HCamDevice();
|
~HCamDevice();
|
||||||
|
|
||||||
int open_video();
|
int open_video(int width, int height);
|
||||||
int close_video();
|
int close_video();
|
||||||
|
|
||||||
void HtCamStartVideoCapturing();
|
// void HtCamStartVideoCapturing();
|
||||||
void HtCamStopVideoCapturing();
|
//void HtCamStopVideoCapturing();
|
||||||
int HtCamWaitVideoCapture(int msTimeout);
|
int HtCamWaitVideoCapture(int msTimeout);
|
||||||
int HtCamReadCaptureFrame(void **pbuf, int timeout);
|
int HtCamReadCaptureFrame(void **pbuf, int timeout);
|
||||||
int width() { return v4lWidth; }
|
int width() { return v4lWidth; }
|
||||||
|
@ -97,6 +111,7 @@ public:
|
||||||
// void setConfig(Camconfig* _config){config = _config;}
|
// void setConfig(Camconfig* _config){config = _config;}
|
||||||
void HtCamChangeMonoStartSample(int start_sample);
|
void HtCamChangeMonoStartSample(int start_sample);
|
||||||
private:
|
private:
|
||||||
|
int set_size(int width, int height);
|
||||||
int init_fd();
|
int init_fd();
|
||||||
int init_sample();
|
int init_sample();
|
||||||
int init_capture();
|
int init_capture();
|
||||||
|
@ -112,9 +127,9 @@ private:
|
||||||
int HtCamStartSampling();
|
int HtCamStartSampling();
|
||||||
int HtCamStopSampling();
|
int HtCamStopSampling();
|
||||||
void HtCamChangeDpi(int dpi);
|
void HtCamChangeDpi(int dpi);
|
||||||
bool HtCamPsDpiChange(int dpi);
|
//bool HtCamPsDpiChange(int dpi);
|
||||||
|
|
||||||
void HtCamImageProcessChange();
|
//void HtCamImageProcessChange();
|
||||||
|
|
||||||
int HtCamEventWorkThread(void);
|
int HtCamEventWorkThread(void);
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ void MultiFrameCapture::SetParent(void *scanner)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void MultiFrameCapture::open_video()
|
void MultiFrameCapture::open()
|
||||||
{
|
{
|
||||||
//reset_fpga();
|
//reset_fpga();
|
||||||
m_capFpageregs->resetADC();
|
m_capFpageregs->resetADC();
|
||||||
|
@ -1098,14 +1098,14 @@ void MultiFrameCapture::openDevice(int dpi, int mode)
|
||||||
|
|
||||||
//m_capFpageregs->setFrame_interval_max(static_cast<int>(sp_dst * 4 / (mode ? 1 : 3))); //dpi > 2 ? 7200 : 3600
|
//m_capFpageregs->setFrame_interval_max(static_cast<int>(sp_dst * 4 / (mode ? 1 : 3))); //dpi > 2 ? 7200 : 3600
|
||||||
//m_capFpageregs->setFrame_interval_min(static_cast<int>(sp_dst * 0.1 / (mode ? 1 : 3) )); //1540
|
//m_capFpageregs->setFrame_interval_min(static_cast<int>(sp_dst * 0.1 / (mode ? 1 : 3) )); //1540
|
||||||
.
|
|
||||||
// 2023 7-15 屏蔽
|
// 2023 7-15 屏蔽
|
||||||
// m_capFpageregs->setFrame_interval_max(0x1010); //dpi > 2 ? 7200 : 3600
|
// m_capFpageregs->setFrame_interval_max(0x1010); //dpi > 2 ? 7200 : 3600
|
||||||
// m_capFpageregs->setFrame_interval_min(0xa98); //dpi > 2 ? 900 : 1540
|
// m_capFpageregs->setFrame_interval_min(0xa98); //dpi > 2 ? 900 : 1540
|
||||||
configFPGAParam(mode, dpi);
|
configFPGAParam(mode, dpi);
|
||||||
StopWatch swwv4l2open;
|
StopWatch swwv4l2open;
|
||||||
//int ret = video->open_video(width, 60 * 2); // 300dpi 7344/2 600dpi 7344 //FRAME_HEIGHT * 2
|
int ret = video->open_video(width, 60 * 2); // 300dpi 7344/2 600dpi 7344 //FRAME_HEIGHT * 2
|
||||||
int ret = video->open_video(); // 300dpi 7344/2 600dpi 7344 //FRAME_HEIGHT * 2
|
//int ret = video->open_video(); // 300dpi 7344/2 600dpi 7344 //FRAME_HEIGHT * 2
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
return ;
|
return ;
|
||||||
|
|
Loading…
Reference in New Issue