极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E2450】Pelco-D協(xié)議解析器

2021-11-24 10:48:29      索煒達(dá)電子      1289     

項(xiàng)目編號(hào):E2450

文件大?。?.2M

源碼說(shuō)明:帶中文注釋

開(kāi)發(fā)環(huán)境:C編譯器

簡(jiǎn)要概述:

【E2450】Pelco-D協(xié)議解析器

概述

Pelco-D協(xié)議解析器庫(kù)旨在幫助開(kāi)發(fā)人員使用Pelco-D協(xié)議控制攝像機(jī)和云臺(tái)。該庫(kù)有一個(gè)簡(jiǎn)單的接口,只進(jìn)行消息編碼。該庫(kù)包含一個(gè)類(lèi)PelcoDProtocolParser。編程類(lèi)的接口如下所示:

/**

 * @brief Pelco-D protocol parser class.

 */

class PelcoDProtocolParser

{

public:

    /**

     * @brief Class constructor.

     */

    PelcoDProtocolParser();

    /**

     * @brief Class destructor.

     */

    ~PelcoDProtocolParser();

    /**

     * @brief Method to encode Pelco-D command (Always 7 bytes).

     * 

     * @param packet Pointer to packet buffer. Always 7 bytes.

     * @param address Camera address (usually 1).

     * @param command_ID ID of command.

     * @param data_1 First byte of command data (according to Pelco-D specification).

     * @param data_2 Second byte of command data (according to Pelco-D specification).

     * @return true If the command has been encoded.

     * @return false In case any errors.

     */

    bool GetCommand(

        uint8_t* packet,

        uint8_t address,

        pelco::PelcoDCommands command_ID,

        uint8_t data_1 = 0,

        uint8_t data_2 = 0);

};

命令I(lǐng)D在PelcoDProtocolParser.h文件的PelcoDCommands結(jié)構(gòu)中描述。結(jié)構(gòu)的字段名與Pelco-D協(xié)議規(guī)范相對(duì)應(yīng)。結(jié)構(gòu)聲明如下。

enum class PelcoDCommands

{

    // Main commands.

    CAMERA_ON,

    CAMERA_OFF,

    IRIS_CLOSE,

    IRIS_OPEN,

    FOCUS_NEAR,

    FOCUS_FAR,

    FOCUS_STOP,

    ZOOM_WIDE,

    ZOOM_TELE,

    ZOOM_STOP,

    DOWN,

    UP,

    LEFT,

    RIGHT,

    UP_RIGHT,

    UP_LEFT,

    DOWN_RIGHT,

    DOWN_LEFT,

    STOP,

    // Extended commands.

    SET_PRESET,

    CLEAR_PRESET,

    GO_TO_PRESET,

    FLIP_180DEG_ABOUT,

    GO_TO_ZERO_PAN,

    SET_AUXILIARY,

    CLEAR_AUXILIARY,

    REMOTE_RESET,

    SET_ZONE_START,

    SET_ZONE_END,

    WRITE_CHAR_TO_SCREEN,

    CLEAR_SCREEN,

    ALARM_ACKNOWLEDGE,

    ZONE_SCAN_ON,

    ZONE_SCAN_OFF,

    SET_PATTERN_START,

    SET_PATTERN_STOP,

    RUN_PATTERN,

    SET_ZOOM_SPEED,

    SET_FOCUS_SPEED,

    RESET_CAMERA_TO_DEFAULT,

    AUTO_FOCUS_AUTO_ON_OFF,

    AUTO_IRIS_AUTO_ON_OFF,

    AGC_AUTO_ON_OFF,

    BACKLIGHT_COMPENSATION_ON_OFF,

    AUTO_WHITE_BALANCE_ON_OFF,

    ENABLE_DEVICE_PHASE_DELAY_MODE,

    SET_SHUTTER_SPEED,

    ADJUST_LINE_LOCK_PHASE_DELAY,

    ADJUST_WHITE_BALANCE_R_B,

    ADJUST_WHITE_BALANCE_M_G,

    ADJUST_GAIN,

    ADJUST_AUTO_IRIS_LEVEL,

    ADJUST_AUTO_IRIS_PEACK_VALUE,

    QUERY

};

命令編碼示例

下面是平臺(tái)停止命令和放大命令的示例。

// Init variables.

uint8_t packet[7];

uint8_t camera_address = 1;

// STOP camera and PTU.

if (pelco_protocol_parser.GetCommand(packet, camera_address, pelco::PelcoDCommands::STOP))

{

    // Send command.

    tcp_port.SendData(packet, 7);

    serial_port.SendData(packet, 7);

}

// Zoom tele.

if (pelco_protocol_parser.GetCommand(packet, camera_address, pelco::PelcoDCommands::ZOOM_TELE))

