<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 視頻監控系統中云臺控制模塊的設計與實(shí)現

視頻監控系統中云臺控制模塊的設計與實(shí)現

作者: 時(shí)間:2011-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏

Bootloader、Linux內核和設備驅動(dòng)程序形成基本的嵌入式運行環(huán)境,應用層軟件snmpd為SNMP代理軟件,負責接收、解碼控制命令,并將解碼后的命令通過(guò)串口RS485發(fā)送到云臺模塊,實(shí)現對云臺運動(dòng)方向的控制。

3.1 Linux2.6.21操作系統定制

本系統采用開(kāi)放源代碼的嵌入式Linux2.6.21作為操作系統。首先對Linux內核進(jìn)行裁剪,保留本系統所需的NAND Sevice Support、UDP協(xié)議以及串口支持、套接字、NFS文件系統等。裁剪包括并口支持、USB口支持、WLAN協(xié)議支持、SD卡支持等驅動(dòng)模塊。將裁剪后的內核通過(guò)交叉編譯器編譯即可得到ARM處理器能夠運行的文件。然后再將鏡像文件通過(guò)Bootloader下載到目標板的Dataflash中。

3.2 應用程序snmpd的開(kāi)發(fā)

3.2.1 Agent開(kāi)發(fā)環(huán)境的建立

由于嵌入式Linux系統的資源有限,不可能在其上運行開(kāi)發(fā)和調試工具,因此,采用“宿主機即目標機”的開(kāi)發(fā)形式。宿主機和目標機通過(guò)串口與網(wǎng)口連接。宿主機是安裝了Linux系統的PC機,在宿主機上建立交叉編譯環(huán)境,程序在宿主機上進(jìn)行編譯,然后通過(guò)交叉編譯工具得到在嵌入式操作系統上運行的可執行文件。本系統采用Linux2.6.21版本作為PC機的操作系統,編譯器選用Arm-linux-gcc3.4.1版本,以Net-snmp v5.4.2作為開(kāi)發(fā)工具,目標機CPU為ARM11微處理器。

3.2.2 MIB庫的擴展

開(kāi)發(fā)環(huán)境建立后,就可以進(jìn)行SNMP代理軟件的開(kāi)發(fā)。依據Net-SNMP開(kāi)發(fā)文檔,要在SNMP代理中實(shí)現自定義的功能()就需要對其MIB庫進(jìn)行相應的擴展。MIB文件的編寫(xiě)要遵循SNMP協(xié)議中SMI部分的要求[5-6]。下面是本文編寫(xiě)的實(shí)現功能的MIB庫文件,本文將其命名為S3C6410.txt。

S3C6410-MIB DEFINITIONS ::= BEGIN

IMPORTS

TimeTicks FROM SNMPv2-SMI

enterprises FROM SNMPv2-SMI

OBJECT-GROUP,NOTIFICATION-GROUP FROM SNMPv2-CONF

OBJECT-TYPE, Integer32, Gauge32, MODULE-IDENTITY

FROM SNMPv2-SMI

TEXTUAL-CONVENTION FROM SNMPv2-TC;

S3C6410 OBJECT IDENTIFIER::={ enterprises 9000 }

DIRECTION OBJECT-TYPE

SYNTAXInteger32

MAX-ACCESS read-write

STATUScurrent

DESCRIPTION

"DIRECTION controll the directions of the camera.

The number ‘0’ equals the command ‘stop’

The number ‘1’ equals the command ‘left’

The number ‘2’ equals the command ‘right’

The number ‘3’ equals the command ‘up’

The number ‘4’ equals the command ‘down’

The other number equals the number ‘0’

"

DEFVAL { 0 }

::={ S3C6410 1 }

END

MIB文件S3C6410.txt描述了0、1、2、3、4分別代表的涵義。即,當SNMP代理軟件(snmpd)接收到了控制端發(fā)送過(guò)來(lái)的0、1、2、3、4信息時(shí),分別將其解釋為stop、left、right、up、down命令。

3.2.3 C代碼(框架)的自動(dòng)生成和自定義功能的加入

按照SMI規范編寫(xiě)好MIB庫文件后,將MIB文件放在usr/local/share/snmp/mibs/目錄下面,并用Net-SNMP自帶的mib2c工具生成相應的C文件S3C6410.c和S3C6410.h;然后將這兩個(gè)C文件拷貝到net-snmp.5.4.2/agent/mibgroup/examples/目錄下,并在生成的S3C6410.c模板上添加需要的功能[7]。下面是主要添加和修改的部分。

(1)依據PELCO-D云臺協(xié)議定義一維字符型數組stop、left、right、up、down。當SNMP代理接收到stop、left等命令時(shí),就可以按照下面的定義將命令翻譯成云臺模塊可以識別的碼流。

char stop[7]={0xff,0x01,0x00,0x00,0x00,0x00,0x01};//0

