123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630 |
- //---------------------------------------------------------------------------
- #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
|