#ifndef __PTZ_PRESET_BIT_SCAN_H_ #define __PTZ_PRESET_BIT_SCAN_H_ typedef struct _PresetBit_//云台预置位 { float hori_angle;//水平角度 float vert_angle;//垂直角度 float hori_scan_speed;//水平转动速度 float vert_scan_speed;//垂直转动速度 float zoom_v;//镜头变倍电压 float focus_v;//镜头聚焦电压 unsigned short int step_stop_time;//预置位扫描时每个位置的停止时间,单位是ms,并且必须大于电机默认的停止时间 char enable;//预置位是否有效,1预置位存在,0预置位不存在 unsigned int crc;//效验码 }PresetBit; //预置位扫描 typedef struct _PresetBitScan_ { unsigned int start_num;//起始预置位编号 unsigned int end_num; //结束预置位编号 unsigned int actual_num;//当前实际的扫描编号 float hori_speed;//水平转速 float vert_speed;//垂直转速 unsigned short int stop_time; // char hori_arrive_flag;//预置位是否到达的标记,1正在转向指定预置位,0到达预置位 // char vert_arrive_flag;//预置位是否到达的标记,1正在转向指定预置位,0到达预置位 unsigned char state; //扫描状态,即扫描进行程度 unsigned char state_a; //扫描状态,即扫描进行程度 unsigned char save_state;//保存的状态 unsigned char last_state;//上一次扫描状态 char mode;//0循环预置位扫描,1单次预置位扫描 }PresetBitScan; extern PresetBitScan g_preset_bit_scan; /**************预置位参数回传**************/ //预置位水平角度 #define PRESET_BIT_HORI_ANGLE 0xA1 //预置位垂直角度 #define PRESET_BIT_VERT_ANGLE 0xA2 //预置位停止时间 #define PRESET_BIT_STOPTIME 0xA3 //预置位扫描速度 #define PRESET_BIT_SPEED 0xA4 ///预置位有效 #define PRESET_BIT_ENABLE 1 ///预置位无效 #define PRESET_BIT_DISABLE 0 ///预置位总数 #define PRESET_BIT_AMOUNT 256 ///预置位数据存入Flash的首地址 #define PRESET_BIT_FLASH_ADD 0X007F0000 //预置位备份数据存入Flash的首地址 #define PRESET_BIT_BACKUP_FLASH_ADD 0X00800000 ///预置位数据存入Flash的首地址 #define PRESET_BIT_FIRST_FLASH_ADD 0X007F0000//存储首地址 //预置位数据存入Flash的尾地址 #define PRESET_BIT_TAIL_FLASH_ADD 0X0080FFFF//存储尾地址 //把存储区的最后的4K存储区作为数据中转缓存区 #define PRESET_BIT_CACHE_FLASH_ADD (0X0080FFFF - 1024*4 + 1)//存储尾地址 //预置位数据写入FLASH的尝试次数 #define PRESET_BIT_SAVE_FLASH_NUM 3 //预置位数据FLASH读入的尝试次数 #define PRESET_BIT_READ_FLASH_NUM 3 //预置位扫描启动 #define PRESET_BIT_SCAN_START 1 //预置位扫描暂停 #define PRESET_BIT_SCAN_PAUSE_A 20 #define PRESET_BIT_SCAN_PAUSE_B 21 //预置位扫描恢复 #define PRESET_BIT_SCAN_RECOVERY 30 //预置位扫描关闭 #define PRESET_BIT_SCAN_CLOSE_A 40 #define PRESET_BIT_SCAN_CLOSE_B 0 //预置位回传 #define PRESET_BIT_RETURN_OFF 0//预置位回传关 #define PRESET_BIT_RETURN_ON 1//预置位回传开 //预置位扫描,预置位定位回传 #define PRESET_BIT_SCAN_END_RETURN_OFF 0//关闭预置位扫描结束回传 #define PRESET_BIT_SCAN_END_RETURN_ON 1//打开预置位扫描结束回传 #define PRESET_BIT_SCAN_LOCATION_RETURN_ON 2//打开预置位扫描到位回传 #define PRESET_BIT_SCAN_LOCATION_RETURN_OFF 3//关闭预置位扫描到位回传 #define PRESET_BIT_LOCATION_RETURN_ON 4//打开普通调用预置位到位回传 #define PRESET_BIT_LOCATION_RETURN_OFF 5//关闭普通调用预置位到位回传 #define PRESET_BIT_SCAN_END_RETURN_DATA 6//扫描结束数据回传 #define PRESET_BIT_SCAN_LOCATION_RETURN_DATA 7//预置位扫描到位回传 #define PRESET_BIT_LOCATION_RETURN_DATA 8//普通到达预置位回传 #define PRESET_BIT_LOCATION_UDP_CMD_ON 1//UDP收到调用预置位指令 #define PRESET_BIT_LOCATION_UART_422_CMD_ON 2//串口422收到调用预置位指令 #define PRESET_BIT_LOCATION_UART_485_CMD_ON 3//串口485收到调用预置位指令 unsigned int ptz_preset_bit_crc(PresetBit bit); char ptz_preset_bit_save(PresetBit bit, unsigned int num); PresetBit ptz_preset_bit_read(unsigned int num); void ptz_preset_bit_all_erase(); void init_preset_bit_scan_module(void); void ptz_preset_bit_location_return_return(); void ptz_preset_bit_scan_location_return_return(); void ptz_preset_bit_scan_end_return_return(); void ptz_preset_bit_location_return_save( unsigned int num, char dev); void presetbit_data_return(char dev, unsigned char ScanNum); #endif