{

    // Send command.

    tcp_port.SendData(packet, 7);

    serial_port.SendData(packet, 7);

}

演示應(yīng)用程序

文件夾Pelco_D_ProtocolParser->PelcoDProtocolParserTests包含演示應(yīng)用程序文件(PelcoDDemoApplication)。應(yīng)用程序在啟動(dòng)后讀取PelcoDemoApplication.json參數(shù)文件,該文件包含視頻源參數(shù)和攝像頭或云臺(tái)的連接參數(shù)。應(yīng)用程序可以通過(guò)串行端口或TCP連接控制攝像頭或云臺(tái)。配置文件的內(nèi)容如下所示。

{

    "Video_Source_Params":

    {

        "video_source_init_string":"0"

    },


    "Communication_Params":

    {

        "camera_IP":"127.0.0.1",

        "TCP_port":5600,

        "serial_port_name":"/dev/tty0",

        "serial_port_baudrate":115200,

        "camera_address":1,

        "max_PTU_speed":63

    }

}

應(yīng)用程序可以從視頻文件捕獲視頻(例如:video\u source\u init\u string:“test.mp4”),也可以捕獲RTP視頻流(例如:video\u source\u init\u string:)rtp://xxx.xxx.xxx.xxx:1234)或可以從網(wǎng)絡(luò)攝像機(jī)捕獲視頻(例如:視頻\源\初始\字符串:“0”)?!巴ㄐ艆?shù)”部分包含與攝像頭或云臺(tái)連接的參數(shù)。如果要通過(guò)TCP連接進(jìn)行控制,必須在配置文件中設(shè)置正確的TCP端口(TCP_端口字段)和設(shè)備IP地址(攝像頭_IP字段)。如果不需要TCP連接,則將字段TCP_端口值設(shè)置為-1。要通過(guò)串行端口進(jìn)行控制,需要設(shè)置串行端口名稱(chēng)(串行端口名稱(chēng)字段)和波特率(串行端口波特率字段)。攝像頭地址字段定義通過(guò)Pelco-D協(xié)議控制的攝像頭或平臺(tái)的名稱(chēng)。max_PTU_speed(最大速度)字段定義了最大云臺(tái)速度(根據(jù)Pelco-D協(xié)議,最大速度不得超過(guò)63)。啟動(dòng)演示應(yīng)用程序并初始化參數(shù)后,軟件將在單獨(dú)的窗口中顯示視頻。該應(yīng)用程序使用OpenCV庫(kù)捕獲和顯示視頻。要編譯演示應(yīng)用程序,必須在操作系統(tǒng)中指定OpenCV庫(kù)的路徑。演示應(yīng)用程序的用戶界面如下所示。

【E2450】Pelco-D協(xié)議解析器

用戶界面由一個(gè)視頻顯示窗口組成,其中包含疊加信息:從視頻中心到鼠標(biāo)指針位置的一條線,以及對(duì)程序控制按鈕的提示。用戶可以使用鼠標(biāo)控制相機(jī)旋轉(zhuǎn)。要執(zhí)行此操作,請(qǐng)?jiān)谝曨l窗口中的任意位置單擊鼠標(biāo)左鍵。根據(jù)鼠標(biāo)指針的位置,將生成具有所需速度的旋轉(zhuǎn)命令(根據(jù)配置文件中的max_PTU_speed字段,在視頻邊緣速度將為最大,在中心速度將為最?。?。用戶還可以使用鍵盤(pán)按鈕控制相機(jī):1-相機(jī)打開(kāi)2-相機(jī)關(guān)閉3-近焦4-遠(yuǎn)焦5-變焦寬6-變焦D-右移(定速)A-左移(定速)W-上移(定速)X-下移(定速)Q-上移左移(定速)E-上移右移(定速)Z-下移左移(定速)C-右下移動(dòng)(定速)

目錄│文件列表:

 └ Pelco_D_ProtocolParser

    │ CMakeLists.txt

    ├ PelcoDProtocolParser

    │  │ CMakeLists.txt

    │  └ src

    │     │ CMakeLists.txt

    │     │ PelcoDProtocolParser.cpp

    │     └ PelcoDProtocolParser.h

    ├ PelcoDProtocolParserTests

    │  │ CMakeLists.txt

    │  └ PelcoDDemoApplication

    │     │ CMakeLists.txt

    │     │ json.hpp

    │     │ main.cpp

    │     │ PelcoDDemoApplication.json

    │     │ SerialPort.cpp

    │     │ SerialPort.h

    │     │ TCPPort.cpp

    │     └ TCPPort.h

    └ _static

       │ pelco-d_logo_with_borders.png

       └ user_interface.png

TAGPelco-D
  • 4 次
  • 15 分