• 大小: 11.69MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-12
  • 语言: 其他
  • 标签: linuxQTLCD  

资源简介

本智能家居模拟系统,使用linux作为服务器操作系统。多线程服务器,实现了照明、手动调节控制环境状态信息,QT远程视频监控等功能。代码俱全

资源截图

代码片段和文件信息

/*
 * camera.c
 *
 *  Created on: 2017年2月21日
 *      Author: farsight
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 

#include “camera.h“
//#include “sendPic.h“

struct VideoBuffer *buffers; //一片缓存
int buffer_num; //缓存个数
char rgbbuf[PICWIDTH * PICHEIGHT * 3]; //RGB缓存
unsigned char *rgbdata;//保存一帧rgb数据
unsigned char *jpegdata;//保存一帧jpeg数据
struct jpeg_compress_struct jpeg;
struct jpeg_error_mgr jerr;

int picsize;//用于记录文件大小

void *pthread_cameraClient(void *arg) {
pthread_camera();
return NULL;
}

int pthread_camera() {
//打开摄像头
if (0 > (camfd = cam_open())) {
perror(“open camera“);
return -1;
}
//初始化摄像头
cam_init();
//分配内存
get_memory();
//捕获视频
while(1){
capture_video();
}

return 0;
}

int cam_open() {
int fd;
fd = open(“/dev/video0“ O_RDWR 0);
return fd;
}
int cam_init() {
set_capture_format();
set_time_per_frame();
return 0;
}
int set_capture_format() {
struct v4l2_format fmt;
memset(&fmt 0 sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
//设置图片大小
fmt.fmt.pix.width = PICWIDTH;
fmt.fmt.pix.height = PICHEIGHT;
//设置采集的图片的格式
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
if (-1 == ioctl(camfd VIDIOC_S_FMT &fmt)) {
return -1;
}
return 0;
}
int set_time_per_frame() {
struct v4l2_streamparm parm;
memset(&parm 0 sizeof(parm));
parm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
parm.parm.capture.timeperframe.numerator = 1;
parm.parm.capture.timeperframe.denominator = TIME_PER_frame;
parm.parm.capture.capturemode = V4L2_MODE_HIGHQUALITY;
parm.parm.capture.capability = V4L2_CAP_TIMEPERframe;
if (0 > ioctl(camfd VIDIOC_S_PARM &parm)) {
return -1;
}
return 0;
}
int get_memory() {
struct v4l2_requestbuffers req;
req.count = TIME_PER_frame;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; //数据流类型: 必须是 V4L2_BUF_TYPE_VIDEO_CAPTURE
req.memory = V4L2_MEMORY_MMAP; //内存工作方式 mmap 映射
if (-1 == ioctl(camfd VIDIOC_REQBUFS &req)) {
return -1;
}
buffers = calloc(req.count sizeof(VB));
struct v4l2_buffer tmp;
for (buffer_num = 0; buffer_num < req.count; ++buffer_num) {
memset(&tmp 0 sizeof(tmp));
tmp.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
tmp.memory = V4L2_MEMORY_MMAP;
tmp.index = buffer_num;
//读取缓存
if (-1 == ioctl(camfd VIDIOC_QUERYBUF &tmp)) {
return -1;
}
buffers[buffer_num].length = tmp.length;
//使用mmap映射转换成相应的地址
buffers[buffer_num].start = mmap(NULL tmp.length
PROT_READ | PROT_WRITE MAP_SHARED camfd tmp.m.offset);
if (buffers[buffer_num].start == MAP_FAILED) {
return -1;
}
//放入缓存队列
if (-1 == ioctl(camfd VIDIOC_QBUF &tmp)) {
return -1;
}
}
return 0;
}
int turn_on_video() {
enum v4l2_buf_type v4l2type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (-1 == ioctl(camfd VIDIOC_STRE

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\
     文件       13876  2017-02-23 10:34  AutomaticSprinklerSystem_1.4.2\.cproject
     文件         825  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.project
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.settings\
     文件        2088  2017-02-23 10:34  AutomaticSprinklerSystem_1.4.2\.settings\language.settings.xml
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\
     文件           2  2017-02-23 10:05  AutomaticSprinklerSystem_1.4.2\.svn\entries
     文件           2  2017-02-23 10:05  AutomaticSprinklerSystem_1.4.2\.svn\format
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\0c\
     文件          62  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\0c\0c082d90f5daa56c761bfe3e9fb016b0b84fe88b.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\0f\
     文件       10890  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\0f\0f79b9b6627d4abb38d5c6d043175ec041a42e73.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\11\
     文件         224  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\11\11d76698efe23ac67897e50cabb13f3455541b5f.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\12\
     文件         589  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\12\12538e9a83348aeef959e73a1542eadcb8d1aabc.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\15\
     文件        2326  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\15\15ba5c27a7854aefab86063deb10baded155f27f.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\16\
     文件         196  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\16\165bbcfc5cc5b0e8cadb148ec51e2fe9b560a59a.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\18\
     文件        6536  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\18\186a8e777ccf20b0cec9a5aadba36430dbff7598.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\1e\
     文件         137  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\1e\1ed12e2b729624ed78b72ada2546d234c7e5a88c.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\22\
     文件      798434  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\22\223fa0b83c1259de02c6c04a7c2fc9b97789a595.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\24\
     文件        5459  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\24\24d13bc5cd724a511d88119ed9ebb30c27125712.svn-base
     目录           0  2017-02-24 16:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\2b\
     文件         157  2017-02-23 10:06  AutomaticSprinklerSystem_1.4.2\.svn\pristine\2b\2b723b8f21e15fbf12d52d4ddd87e3221aa931fa.svn-base
............此处省略313个文件信息

评论

共有 条评论

相关资源