freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

嵌入式聲光數(shù)據采集平臺設計論文-資料下載頁

2025-06-28 13:55本頁面
  

【正文】 wDotLine。 if ( 0 == numX % (2*STEP) ) //補劃橫坐標的刻度 { ( ().x(), ().y() + BASELINELENGHT, ().x(), ().y() + 2 * BASELINELENGHT )。 ()。 //保存原來設置 ( QPen( blue, 1, DotLine) )。 ( //畫線 ().x(), ().y(), ().x(), ().y() )。 ()。 //恢復原來設置 if ( 0 == numX % (4*STEP) ) { ( ().x(), ().y() + 2*BASELINELENGHT, ().x(), ().y() + 3 * STEP )。 } } numX ++。 if ( numX = 100 ) //超過100就置0 numX = 0。 ( Qt::black )。 ( Xold, (int)Yold, Xnew, (int)Ynew )。 //讀取數(shù)據的聯(lián)系 //更新界面 bitBlt( this, 0, 0, amp。newBuffer, 0, 0, (), () )。 }void VideoDev::vd_open() //打開USB設備{ fd = open(/dev/video0,O_RDWR)。 //打開設備獲取設備描述符 if(fd 0) { perror(open:\n)。 return 。 }}void VideoDev::vd_req_bufs() //請求三個緩沖區(qū),用于視頻數(shù)據存儲{ memset(amp。req,0,sizeof(struct v4l2_requestbuffers))。 //初始化緩存 = 3。 = V4L2_BUF_TYPE_VIDEO_CAPTURE。 = V4L2_MEMORY_MMAP。 int ret = ioctl(fd,VIDIOC_REQBUFS,amp。req)。 //申請緩存 if(ret 0) { perror(vd_req_bufs:)。 return 。 } printf(count:%d\n,)。 //打印調試}void VideoDev::vd_stream_on() //開始數(shù)據的采集{ type = V4L2_BUF_TYPE_VIDEO_CAPTURE。 unsigned int num。 for(num = 0。num。num++) //對每一個緩存進行操作 { struct v4l2_buffer buf。 memset(amp。buf,0,sizeof(struct v4l2_buffer))。 = V4L2_BUF_TYPE_VIDEO_CAPTURE。 = V4L2_MEMORY_MMAP。 = num。 if(1==ioctl(fd,VIDIOC_QBUF,amp。buf)) //獲得每個緩存的數(shù)據 { perror(VIDIOC_QBUF:)。 printf(VIDIOC_QBUF is quit\n)。 return 。 } printf(in stream_on qbuf\n)。 } int ret = ioctl(fd,VIDIOC_STREAMON,amp。type)。 //獲得類型 if(ret 0) { perror(vd_stream_on:)。 return 。 }} //將數(shù)據讀到buffer指向的緩沖區(qū)void VideoDev::vd_read_frame(void *buffer) { struct v4l2_buffer buf。 memset(amp。buf,0,sizeof(struct v4l2_buffer))。 = V4L2_BUF_TYPE_VIDEO_CAPTURE。 = V4L2_MEMORY_MMAP。 int ff = ioctl(fd,VIDIOC_DQBUF,amp。buf)。 //讀取緩存數(shù)據 if(ff 0) { perror(VIDIOC_DQBUF:)。 return 。 } index = 。 //將數(shù)據移動至緩存中 memmove(buffer,buffers[].start,buffers[].length)。} //視頻顯示部分,每30ms調用一次void Display::do_display(){ //讀取數(shù)據到p_ping緩沖區(qū) videodevvd_read_frame(p_ping)。 //將YUV格 式轉化為rgb格式 processconvert_yuv_to_rgb_buffer((uchar*)p_ping,(uchar*)p_pong,320,240)。 //將rgb格式轉化為jpeg格式圖片 processRGB2Jpeg((uchar*)p_pong,320,240)。 pixmapload(/opt/Qtopia/)。 //圖像控件加載采集圖片 setBackgroundPixmap(*pixmap)。 //顯示圖像 videodevvd_write_frame()。}4.A/D驅動模塊static irqreturn_t adcdone_int_handler(int irq, void *dev_id) { if (ADC_enable) //中斷處理函數(shù) { adc_data = ADCDAT0 amp。 0x3ff。 //從中讀取AD口的數(shù)據 ev_adc = 1。 //數(shù)據采集完成標志 wake_up_interruptible(amp。)。 //喚醒讀操作進程 } return IRQ_HANDLED。}static ssize_t tq2440_adc_read(struct file *filp, char *buffer, size_t count, loff_t *ppos){ char str[20]。 //讀操作函數(shù) int value。 size_t len。 if (down_trylock(amp。ADC_LOCK) == 0) //嘗試獲得鎖 { ADC_enable = 1。 //使能采集,設置通道和預分頻值 START_ADC_AIN(, )。 wait_event_interruptible(, ev_adc)。 //等待采集完成 ev_adc = 0。 DPRINTK(AIN[%d] = 0x%04x, %d\n, , adc_data, ((ADCCON amp。 0x80) ? 1:0))。 value = adc_data。 //打印采集到得數(shù)據 sprintf(str,%5d, adc_data)。 //將讀到的數(shù)據復制到用戶空間 copy_to_user(buffer, (char *)amp。adc_data, sizeof(adc_data))。 ADC_enable = 0。 up(amp。ADC_LOCK)。 //釋放獲得的鎖 } else { value = 1。 } len = sprintf(str, %d\n, value)。 if (count = len) { //復制數(shù)據到用戶緩沖區(qū) int r = copy_to_user(buffer, str, len)。 return r ? r : len。 } else { return EINVAL。 }} //打開函數(shù)static int tq2440_adc_open(struct inode *inode, struct file *filp) { init_waitqueue_head(amp。())。 //初始化等待隊列頭 DPRINTK( ADC opened\n)。 return 0。} //關閉函數(shù)static int tq2440_adc_release(struct inode *inode, struct file *filp) { DPRINTK( ADC closed\n)。 return 0。} //I/O控制函數(shù),用于設置通道和預分頻值static int tq2440_adc_ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg){ if(arg 255 || arg 0) //參數(shù)檢查 { return EINVAL。 } switch(cmd) { case CHANNEL_0_ON: //通道0 = 0。 = arg。 break。 case CHANNEL_1_ON: //通道1 = 1。 = arg。 break。 case CHANNEL_2_ON: //通道2 = 2。 = arg。 break。 case CHANNEL_3_ON: //通道3 = 3。 = arg。 break。 default: return EINVAL。 } return 0。} //實現(xiàn)的file_operations結構static struct file_operations dev_fops = { owner: THIS_MODULE, open: tq2440_adc_open, read: tq2440_adc_read, ioctl: tq2440_adc_ioctl, release: tq2440_adc_release,}。 //混雜設備結構static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = amp。dev_fops,}。 //模塊初始化函數(shù)static int __init dev_init(void) { int ret。 //映射ADC物理地址至虛擬地址 base_addr=ioremap(S3C2410_PA_ADC,0x20)。 if (base_addr == NULL) { printk(KERN_ERR failed to remap register block\n)。 return ENOMEM。 } //獲得時鐘 adc_clock = clk_get(NULL, adc)。 if (!adc_clock) { printk(KERN_ERR failed to get adc clock source\n)。 return ENOENT。 } clk_enable(adc_clock)。 //使能時鐘 //請求中斷 ret=request_irq(IRQ_ADC,adcdone_int_handler,IRQF_SHARED, DEVICE_NAME, amp。adcdev)。 if (ret) { iounmap(base_addr)。 return ret。 } ret = misc_register(amp。misc)。 //注冊混雜設備 printk (DEVICE_NAME initialized\n)。 return ret。} //模塊卸載函數(shù)static void __exit dev_exit(void){ free_irq(IRQ_ADC, amp。adcdev)。 //釋放中斷 iounmap(base_addr)。 //釋放內存映射 if (a
點擊復制文檔內容
規(guī)章制度相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1