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

2021-07-26 05:36:54 字數 1576 閱讀 6611

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 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(設定引數)

kfree(data);

return (ret < 0) ? ret : 0;}

4、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;

}

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

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

實時攝像頭資料傳輸丟包問題

做乙個實時攝像頭資料傳輸的專案,伺服器可以向客戶端的多個埠傳送資料。問題 如果伺服器只向乙個埠傳送資料,客戶端只接受乙個埠的資料,那麼資料傳輸沒問題。但是如果伺服器向客戶端的多個埠傳送資料,而客戶端之接收乙個埠的資料,這時就會有丟包的現象。是什麼原因?如何解決?解決方法 方法一 多執行緒方式。建立多...

原生Ajax實現非同步資料傳輸

描述 不用前端js框架 如jquery dojo ext proptype等 的原生ajax,非同步實現與後台的資料傳輸,不依賴任何js包 注 所有js 均位於某乙個js檔案中,呼叫函式只需要引入該檔案 1.建立xmlhttprequest物件 全域性變數,記錄建立的xmlhttprequest物件...