嵌入式web伺服器的實現

2021-06-08 18:42:29 字數 1264 閱讀 5116

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