1.引言
呼叫 open 開啟裝置,利用 ioctl()對裝置進行控制,比如設定對比度、亮度、調色盤, 訪問模式等等。主要**如下:
int fd = open(「/dev/v4l/video0」,o_rdwr); //開啟裝置
/* 獲取裝置的基本資訊(裝置名稱、支援的最大最小解析度、訊號源資訊等)*/
ioctl(vd->fd, vidiocgcap, &(vd->capability)):
/* 獲取裝置採集的圖象的各種屬性 /*
ioctl(vd->fd, vidiocgpict, &(vd->picture));
/* 如果需要改變影象的資訊,先改變 picture 中的相應的變數值,再呼叫 ioctl(vd->fd,
vidiocspict, &(vd->picture))即可,本程式初始化全部採用預設值 */
(2)採集影象
本系統使用記憶體對映的方式採集影象,執行緒採集函式grab()主要**如下:
/* 分配一段記憶體,存放採集到的影象資料 */
vd->pframebuffer =(unsigned char *) mmap (0, vd->videombuf.size, prot_read| prot_write,map_shared, vd->fd, 0);
for(;;)
/* 等待一幀資料採集完畢,採集到的影象資料就放到了 vd->pframebuffer 起始的記憶體位址內,大小為vd->videombuf.size 位元組 */
if (ioctl (vd->fd, vidiocsync, &vd->vmmap.frame) < 0) }
下面給出建立執行緒的關鍵**:
while (signalquit) //如果沒有退出訊號就一直執行下去
/* 等待客戶端的連線,如果沒有連線就一直阻塞下去,如果有客戶連線就建立一
個執行緒,在新的套介面上與客戶端進行資料互動 */
if ((new_sock = accept(serv_sock, (struct sockaddr *)&their_addr, &sin_size)) == -1)
pthread_create(&server_th, null, (void *)service, &new_sock);
}執行緒函式 server()主要是讀緩衝區資料,寫入套介面,同時讀取套介面的資料,設定下一次採集影象的屬性,這裡就不再給出**。
3.嵌入式web 伺服器
**:
4.系統試驗
5.結束語
嵌入式WEB伺服器的實現
arm linux開發 warewin 2g 3g無線傳輸 dtu 和路由器 筆記 web伺服器的原理如下 1 建立連線 web 伺服器做為服務端監聽服務埠,開啟乙個socket 檔案,web瀏覽器做為客服端建立連線此服務埠。2 傳送請求 web 瀏覽器通過 socket 向web 伺服器提交請求。...
嵌入式Web伺服器移植
或者 最新發行版本 0.94.13 解壓 tar xzf boa 0.94.13.tar.gz 直接執行src configure檔案 a 修改 cc gcc 為 cc usr local arm 2.95.3 bin arm linux gcc b 修改 cpp gcc e 為 cpp usr l...
嵌入式Web伺服器移植
文章一僅供個人學習之用,請勿用於他途。n printf n printf n printf n printf n exit 0 交叉編譯生成helloworld.cgi arm softfloat linux gnu gcc o helloworld.cgi helloworld.c 將hellow...