char left[7]={0xff,0x01,0x00,0x04,0xff,0x00,0x04};//1

char right[7]={0xff,0x01,0x00,0x02,0xff,0x00,0x02};//2

char up[7]={0xff,0x01,0x00,0x08,0x00,0xff,0x08};//3

char down[7]={0xff,0x01,0x00,0x10,0x00,0xff,0x10};//4

(2)打開(kāi)串口并設置串口參數,SNMP代理通過(guò)串口控制云臺轉動(dòng)。

open("/dev/s3c_serial1",O_RDWR | O_NDELAY |

O_NOCTTY)//打開(kāi)串口

//設置串口參數

tio.c_cflag = B2400 |CS8 |CREAD |CLOCAL;

tio.c_cflag = ~HUPCL;

tio.c_lflag = 0;

tio.c_iflag = IGNPAR;

tio.c_oflag = 0;

tio.c_cc[VTIME] = 0;

tio.c_cc[VMIN] = 0;

……

(3)在case MODE_SET_ACTION:下添加功能。

case MODE_SET_ACTION:

……

switch(direction)

{

case 0://當接收到0時(shí)執行stop命令

write(fd,stop,7);

close(fd);

break;

……

……

case 640://當接收到640時(shí)啟動(dòng)application

system("exec /mnt/nand/my.application ");

break;

default://錯誤處理

……

}

當snmpd接收到0、1、2…時(shí),分別向串口寫(xiě)入stop、left、right…命令。

3.2.4 snmpd的編譯、配置和移植

(1)在net-snmp-5.4.2.1目錄下使用CC=arm-none-linux-gnueabi-gcc ./configure --build=i386-linux --host=arm-none-linux-gnueabi --enable-mini-agent --disable-ipv6 --with-endianness=little --disable-manuals --disable-ucd-snmp-compatibility --enable-as-needed --disable-embedded-perl --without-perl-modules --disable-snmptrapd-subagent --disable-applications --disable-scripts --with-mib-modules="S3C6410"命令進(jìn)行配置編譯選項,這里可以添加需要或者去掉一些不需要的選項。配置完成后使用make install命令進(jìn)行編譯、安裝。編譯得到的snmpd比較大,但可用arm-linux-strip snmpd進(jìn)行處理即可得到需要的snmpd文件。

(2)snmpd.conf文件的配置。配置文件用于存放代理進(jìn)程所需的配置信息。代理進(jìn)程在初始化時(shí)訪(fǎng)問(wèn)該文件:讀取所需的參數、地址以及啟動(dòng)運行及進(jìn)入循環(huán)后讀寫(xiě)SNMP報文所需的其他信息。下面是本設計中縮減后的SNMP代理配置文件內容:

#sec.namesourcecommunity

com2sec locallocalhostpublic

com2sec mynetwork 192.168.1.0/24public#我的網(wǎng)段

在168

為了便于測試,可以將組設置為可讀寫(xiě),如:group MyRWGroup v2c mynetwork。

(3)移植到目標開(kāi)發(fā)板。將snmpd和修改后的snmpd.conf文件移到宿主機的Windows下。啟動(dòng)目標板,將snmpd文件上傳到目標板/usr/sbin目錄下(需要將訪(fǎng)問(wèn)

權限更改為可執行),將snmpd.conf文件上傳到/usr/local/share/snmp/下(不存在的目錄先要創(chuàng )建)。然后就可以啟動(dòng)snmpd了。

4 系統測試

測試環(huán)境為:內線(xiàn)速率為10 Mb/s的局域網(wǎng)Intranet;控制終端采用戴爾Vostro230型PC機(主頻2.7 GHz,內存2 GB,Windows XP操作系統,IP地址:24.84.58.129)。為了方便測試,控制軟件采用ManageEngine-MibBrowser軟件,ARM11板IP地址設為24.84.58.224。

在系統搭建完成后,啟動(dòng)ARM板,同時(shí)在控制端PC機上打開(kāi)ManageEngine-MibBrowser軟件,并加載MIB文件。設置好相關(guān)參數后,向ARM板分別發(fā)送控制命令1(左)、2(右)、3(上)、4(下)、0(停止)。

實(shí)驗表明,該方案能夠在上穩定可靠地實(shí)現對云臺的遠程控制功能,效果非常好。

本文將先進(jìn)的嵌入式技術(shù)與SNMP協(xié)議相結合,通過(guò)MIB擴展和SNMP移植,成功地在A(yíng)RM11平臺上實(shí)現了對云臺的遠程控制,并給出了運用Net-SNMP工具實(shí)現云臺控制功能的詳細方法。該方案不僅新穎,而且穩定可靠,開(kāi)發(fā)周期短,具有很高的市場(chǎng)應用價(jià)值。目前,該方案已在某單位網(wǎng)絡(luò )管理系統的模塊中得到運用。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>