//--------------------------------------------------------------------------- #ifndef PacketHandllingFH #define PacketHandllingFH //--------------------------------------------------------------------------- #include "VmsProtocolF.h" //--------------------------------------------------------------------------- #pragma pack(push, 1) //--------------------------------------------------------------------------- /* ***************************************************************************** * 프로토콜 수신 OP Code ****************************************************************************/ #if 0 // 도로공상 문자식 VMS 프로토콜 //상태정보 e_txt_status_req = 0x18, // Status Request Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40] e_txt_status_res = 0x40, // Status Response Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40] //모듈정보 e_txt_failed_elem_data_req = 0x1A, // Failed Element Data Request Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42] e_txt_failed_elem_data_res = 0x42, // Failed Element Data Response Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42] //폼표출 e_txt_download_full_graphic_lib = 0x0A, // Download Graphics Library Opcode = 10 [0x0A] ⇔ Opcode = 72 [0x48] e_txt_display_schedule_msg = 0x0E, // Display Schedule Message Opcode = 14 [0x0E] ⇔ Opcode = 72 [0x48] e_txt_blank = 0x16, // Blank Opcode = 22 [0x16] ⇔ Opcode = 72 [0x48] // 도로공사 도형식 VMS 프로토콜 1. 0x88 VMS Status 요구, 응답 2. 0x8C 전원 모듈 상태 요구, 응답 3. 0x8E 표출 모듈 상태 요구, 응답 4. VMS 메시지 표출 4.1 0x80 폼 데이터 표출, ACK/NAK 4.2 0x96 Display Schedule Form, ACK/NAK 4.3 0x9E Blank, ACK/NAK // 도형식....... //e_vms_download_form = 0x9A,// Download Form 송신 Form download 센터 → VMS //e_vms_file_download = 0x82,// 데이터 다운로드 송신 INI, CFG , Bitmap , Data파일송신 센터 → VMS //e_vms_download_schedule_form = 0x96,// Display Schedule Form 송신 계획된 Form 표출 요구 센터 → VMS //e_vms_blank = 0x9E,// Blank 송신 schedule 표출 센터 → VMS //e_vms_status = 0x88,// VMS Status 요구 송신 VMS 상태정보 요구 송신 센터 → VMS //e_vms_power_module_status = 0x8C,// 전원 모듈 상태 요구 송신 전원 모듈 상태를 검사 결과를 요청한다 센터 → VMS //e_vms_display_module_status = 0x8E,// 표출 모듈 상태 요구 송신 표출 모듈 상태를 검사 결과를 요청한다 센터 → VMS //e_vms_parameter = 0x8A,// VMS 파라미터 요구 송신 VMS 로컬 상태 요구 송신 센터 → VMS #endif typedef enum _e_vms_protocol { e_vms_MIN = 0x00, // 문자식 OpCode e_txt_disp_immediate_text = 0x02, // Display Immediate Text Opcode = 2 [0x02] ⇔ Opcode = 72 [0x48] e_txt_disp_immediate_graphic = 0x04, // Display Immediate graphics Opcode = 4 [0x04] ⇔ Opcode = 72 [0x48] e_txt_disp_lib_message = 0x06, // Display Library Message Opcode = 6 [0x06] ⇔ Opcode = 72 [0x48] e_txt_download_message_lib = 0x08, // Download A Message Library Opcode = 8 [0x08] ⇔ Opcode = 72 [0x48] e_txt_download_full_graphic_lib = 0x0A, // Download Graphics Library Opcode = 10 [0x0A] ⇔ Opcode = 72 [0x48] e_txt_download_graphic_symb_lib = 0x0C, // Download Graphic Symbol Library Opcode = 12 [0x0C] ⇔ Opcode = 72 [0x48] e_txt_display_schedule_msg = 0x0E, // Display Schedule Message Opcode = 14 [0x0E] ⇔ Opcode = 72 [0x48] e_txt_initialize = 0x12, // Initailize Opcode = 18 [0x12] ⇔ Opcode = 72 [0x48] e_txt_disp_test_pattern = 0x14, // Display Test Pattern Opcode = 20 [0x14] ⇔ Opcode = 72 [0x48] e_txt_blank = 0x16, // Blank Opcode = 22 [0x16] ⇔ Opcode = 72 [0x48] e_txt_download_parameter = 0x1C, // Download Parameter Opcode = 28 [0x1C] ⇔ Opcode = 72 [0x48] e_txt_display_default_msg = 0x1E, // Display Default Message Opcode = 30 [0x1E] ⇔ Opcode = 72 [0x48] e_txt_set_luminance_level = 0x20, // Set Luminance Level Opcode = 32 [0x20] ⇔ Opcode = 72 [0x48] e_txt_signboard_control = 0x24, // Signboard Power Control Opcode = 36 [0x24] ⇔ Opcode = 72 [0x48] e_txt_signboard_alarm_control = 0x2A, // Signboard Alarm Control Opcode = 42 [0x2A] ⇔ Opcode = 72 [0x48] e_txt_pan_hetr_temp_control = 0x31, // 함체 PAN/HEATER 온도 설정 Opcode = 49 [0x31] ⇔ Opcode = 72 [0x48] e_txt_status_req = 0x18, // Status Request Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40] e_txt_status_res = 0x40, // Status Response Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40] e_txt_upload_modl_status_req = 0x28, // Upload Module Status Opcode = 40 [0x28] ⇔ Opcode = 74 [0x4A] e_txt_upload_modl_status_res = 0x4A, // Upload Module Status Opcode = 40 [0x28] ⇔ Opcode = 74 [0x4A] e_txt_pan_hetr_temp_req = 0x32, // 함체 PAN/HEATER 온도 요청 Opcode = 50 [0x32] ⇔ Opcode = 66 [0x42] e_txt_pan_hetr_temp_res = 0x42, // 함체 PAN/HEATER 온도 요청 Opcode = 50 [0x32] ⇔ Opcode = 66 [0x42] e_txt_failed_elem_data_req = 0x1A, // Failed Element Data Request Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42] e_txt_failed_elem_data_res = 0x42, // Failed Element Data Response Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42] e_txt_upload_msg_req = 0x22, // Upload A Message Opcode = 34 [0x22] ⇔ Opcode = 68 [0x44] e_txt_upload_msg_res = 0x44, // Upload A Message Response Opcode = 34 [0x22] ⇔ Opcode = 68 [0x44] e_txt_upload_schedule_msg_req = 0x23, // Upload Schedule Message Opcode = 35 [0x23] ⇔ Opcode = 69 [0x45] e_txt_upload_schedule_msg_res = 0x45, // Upload Schedule Message Opcode = 35 [0x23] ⇔ Opcode = 69 [0x45] e_txt_msg_echo_back_req = 0x26, // Message Echo Back Opcode = 38 [0x26] ⇔ Opcode = 70 [0x46] e_txt_msg_echo_back_res = 0x46, // Message Echo Back Opcode = 38 [0x26] ⇔ Opcode = 70 [0x46] e_txt_image_req = 0x2C, // 영상이미지 요청 Status Opcode = 44 [0x2C] ⇔ Opcode = 76 [0x4C] e_txt_image_res = 0x4C, // 영상이미지 요청 Status Opcode = 44 [0x2C] ⇔ Opcode = 76 [0x4C] e_txt_ftp_download = 0x2C, // 동영상 파일 FTP 다운로드 Opcode = 44 [0x2C] ⇔ Opcode = 72 [0x48] e_txt_ftp_download_completed = 0x2E, // 동영상 파일 FTP 다운로드 완료 Opcode = 46 [0x2E] e_txt_response = 0x48, // 제어기 응답(ACK/NAK) // 도형식 OpCode e_vms_form_display = 0x80, // 폼 데이터 표출 송신 표출할 폼 데이터 송신 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS e_vms_file_download = 0x82, // 데이터 다운로드 송신 INI, CFG , Bitmap , Data파일송신 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS // 사용하지 않음 e_vms_data_upload = 0x84, // 데이터 업로드 송신 INI, CFG , Bitmap , Data파일 업로드 요구 센터 → VMS // 수신 업로드 데이터 전송 센터 ← VMS e_vms_status_control = 0x86, // VMS 상태제어 송신 VMS 제어정보 송신 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS e_vms_status = 0x88, // VMS Status 요구 송신 VMS 상태정보 요구 송신 센터 → VMS // 수신 상태 데이터 응답 센터 ← VMS e_vms_parameter = 0x8A, // VMS 파라미터 요구 송신 VMS 로컬 상태 요구 송신 센터 → VMS // 수신 로컬 상태 데이터 응답 센터 ← VMS e_vms_power_module_status = 0x8C, // 전원 모듈 상태 요구 송신 전원 모듈 상태를 검사 결과를 요청한다 센터 → VMS // 수신 전원 모듈 상태 데이터 응답 센터 ← VMS e_vms_display_module_status = 0x8E, // 표출 모듈 상태 요구 송신 표출 모듈 상태를 검사 결과를 요청한다 센터 → VMS // 수신 표출 모듈 상태 데이터 응답 센터 ← VMS // 픽셀이미지 요구는 제어기에서 응답을 하지 않음 // 사용하지 않음 e_vms_pixel_image = 0x92, // VMS Pixel Image 요구 송신 VMS LED Pixel 상태요구 송신 센터 → VMS // 수신 현재표출중인 LED 상태 Pixel 송신 센터 ← VMS // 사용하지 않음 e_vms_current_display_form = 0x94, // 현재표출폼 Upload 송신 Local에서 표출 중인 폼 Upload요구 센터 → VMS // 수신 현재표출중인 전체폼 송신 센터 ← VMS e_vms_download_schedule_form = 0x96, // Display Schedule Form 송신 계획된 Form 표출 요구 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS e_vms_display_default_form = 0x98, // Display Default Form 송신 디폴트 From표출 요구 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS e_vms_download_form = 0x9A, // Download Form 송신 Form download 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS // 사용하지 않음 e_vms_upload_schedule_form = 0x9C, // Upload Schedule Form 송신 스케줄 메시지 업로드 요구 센터 → VMS // 수신 스케줄 메세지 전송 센터 ← VMS e_vms_blank = 0x9E, // Blank 송신 schedule 표출 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS // 제어기에서 반응 없음 // 사용하지 않음 e_vms_display_form_id = 0xA0, // Display Form ID 송신 Form ID에 해당하는 Form 표출 센터 → VMS // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS e_vms_MAX = 0xFF+1, } E_VMS_PROTOCOL; #if 0 0xA1 : 동영상 파일 FTP 다운로드 0xA2 : 동영상 파일 FTP 다운로드 완료 #endif /* ***************************************************************************** * VMS Form File Type ****************************************************************************/ #define P_FILE_TYPE_IMAGE 0x01 #define P_FILE_TYPE_VIDEO 0x02 #define P_FILE_TYPE_STREAM 0x03 #define P_FILE_TYPE_TRAFFIC 0x04 #define P_FILE_TYPE_TEXT 0x05 /* ***************************************************************************** * VMS System define ****************************************************************************/ #define MAX_VMS_SCENARIO_FORM 10 #define PICTURE_BASE_FORMID 9000 #define TEXT_BASE_FORMID 9000 #define DEFAULT_FORMID 0 /* ***************************************************************************** * 프로토콜 OP 코드 정의 ****************************************************************************/ #define VMS_DLE 0x10 // DLE #define VMS_STX 0x02 // Start of TeXt #define VMS_ETX 0x03 // End of TeXt #define VMS_ACK 0x06 #define VMS_NAK 0x15 #define VMS_NULL 0x00 typedef struct _vms_head { _vms_head() { Dle = VMS_DLE; Stx = VMS_STX; } BYTE Dle; BYTE Stx; BYTE Group; BYTE Ctlr; BYTE OpCode; BYTE Curr; BYTE Total; DWORD Length; } VMS_HEAD; typedef struct _vms_data { _vms_data() { Curr = 1; Total = 1; Length = 0; } BYTE Curr; BYTE Total; DWORD Length; } VMS_DATA; typedef struct _vms_tail { _vms_tail() { Dle = VMS_DLE; Etx = VMS_ETX; } BYTE Dle; BYTE Etx; WORD Crc; } VMS_TAIL; typedef struct _vms_req_data { _vms_req_data() { Group = 0; Ctlr = 0; OpCode = VMS_NULL; Curr = 1; Total = 1; Length = 0; } BYTE Group; BYTE Ctlr; BYTE OpCode; BYTE Curr; BYTE Total; DWORD Length; } VMS_REQ_DATA; typedef struct _vms_result { BYTE Result; BYTE Error; } VMS_RESULT; typedef struct _vms_req_info_data : public VMS_REQ_DATA { BYTE Data[1024]; } VMS_REQ_INFO_DATA; typedef struct _vms_res_head { BYTE Dle; BYTE Stx; BYTE Group; BYTE Ctlr; BYTE OpCode; BYTE Curr; BYTE Total; DWORD Length; } VMS_RES_HEAD; //도형식 VMS 상태 typedef struct _vms_status { BYTE DOOR; // Door Open/Close 상태 0x00 : Open, 0x01 : Close, 0x09 : Unknown BYTE POWER; // 전원의 ON/OFF 상태 0x00 : On, 0x01 : Off (Sign Board) BYTE FAN; // VMS Fan 동작상태 0x00 : On, 0x01 : Off, 0x09: Unknown // 함체 Fan 동작상태 0x00 : On, 0x10 : Off, 0x90: Unknown BYTE HEATER; // VMS Heater 동작상태 0x00 : On, 0x01 : Off, 0x09: Unknown // 함체 Heater 동작상태 0x00 : On, 0x10 : Off, 0x90: Unknown WORD FORM_NO; // 표출 폼 번호 0x00 : 통신 폼, 0x01 : 디폴트 폼 BYTE REBOOT_YN; // 재실행 여부 0x00 : 정상, 0x01 : 재실행 char CBOX_TEMP; // 함체온도 127 ~ -127 -128 : Unknown BYTE BRIGHT[4]; // 화면의 밝기 최대를 100으로 했을 때의 백분율 값 및 기준휘도 // 0: 현재 휘도(00:주간,01:야간,02:자동) // 1: 야간휘도설정값 // 2: 주간휘도설정값 // 3: 현재휘도값(이건 나의 추측) char DP_TEMP; // 표출부온도 127 ~ -127 -128 : Unknown BYTE DP_HUM; // 표출부습도 0~100%, 포항UTIS부터 추가함 } VMS_STATUS; //문자식 VMS 상태 // Door상태정보 없음, 도형식과 OnOff값이 반대 typedef struct _vms_txt_status { BYTE MSG_LIB_ERR : 1; // Message Library Checksum Error BYTE FAN : 1; // VMS Fan on/off (off=0, on=1) BYTE HEATER : 1; // VMS heater on/off (off=0, on=1) BYTE POWER : 1; // Sign board power on/off command status (off=0, on=1) BYTE POWER_FAIL : 1; // Sign board power failure BYTE BLANK : 1; // 공백문안이 표출될 경우 Set BYTE HAN_FAN : 1; // 함체 Fan on/off (off=0, on=1) BYTE HAM_HEATER : 1; // 함체 heater on/off (off=0, on=1) BYTE LOCAL_MODE : 1; // Local mode Active BYTE DEFAULT_PARA : 1; // Default Parameter BYTE RESET : 1; // Reset Occurred BYTE LONG_POWER_FAIL : 1; // Long Power Failure BYTE SHORT_POWER_FAIL : 1; // Short Power Failure BYTE DOOR : 1; // Door Ajar(0:close, 1: open)--> 화면테스트에서 확인 BYTE MODL_FAIL_RATE : 1; // Module Failure Rate Exceded BYTE MEM_ERR : 1; // RAM/ROM Error BYTE VMS_TEMP; // VMS온도 BYTE CBOX_TEMP; // 함체온도 } VMS_TXT_STATUS; #define MAX_TXT_MODL_ROWS 3 #define MAX_TXT_MODL_COLS 12 typedef struct _vms_txt_modl_status { BYTE Modl[MAX_TXT_MODL_ROWS][MAX_TXT_MODL_COLS]; } VMS_TXT_MODL_STATUE; //도형식 VMS 파라미터응답 typedef struct _vms_parameter { BYTE PowerCtrlMode; // 전원제어 모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, BYTE FanRunMode; // Fan 동작모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, 0x02 : 자동, 0x09: Unknown BYTE FanRunTemp; // Fan의 동작개시온도 1 Byte 온도( 0x00 ~0x03f ) BYTE HeaterRunMode; // Heater의 동작모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, 0x02 : 자동, 0x09: Unknown BYTE HeaterRunTemp; // Heater 의 동작개시온도 1 Byte 온도(0x00 ~ 0x3f ) BYTE BrightMode; // 밝기 모드 2 Byte 0x0 : 수동, 0x1 : 자동, 비율 : 0-100 BYTE BrightRate; // 밝기 모드 2 Byte 0x0 : 수동, 0x1 : 자동, 비율 : 0-100 BYTE BlinkTime; // 깜빡이는 시간주기 1 Byte 문자 비트맵의 깜빡이는 시간주기 0x00 ~ 0x1e( 0.1 ~3.0 ) WORD ScnTurnTime; // 디폴트 시나리오로 전환시간 2 Byte 디폴트 시나리오로 전환될 때까지 기다리는 시간, 단위 : 초 BYTE Reserved; // 기타 1 Byte //현재 로컬 제어기의 시간 BYTE Year; // 년 1 Byte 0x00 ~ 0x32 BYTE Mon; // 월 1 Byte 0x01 ~ 0x0c BYTE Day; // 일 1 Byte 0x01 ~ 0x1f BYTE Hour; // 시 1 Byte 0x00 ~ 0x17 BYTE Min; // 분 1 Byte 0x00 ~ 0x3b BYTE Sec; // 초 1 Byte 0x00 ~ 0x3b } VMS_PARAMETER; //문자식 VMS 설정온도요청응답 typedef struct _vms_txt_parameter { BYTE FanRunTemp; // Fan의 동작개시온도 1 Byte 온도( 0x00 ~0x03f ) BYTE HeaterRunTemp; // Heater 의 동작개시온도 1 Byte 온도(0x00 ~ 0x3f ) } VMS_TXT_PARAMETER; // VMS Status Control #if 0 0x01 전광판 전원제어 0x00:꺼짐, 0x01:켜짐, 1Byte 0x02 제어기 리셋트 - 1Byte 0x03 통신 재시도 횟수 0x01 ~ 0x09 1Byte(초기값 0x03:3회) 0x04 제어기 시간설정 "YYYYMMDDHHNNSS" 14Bytes(String) 0x05 점멸시간 주기 1/10초 단위 1Byte 0x06 밝기제어 0x00:주간, 0x01:야간, 0x02:Auto 2Byte(제어값+밝기) (밝기:수동 0~100,자동 0) 0x07 Fan 제어 고정값 0xFF 고정값 0xFF 0x08 Heater 제어 고정값 0xFF 고정값 0xFF 0x09 화면 배색 제어 0x01:Red, 0x02:Green, 0x03:Amber 1Byte(제어값) 0x0A 장애모듈비율 - 에러난 픽셀의 백분율 : 0~100 0x0B 디폴트 시나리오 동작시간 초 단위 2Byte, default value : 300초 ※ 제어코드(0x01 ~ 0x0A)의 Default 제어값은 기존시스템 초기설정값을 기준으로 한다 ● 전광판 전원 제어 명령 중 꺼짐 명령을 받으면 표지판은 꺼짐. 이후 켜짐 명령이 있을 때까지는 어떤 명령도 무시한다. ● 숫자 0은 0x00 이며, 문자 ‘0‘은 0x30이다. ● 제어기 시간 셋트에서 데이터는 문자열로 구성 (예) : 2004년 3월 25일 15시 30분 45초 일때??20040325153045?? ● 밝기 제어 주간, 야간, 자동으로 구분하여 운영 모드를 지정할 수 있으며, 동시에 밝기를 지정할 수 있다. 주간 조도 default value(90), 야간 모드 default value(65) ● 장애모듈비율 : 한개의 모듈을 장애로 처리하기 위한 장애 PIXEL 백분율 값. Default 값은 10% #endif /* ***************************************************************************** * 팬 동작 모드 ****************************************************************************/ typedef enum _e_fan_run_mode { e_fan_run_off = 0x00, // 꺼짐, 0x00 e_fan_run_on = 0x01, // 켜짐, 0x01 e_fan_run_auto = 0x02, // 자동, 0x02 e_fan_run_manual = 0x03, // 수동, 0x03 } e_fan_run_mode; /* ***************************************************************************** * 하드웨어 작동 상태 ****************************************************************************/ typedef enum _e_status_onoff { e_status_on = 0x00, // 켜짐, 0x00 e_status_off = 0x01, // 꺼짐, 0x01 } e_status_onoff; // 도어 상태 typedef enum _e_door_status { e_door_open = 0x00, // 열림, 0x00 e_door_close = 0x01, // 닫힘, 0x01 } e_door_status; // 팬 상태 typedef enum _e_fan_status { e_fan_run = 0x00, // 열림, 0x00 e_fan_stop = 0x01, // 닫힘, 0x01 } e_fan_status; // 히터 상태 typedef enum _e_heater_status { e_heater_run = 0x00, // 열림, 0x00 e_heater_stop = 0x01, // 닫힘, 0x01 } e_heater_status; /* ***************************************************************************** * VMS Form define ****************************************************************************/ // 폼 배경 색상 typedef enum _e_bg_rgb { e_bg_black = 0x00, // 검정색 0x00 e_bg_red = 0x01, // 적색 0x01 e_bg_green = 0x02, // 녹색 0x02 e_bg_yellow = 0x03, // 황색 0x03 } e_bg_rgb; // 오브젝트 종류 typedef enum _e_obj_type { e_obj_text = 0x00, //문자열 0x00 e_obj_bitmap = 0x01, //Bitmap 0x01 e_obj_bitmapid = 0x02, //Bitmap ID 0x02 e_obj_avi = 0x03, //동영상 0x03 동영상 *.AVI (XVID) e_obj_stream = 0x04, //스트리밍 영상 0x04 } e_obj_type; // 그래픽 데이터 형식 typedef enum _e_img_type { e_img_bitmap = 0x00, // Window Bitmap e_img_gif = 0x01, // GIF e_img_jpg = 0x02, // JPG e_img_pcx = 0x03, // PCX } e_img_type; // 폼 표출유형 typedef enum _e_form_display_type { e_static_normal = 0x00, // 즉시 표출 e_shift_up = 0x01, // 기존 화면 위에 다음 화면을 겹쳐서 위 방향으로 다음 화면만 밀면서 표출 e_shift_down = 0x02, // 기존 화면 위에 다음 화면을 겹쳐서 아래 방향으로 다음 화면만 밀면서 표출 e_shift_left = 0x03, // 기존 화면 위에 다음 화면을 겹쳐서 왼쪽 방향으로 다음 화면만 밀면서 표출 e_shift_right = 0x04, // 기존 화면 위에 다음 화면을 겹쳐서 오른쪽 방향으로 다음 화면만 밀면서 표출 e_scroll_up = 0x05, // 기존 화면과 다음 화면을 위 방향으로 밀면서 표출 e_scroll_down = 0x06, // 기존 화면과 다음 화면을 아래 방향으로 밀면서 표출 e_scroll_left = 0x07, // 기존 화면과 다음 화면을 왼쪽 방향으로 밀면서 표출 e_scroll_right = 0x08, // 기존 화면과 다음 화면을 오른쪽 방향으로 밀면서 표출 e_wipe_up = 0x09, // 기존 화면을 위 방향으로 지우면서 다음 화면을 표출 e_wipe_down = 0x0A, // 기존 화면을 아래 방향으로 지우면서 다음 화면을 표출 e_wipe_left = 0x0B, // 기존 화면을 왼쪽 방향으로 지우면서 다음 화면을 표출 e_wipe_right = 0x0C, // 기존 화면을 오른쪽 방향으로 지우면서 다음 화면을 표출 e_curtain_v_in = 0x0D, // 수직으로 나누어 중앙을 향해 안쪽으로 표출 e_curtain_v_out = 0x0E, // 수직으로 나누어 중앙에서 바깥쪽을 향해 표출 e_urtain_h_in = 0x0F, // 수평으로 나누어 중앙을 향해 안쪽으로 표출 e_curtain_h_out = 0x10, // 수평으로 나누어 중앙에서 바깥쪽을 향해 표출 e_trace_right = 0x11, // 한 글자 크기에 대한 한 Line씩 오른쪽으로 표출 e_trace_left = 0x12, // 한 글자 크기에 대한 한 Line씩 왼쪽으로 표출 e_blind_up = 0x13, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 위 방향으로 표출 e_blind_down = 0x14, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 아래 방향으로 표출 e_blind_left = 0x15, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 왼쪽 방향으로 표출 e_blind_right = 0x16, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 오른쪽 방향으로 표출 e_blinking = 0x17, // 표출화면(폼 전체 깜박임 } e_form_display_type; typedef struct _vms_form_head { WORD FORM_ID; // 폼 ID, 'FID0000'과 'FID9999'를 제외한 일련번호 WORD FORM_CNT; // 전체 폼의 수 } VMS_FORM_HEAD; typedef struct _vms_form_data_head { WORD FORM_SEQ; // 폼 표출 일련번호, 2Byte BYTE DISPLAY_TIME; // 폼의 표출시간을 지정, 1Byte( 0x00 이면 계속 표출 ) BYTE DISPLAY_TYPE; // 폼의 표출유형을 지정, 1Byte BYTE BG_RGB; // 폼의 배경색을 지정, 1Byte BYTE OBJ_CNT; // 표출할 오브젝트 전체 수, 1Byte } VMS_FORM_DATA_HEAD; typedef struct _vms_form_obj_head { BYTE OBJ_TYPE; // 오브젝트 종류 WORD OBJ_SIZE; // 오브젝트 데이터 크기 BYTE FLASH; // 점멸여부, 1Byte(0x00 : 고정, 0x01 : 점멸) WORD X; // 좌표 X WORD Y; // 좌표 Y BYTE TEXT_BG_RGB; // 문자열 배경색을 지정 } VMS_FORM_OBJ_HEAD; // ▷ 비트맵 데이터 (표출할 비트맵 데이터) // 표시하고자 하는 비트맵 데이터로서 파일형식은󰡒BMP"를 기준으로 하고 색상은 16Color를 기본으로 하며 16Color 이상도 사용할 수 있다.다. typedef struct _vms_obj_bitmap { WORD WIDTH; // 비트맵 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width WORD HEIGHT; // 비트맵 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width BYTE IMG_TYPE; // e_img_type BYTE ETC; // 기타 } VMS_OBJ_BITMAP; typedef struct _vms_obj_bitmapid { WORD WIDTH; // 비트맵 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width WORD HEIGHT; // 비트맵 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width BYTE IMG_TYPE; // e_img_type WORD BITMAP_ID; // 표출할 비트맵 ID, 2 Byte, 0~ 9999 : 표출할 비트맵 ID } VMS_OBJ_BITMAPID; typedef struct _vms_form_data { VMS_FORM_HEAD head; VMS_FORM_DATA_HEAD data; VMS_FORM_OBJ_HEAD obj; VMS_OBJ_BITMAP bitmap; } VMS_FORM_DATA; typedef struct _vms_schedule_form_info { WORD FormNo; BYTE DispSec; } VMS_SCHEDULE_FORM_INFO; typedef struct _vms_schedule_form { VMS_SCHEDULE_FORM_INFO Form[MAX_VMS_SCENARIO_FORM]; } VMS_SCHEDULE_FORM; // 내부적으로 사용할 구조체 typedef struct _vms_file_download { AnsiString VMS_FORM_ID; bool IsDownload; int FormIdx; int BitmapId; WORD FormNo; BYTE DispSec; } VMS_FILE_DOWNLOAD; typedef struct _vms_download_data { bool IsDefault; int MaxSchedule; int DownloadCnt; VMS_FILE_DOWNLOAD Info[MAX_VMS_SCENARIO_FORM]; } VMS_DOWNLOAD_DATA; /* ***************************************************************************** * Download Data 저장위치 상세코드 ****************************************************************************/ typedef enum _e_vms_download_loc { e_download_file = 0, // 파일명에 포함 e_download_prog = 1, // 로컬 프로그램이 속하여 있는 디렉토리에 저장 e_download_porg_root = 2, // 로컬 프로그램이 설치된 루트 디렉토리에 저장 e_download_win = 3, // 윈도우즈 디렉토리에 저장 e_download_win_sys = 4, // 윈도우즈 시스템 디렉토리에 저장 e_download_prog_image = 5, // 로컬 프로그램 이미지 디렉토리에 저장 e_download_prog_default = 6, // 로컬 프로그램 디폴트 폼 디렉토리에 저장 } e_vms_download_loc; typedef struct _vms_file_head { BYTE SAVE_LOC; // Download Data 저장위치 Code, 1 Byte BYTE NAME_SIZE; // 파일명 길이, 1 Byte, 1~ 255 DWORD SIZE; // 저장하여야 할 데이터의 크기, 4 Byte // 파일명, N byte // 파일Data, N byte } VMS_FILE_HEAD; typedef struct _vms_file_data { VMS_FILE_HEAD head; } VMS_FILE_DATA; //VMS_FORM_HEAD head; typedef struct _vms_form_id_info { VMS_FORM_DATA_HEAD data; VMS_FORM_OBJ_HEAD obj; VMS_OBJ_BITMAPID bid; } VMS_FORM_ID_INFO; typedef struct _vms_form_id_data { VMS_FORM_ID_INFO INFO[MAX_VMS_SCENARIO_FORM]; } VMS_FORM_ID_DATA; #define MAX_TXT_FULL_RGB_BIT 9216 typedef struct _vms_full_graphic_lib { BYTE Phase; // 0x00(1phase), 0x01(2phase) BYTE DispFunc; // 0x07(static) BYTE DispDir; // 0x00(drop down) WORD MsgNmbr; BYTE R_Data1[MAX_TXT_FULL_RGB_BIT]; BYTE G_Data1[MAX_TXT_FULL_RGB_BIT]; #if 0 BYTE R_Data2[MAX_TXT_FULL_RGB_BIT]; BYTE G_Data2[MAX_TXT_FULL_RGB_BIT]; #endif } VMS_FULL_GRAPHIC_LIB; //--------------------------------------------------------------------------- #pragma pack(pop) //--------------------------------------------------------------------------- #endif