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 ...