USB攝像頭驅動之實現資料傳輸3 設定引數

2021-09-26 03:14:06 字數 2399 閱讀 3435

1、啟動傳輸

/* a11 啟動傳輸 

* 參考: uvc_video_enable(video, 1):

* uvc_commit_video

* uvc_init_video

*/static int myuvc_vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)

} return 0;

} * 參考: uvc_dequeue_buffer

*/static int myuvc_vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *v4l2_buf)

buf = list_first_entry(&myuvc_queue.mainqueue, struct myuvc_buffer, stream);//取出第1個buffer

switch (buf->state)

list_del(&buf->stream);//刪除第1個buf

done:

return ret;

} usb_set_inte***ce(myuvc_udev, myuvc_streaming_intf, myuvc_streaming_balternatesetting);

struct myuvc_streaming_control ;
2、測試引數

static int myuvc_try_streaming_params(struct myuvc_streaming_control *ctrl)

pipe = (set_cur & 0x80) ? usb_rcvctrlpipe(myuvc_udev, 0)

: usb_sndctrlpipe(myuvc_udev, 0);

type |= (set_cur & 0x80) ? usb_dir_in : usb_dir_out;

//進行傳送,ret是接收的位元組數

//usb_control_msg是沒有用到urb的在usb中簡單進行傳送和接收的一種機制,用於少量的資料通訊

ret = usb_control_msg(myuvc_udev, pipe, set_cur, type, vs_probe_control << 8,

0 << 8 | myuvc_streaming_intf, data, size, 5000);

kfree(data);//釋放緩衝區

return (ret < 0) ? ret : 0;

}

3、取出引數

static int myuvc_get_streaming_params(struct myuvc_streaming_control *ctrl)

else

done:

kfree(data);

return (ret < 0) ? ret : 0;

}

4、設定引數

static int myuvc_set_streaming_params(struct myuvc_streaming_control *ctrl)

pipe = (set_cur & 0x80) ? usb_rcvctrlpipe(myuvc_udev, 0)

: usb_sndctrlpipe(myuvc_udev, 0);

type |= (set_cur & 0x80) ? usb_dir_in : usb_dir_out;

//跟try不一樣的是,剛才是 vs_probe_control(列舉嘗試),現在是vs_commit_control(設定引數)

ret = usb_control_msg(myuvc_udev, pipe, set_cur, type, vs_commit_control << 8,

0 << 8 | myuvc_streaming_intf, data, size, 5000);

kfree(data);

return (ret < 0) ? ret : 0;

}

5、probe函式

static int myuvc_probe(struct usb_inte***ce *intf,

const struct usb_device_id *id)

else if (cnt == 2)

if (cnt == 2)

return 0;

}

攝像頭驅動之實現資料傳輸3 設定引數 學習筆記

1 啟動傳輸 static int myuvc vidioc streamon struct file file,void priv,enum v4l2 buf type i return 0 struct myuvc streaming control 2 測試引數 static int myuv...

Android驅動USB攝像頭

先來個整體規劃 剛搜尋了一圈,在有乙個不錯的帖子,android系統原理及開發要點詳解 中也講 camera 硬體抽象層的,不過我是只做驅動,不能越界,先弄乙個 中星微 的z03 先 驅動 起來,讓做應用的先做,我在tiny6410上已經驗證可行 linux qt 不過沒有進行android的驗證,...

USB攝像頭ROS驅動

在ros下常用的主要有兩種驅動包 usb cam和uvc cam 我這裡用的是usb cam包 第一次使用首先要安裝這個包,安裝完了之後就可以很方便的執行攝像頭節點了 1.在ros工作空間安裝ros cd catkin ws src git clone usb cam cd catkin make ...