2021-11-24 10:48:29 索煒達(dá)電子 1289
項(xiàng)目編號(hào):E2450
文件大?。?.2M
源碼說(shuō)明:帶中文注釋
開(kāi)發(fā)環(huán)境:C編譯器
簡(jiǎn)要概述:
概述
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)用程序的用戶界面如下所示。
用戶界面由一個(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