PacketHandllingF.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
  1. //---------------------------------------------------------------------------
  2. #ifndef PacketHandllingFH
  3. #define PacketHandllingFH
  4. //---------------------------------------------------------------------------
  5. #include "VmsProtocolF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma pack(push, 1)
  8. //---------------------------------------------------------------------------
  9. /*
  10. *****************************************************************************
  11. * 프로토콜 수신 OP Code
  12. ****************************************************************************/
  13. #if 0
  14. // 도로공상 문자식 VMS 프로토콜
  15. //상태정보
  16. e_txt_status_req = 0x18, // Status Request Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40]
  17. e_txt_status_res = 0x40, // Status Response Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40]
  18. //모듈정보
  19. e_txt_failed_elem_data_req = 0x1A, // Failed Element Data Request Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42]
  20. e_txt_failed_elem_data_res = 0x42, // Failed Element Data Response Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42]
  21. //폼표출
  22. e_txt_download_full_graphic_lib = 0x0A, // Download Graphics Library Opcode = 10 [0x0A] ⇔ Opcode = 72 [0x48]
  23. e_txt_display_schedule_msg = 0x0E, // Display Schedule Message Opcode = 14 [0x0E] ⇔ Opcode = 72 [0x48]
  24. e_txt_blank = 0x16, // Blank Opcode = 22 [0x16] ⇔ Opcode = 72 [0x48]
  25. // 도로공사 도형식 VMS 프로토콜
  26. 1. 0x88 VMS Status 요구, 응답
  27. 2. 0x8C 전원 모듈 상태 요구, 응답
  28. 3. 0x8E 표출 모듈 상태 요구, 응답
  29. 4. VMS 메시지 표출
  30. 4.1 0x80 폼 데이터 표출, ACK/NAK
  31. 4.2 0x96 Display Schedule Form, ACK/NAK
  32. 4.3 0x9E Blank, ACK/NAK
  33. // 도형식.......
  34. //e_vms_download_form = 0x9A,// Download Form 송신 Form download 센터 → VMS
  35. //e_vms_file_download = 0x82,// 데이터 다운로드 송신 INI, CFG , Bitmap , Data파일송신 센터 → VMS
  36. //e_vms_download_schedule_form = 0x96,// Display Schedule Form 송신 계획된 Form 표출 요구 센터 → VMS
  37. //e_vms_blank = 0x9E,// Blank 송신 schedule 표출 센터 → VMS
  38. //e_vms_status = 0x88,// VMS Status 요구 송신 VMS 상태정보 요구 송신 센터 → VMS
  39. //e_vms_power_module_status = 0x8C,// 전원 모듈 상태 요구 송신 전원 모듈 상태를 검사 결과를 요청한다 센터 → VMS
  40. //e_vms_display_module_status = 0x8E,// 표출 모듈 상태 요구 송신 표출 모듈 상태를 검사 결과를 요청한다 센터 → VMS
  41. //e_vms_parameter = 0x8A,// VMS 파라미터 요구 송신 VMS 로컬 상태 요구 송신 센터 → VMS
  42. #endif
  43. typedef enum _e_vms_protocol
  44. {
  45. e_vms_MIN = 0x00,
  46. // 문자식 OpCode
  47. e_txt_disp_immediate_text = 0x02, // Display Immediate Text Opcode = 2 [0x02] ⇔ Opcode = 72 [0x48]
  48. e_txt_disp_immediate_graphic = 0x04, // Display Immediate graphics Opcode = 4 [0x04] ⇔ Opcode = 72 [0x48]
  49. e_txt_disp_lib_message = 0x06, // Display Library Message Opcode = 6 [0x06] ⇔ Opcode = 72 [0x48]
  50. e_txt_download_message_lib = 0x08, // Download A Message Library Opcode = 8 [0x08] ⇔ Opcode = 72 [0x48]
  51. e_txt_download_full_graphic_lib = 0x0A, // Download Graphics Library Opcode = 10 [0x0A] ⇔ Opcode = 72 [0x48]
  52. e_txt_download_graphic_symb_lib = 0x0C, // Download Graphic Symbol Library Opcode = 12 [0x0C] ⇔ Opcode = 72 [0x48]
  53. e_txt_display_schedule_msg = 0x0E, // Display Schedule Message Opcode = 14 [0x0E] ⇔ Opcode = 72 [0x48]
  54. e_txt_initialize = 0x12, // Initailize Opcode = 18 [0x12] ⇔ Opcode = 72 [0x48]
  55. e_txt_disp_test_pattern = 0x14, // Display Test Pattern Opcode = 20 [0x14] ⇔ Opcode = 72 [0x48]
  56. e_txt_blank = 0x16, // Blank Opcode = 22 [0x16] ⇔ Opcode = 72 [0x48]
  57. e_txt_download_parameter = 0x1C, // Download Parameter Opcode = 28 [0x1C] ⇔ Opcode = 72 [0x48]
  58. e_txt_display_default_msg = 0x1E, // Display Default Message Opcode = 30 [0x1E] ⇔ Opcode = 72 [0x48]
  59. e_txt_set_luminance_level = 0x20, // Set Luminance Level Opcode = 32 [0x20] ⇔ Opcode = 72 [0x48]
  60. e_txt_signboard_control = 0x24, // Signboard Power Control Opcode = 36 [0x24] ⇔ Opcode = 72 [0x48]
  61. e_txt_signboard_alarm_control = 0x2A, // Signboard Alarm Control Opcode = 42 [0x2A] ⇔ Opcode = 72 [0x48]
  62. e_txt_pan_hetr_temp_control = 0x31, // 함체 PAN/HEATER 온도 설정 Opcode = 49 [0x31] ⇔ Opcode = 72 [0x48]
  63. e_txt_status_req = 0x18, // Status Request Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40]
  64. e_txt_status_res = 0x40, // Status Response Opcode = 24 [0x18] ⇔ Opcode = 64 [0x40]
  65. e_txt_upload_modl_status_req = 0x28, // Upload Module Status Opcode = 40 [0x28] ⇔ Opcode = 74 [0x4A]
  66. e_txt_upload_modl_status_res = 0x4A, // Upload Module Status Opcode = 40 [0x28] ⇔ Opcode = 74 [0x4A]
  67. e_txt_pan_hetr_temp_req = 0x32, // 함체 PAN/HEATER 온도 요청 Opcode = 50 [0x32] ⇔ Opcode = 66 [0x42]
  68. e_txt_pan_hetr_temp_res = 0x42, // 함체 PAN/HEATER 온도 요청 Opcode = 50 [0x32] ⇔ Opcode = 66 [0x42]
  69. e_txt_failed_elem_data_req = 0x1A, // Failed Element Data Request Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42]
  70. e_txt_failed_elem_data_res = 0x42, // Failed Element Data Response Opcode = 26 [0x1A] ⇔ Opcode = 66 [0x42]
  71. e_txt_upload_msg_req = 0x22, // Upload A Message Opcode = 34 [0x22] ⇔ Opcode = 68 [0x44]
  72. e_txt_upload_msg_res = 0x44, // Upload A Message Response Opcode = 34 [0x22] ⇔ Opcode = 68 [0x44]
  73. e_txt_upload_schedule_msg_req = 0x23, // Upload Schedule Message Opcode = 35 [0x23] ⇔ Opcode = 69 [0x45]
  74. e_txt_upload_schedule_msg_res = 0x45, // Upload Schedule Message Opcode = 35 [0x23] ⇔ Opcode = 69 [0x45]
  75. e_txt_msg_echo_back_req = 0x26, // Message Echo Back Opcode = 38 [0x26] ⇔ Opcode = 70 [0x46]
  76. e_txt_msg_echo_back_res = 0x46, // Message Echo Back Opcode = 38 [0x26] ⇔ Opcode = 70 [0x46]
  77. e_txt_image_req = 0x2C, // 영상이미지 요청 Status Opcode = 44 [0x2C] ⇔ Opcode = 76 [0x4C]
  78. e_txt_image_res = 0x4C, // 영상이미지 요청 Status Opcode = 44 [0x2C] ⇔ Opcode = 76 [0x4C]
  79. e_txt_ftp_download = 0x2C, // 동영상 파일 FTP 다운로드 Opcode = 44 [0x2C] ⇔ Opcode = 72 [0x48]
  80. e_txt_ftp_download_completed = 0x2E, // 동영상 파일 FTP 다운로드 완료 Opcode = 46 [0x2E]
  81. e_txt_response = 0x48, // 제어기 응답(ACK/NAK)
  82. // 도형식 OpCode
  83. e_vms_form_display = 0x80, // 폼 데이터 표출 송신 표출할 폼 데이터 송신 센터 → VMS
  84. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  85. e_vms_file_download = 0x82, // 데이터 다운로드 송신 INI, CFG , Bitmap , Data파일송신 센터 → VMS
  86. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  87. // 사용하지 않음
  88. e_vms_data_upload = 0x84, // 데이터 업로드 송신 INI, CFG , Bitmap , Data파일 업로드 요구 센터 → VMS
  89. // 수신 업로드 데이터 전송 센터 ← VMS
  90. e_vms_status_control = 0x86, // VMS 상태제어 송신 VMS 제어정보 송신 센터 → VMS
  91. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  92. e_vms_status = 0x88, // VMS Status 요구 송신 VMS 상태정보 요구 송신 센터 → VMS
  93. // 수신 상태 데이터 응답 센터 ← VMS
  94. e_vms_parameter = 0x8A, // VMS 파라미터 요구 송신 VMS 로컬 상태 요구 송신 센터 → VMS
  95. // 수신 로컬 상태 데이터 응답 센터 ← VMS
  96. e_vms_power_module_status = 0x8C, // 전원 모듈 상태 요구 송신 전원 모듈 상태를 검사 결과를 요청한다 센터 → VMS
  97. // 수신 전원 모듈 상태 데이터 응답 센터 ← VMS
  98. e_vms_display_module_status = 0x8E, // 표출 모듈 상태 요구 송신 표출 모듈 상태를 검사 결과를 요청한다 센터 → VMS
  99. // 수신 표출 모듈 상태 데이터 응답 센터 ← VMS
  100. // 픽셀이미지 요구는 제어기에서 응답을 하지 않음
  101. // 사용하지 않음
  102. e_vms_pixel_image = 0x92, // VMS Pixel Image 요구 송신 VMS LED Pixel 상태요구 송신 센터 → VMS
  103. // 수신 현재표출중인 LED 상태 Pixel 송신 센터 ← VMS
  104. // 사용하지 않음
  105. e_vms_current_display_form = 0x94, // 현재표출폼 Upload 송신 Local에서 표출 중인 폼 Upload요구 센터 → VMS
  106. // 수신 현재표출중인 전체폼 송신 센터 ← VMS
  107. e_vms_download_schedule_form = 0x96, // Display Schedule Form 송신 계획된 Form 표출 요구 센터 → VMS
  108. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  109. e_vms_display_default_form = 0x98, // Display Default Form 송신 디폴트 From표출 요구 센터 → VMS
  110. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  111. e_vms_download_form = 0x9A, // Download Form 송신 Form download 센터 → VMS
  112. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  113. // 사용하지 않음
  114. e_vms_upload_schedule_form = 0x9C, // Upload Schedule Form 송신 스케줄 메시지 업로드 요구 센터 → VMS
  115. // 수신 스케줄 메세지 전송 센터 ← VMS
  116. e_vms_blank = 0x9E, // Blank 송신 schedule 표출 센터 → VMS
  117. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  118. // 제어기에서 반응 없음
  119. // 사용하지 않음
  120. e_vms_display_form_id = 0xA0, // Display Form ID 송신 Form ID에 해당하는 Form 표출 센터 → VMS
  121. // 수신 수신 여부 응답( ACK/NAK ) 센터 ← VMS
  122. // TODO: 202411219
  123. e_vms_video_ftp_download_req = 0xA1, // 동영상 파일 FTP 다운로드 요청 센터 → VMS
  124. e_vms_video_ftp_download_completed = 0xA2, // 동영상 파일 FTP 다운로드 완료 센터 ← VMS
  125. e_vms_MAX = 0xFF+1,
  126. } E_VMS_PROTOCOL;
  127. /*
  128. *****************************************************************************
  129. * VMS Form File Type
  130. ****************************************************************************/
  131. #define P_FILE_TYPE_IMAGE 0x01
  132. #define P_FILE_TYPE_VIDEO 0x02
  133. #define P_FILE_TYPE_STREAM 0x03
  134. #define P_FILE_TYPE_TRAFFIC 0x04
  135. #define P_FILE_TYPE_TEXT 0x05
  136. /*
  137. *****************************************************************************
  138. * VMS System define
  139. ****************************************************************************/
  140. #define MAX_VMS_SCENARIO_FORM 10
  141. #define PICTURE_BASE_FORMID 9000
  142. #define TEXT_BASE_FORMID 9000
  143. #define DEFAULT_FORMID 0
  144. /*
  145. *****************************************************************************
  146. * 프로토콜 OP 코드 정의
  147. ****************************************************************************/
  148. #define VMS_DLE 0x10 // DLE
  149. #define VMS_STX 0x02 // Start of TeXt
  150. #define VMS_ETX 0x03 // End of TeXt
  151. #define VMS_ACK 0x06
  152. #define VMS_NAK 0x15
  153. #define VMS_NULL 0x00
  154. typedef struct _vms_head
  155. {
  156. _vms_head()
  157. {
  158. Dle = VMS_DLE;
  159. Stx = VMS_STX;
  160. }
  161. BYTE Dle;
  162. BYTE Stx;
  163. BYTE Group;
  164. BYTE Ctlr;
  165. BYTE OpCode;
  166. BYTE Curr;
  167. BYTE Total;
  168. DWORD Length;
  169. } VMS_HEAD;
  170. typedef struct _vms_tail
  171. {
  172. _vms_tail()
  173. {
  174. Dle = VMS_DLE;
  175. Etx = VMS_ETX;
  176. }
  177. BYTE Dle;
  178. BYTE Etx;
  179. WORD Crc;
  180. } VMS_TAIL;
  181. typedef struct _vms_req_data
  182. {
  183. _vms_req_data()
  184. {
  185. Group = 0;
  186. Ctlr = 0;
  187. OpCode = VMS_NULL;
  188. Curr = 1;
  189. Total = 1;
  190. Length = 0;
  191. }
  192. BYTE Group;
  193. BYTE Ctlr;
  194. BYTE OpCode;
  195. BYTE Curr;
  196. BYTE Total;
  197. DWORD Length;
  198. } VMS_REQ_DATA;
  199. typedef struct _vms_result
  200. {
  201. BYTE Result;
  202. BYTE Error;
  203. } VMS_RESULT;
  204. typedef struct _vms_req_info_data : public VMS_REQ_DATA
  205. {
  206. BYTE Data[1024];
  207. } VMS_REQ_INFO_DATA;
  208. typedef struct _vms_res_head
  209. {
  210. BYTE Dle;
  211. BYTE Stx;
  212. BYTE Group;
  213. BYTE Ctlr;
  214. BYTE OpCode;
  215. BYTE Curr;
  216. BYTE Total;
  217. DWORD Length;
  218. } VMS_RES_HEAD;
  219. //도형식 VMS 상태
  220. typedef struct _vms_status
  221. {
  222. BYTE DOOR; // Door Open/Close 상태 0x00 : Open, 0x01 : Close, 0x09 : Unknown
  223. BYTE POWER; // 전원의 ON/OFF 상태 0x00 : On, 0x01 : Off (Sign Board)
  224. BYTE FAN; // VMS Fan 동작상태 0x00 : On, 0x01 : Off, 0x09: Unknown
  225. // 함체 Fan 동작상태 0x00 : On, 0x10 : Off, 0x90: Unknown
  226. BYTE HEATER; // VMS Heater 동작상태 0x00 : On, 0x01 : Off, 0x09: Unknown
  227. // 함체 Heater 동작상태 x00 : On, 0x10 : Off, 0x90: Unknown
  228. WORD FORM_NO; // 표출 폼 번호 0x00 : 통신 폼, 0x01 : 디폴트 폼
  229. BYTE REBOOT_YN; // 재실행 여부 0x00 : 정상, 0x01 : 재실행
  230. char CBOX_TEMP; // 함체온도 127 ~ -127 -128 : Unknown
  231. BYTE BRIGHT[4]; // 화면의 밝기 최대를 100으로 했을 때의 백분율 값 및 기준휘도
  232. // 0: 현재 휘도(00:주간,01:야간,02:자동)
  233. // 1: 야간휘도설정값
  234. // 2: 주간휘도설정값
  235. // 3: 현재휘도값(이건 나의 추측)
  236. char DP_TEMP; // 표출부온도 127 ~ -127 -128 : Unknown
  237. BYTE DP_HUM; // 표출부습도 0~100%, 포항UTIS부터 추가함
  238. } VMS_STATUS;
  239. //문자식 VMS 상태
  240. // Door상태정보 없음, 도형식과 OnOff값이 반대
  241. typedef struct _vms_txt_status
  242. {
  243. BYTE MSG_LIB_ERR : 1; // Message Library Checksum Error
  244. BYTE FAN : 1; // VMS Fan on/off (off=0, on=1)
  245. BYTE HEATER : 1; // VMS heater on/off (off=0, on=1)
  246. BYTE POWER : 1; // Sign board power on/off command status (off=0, on=1)
  247. BYTE POWER_FAIL : 1; // Sign board power failure
  248. BYTE BLANK : 1; // 공백문안이 표출될 경우 Set
  249. BYTE HAN_FAN : 1; // 함체 Fan on/off (off=0, on=1)
  250. BYTE HAM_HEATER : 1; // 함체 heater on/off (off=0, on=1)
  251. BYTE LOCAL_MODE : 1; // Local mode Active
  252. BYTE DEFAULT_PARA : 1; // Default Parameter
  253. BYTE RESET : 1; // Reset Occurred
  254. BYTE LONG_POWER_FAIL : 1; // Long Power Failure
  255. BYTE SHORT_POWER_FAIL : 1; // Short Power Failure
  256. BYTE DOOR : 1; // Door Ajar(0:close, 1: open)--> 화면테스트에서 확인
  257. BYTE MODL_FAIL_RATE : 1; // Module Failure Rate Exceded
  258. BYTE MEM_ERR : 1; // RAM/ROM Error
  259. BYTE VMS_TEMP; // VMS온도
  260. BYTE CBOX_TEMP; // 함체온도
  261. } VMS_TXT_STATUS;
  262. #define MAX_TXT_MODL_ROWS 3
  263. #define MAX_TXT_MODL_COLS 12
  264. typedef struct _vms_txt_modl_status
  265. {
  266. BYTE Modl[MAX_TXT_MODL_ROWS][MAX_TXT_MODL_COLS];
  267. } VMS_TXT_MODL_STATUE;
  268. //도형식 VMS 파라미터응답
  269. typedef struct _vms_parameter
  270. {
  271. BYTE PowerCtrlMode; // 전원제어 모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐,
  272. BYTE FanRunMode; // Fan 동작모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, 0x02 : 자동, 0x09: Unknown
  273. BYTE FanRunTemp; // Fan의 동작개시온도 1 Byte 온도( 0x00 ~0x03f )
  274. BYTE HeaterRunMode; // Heater의 동작모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, 0x02 : 자동, 0x09: Unknown
  275. BYTE HeaterRunTemp; // Heater 의 동작개시온도 1 Byte 온도(0x00 ~ 0x3f )
  276. BYTE BrightMode; // 밝기 모드 2 Byte 0x0 : 수동, 0x1 : 자동, 비율 : 0-100
  277. BYTE BrightRate; // 현재 밝기 비율 : 0-100
  278. BYTE BlinkTime; // 깜빡이는 시간주기 1 Byte 문자 비트맵의 깜빡이는 시간주기 0x00 ~ 0x1e( 0.1 ~3.0 )
  279. WORD ScnTurnTime; // 디폴트 시나리오로 전환시간 2 Byte 디폴트 시나리오로 전환될 때까지 기다리는 시간, 단위 : 초
  280. BYTE Reserved; // 기타 1 Byte
  281. //현재 로컬 제어기의 시간
  282. BYTE Year; // 년 1 Byte 0x00 ~ 0x32 (현재년도 - 2000)
  283. BYTE Mon; // 월 1 Byte 0x01 ~ 0x0c
  284. BYTE Day; // 일 1 Byte 0x01 ~ 0x1f
  285. BYTE Hour; // 시 1 Byte 0x00 ~ 0x17
  286. BYTE Min; // 분 1 Byte 0x00 ~ 0x3b
  287. BYTE Sec; // 초 1 Byte 0x00 ~ 0x3b
  288. } VMS_PARAMETER;
  289. //문자식 VMS 설정온도요청응답
  290. typedef struct _vms_txt_parameter
  291. {
  292. BYTE FanRunTemp; // Fan의 동작개시온도 1 Byte 온도( 0x00 ~0x03f )
  293. BYTE HeaterRunTemp; // Heater 의 동작개시온도 1 Byte 온도(0x00 ~ 0x3f )
  294. } VMS_TXT_PARAMETER;
  295. // VMS Status Control
  296. #if 0
  297. 0x01 전광판 전원제어 0x00:꺼짐, 0x01:켜짐, 1Byte
  298. 0x02 제어기 리셋트 - 1Byte
  299. 0x03 통신 재시도 횟수 0x01 ~ 0x09 1Byte(초기값 0x03:3회)
  300. 0x04 제어기 시간설정 "YYYYMMDDHHNNSS" 14Bytes(String)
  301. 0x05 점멸시간 주기 1/10초 단위 1Byte
  302. 0x06 밝기제어 0x00:주간, 0x01:야간, 0x02:Auto 2Byte(제어값+밝기) (밝기:수동 0~100,자동 0)
  303. 0x07 Fan 제어 고정값 0xFF 고정값 0xFF
  304. 0x08 Heater 제어 고정값 0xFF 고정값 0xFF
  305. 0x09 화면 배색 제어 0x01:Red, 0x02:Green, 0x03:Amber 1Byte(제어값)
  306. 0x0A 장애모듈비율 - 에러난 픽셀의 백분율 : 0~100
  307. 0x0B 디폴트 시나리오 동작시간 초 단위 2Byte, default value : 300초
  308. ※ 제어코드(0x01 ~ 0x0A)의 Default 제어값은 기존시스템 초기설정값을 기준으로 한다
  309. ● 전광판 전원 제어 명령 중 꺼짐 명령을 받으면 표지판은 꺼짐. 이후 켜짐 명령이 있을 때까지는 어떤 명령도 무시한다.
  310. ● 숫자 0은 0x00 이며, 문자 ‘0‘은 0x30이다.
  311. ● 제어기 시간 셋트에서 데이터는 문자열로 구성 (예) : 2004년 3월 25일 15시 30분 45초 일때??20040325153045??
  312. ● 밝기 제어
  313. 주간, 야간, 자동으로 구분하여 운영 모드를 지정할 수 있으며, 동시에 밝기를 지정할 수 있다. 주간 조도 default value(90), 야간 모드 default value(65)
  314. ● 장애모듈비율 : 한개의 모듈을 장애로 처리하기 위한 장애 PIXEL 백분율 값.
  315. Default 값은 10%
  316. #endif
  317. /*
  318. *****************************************************************************
  319. * 팬 동작 모드
  320. ****************************************************************************/
  321. typedef enum _e_fan_run_mode
  322. {
  323. e_fan_run_off = 0x00, // 꺼짐, 0x00
  324. e_fan_run_on = 0x01, // 켜짐, 0x01
  325. e_fan_run_auto = 0x02, // 자동, 0x02
  326. e_fan_run_manual = 0x03, // 수동, 0x03
  327. } e_fan_run_mode;
  328. /*
  329. *****************************************************************************
  330. * 하드웨어 작동 상태
  331. ****************************************************************************/
  332. typedef enum _e_status_onoff
  333. {
  334. e_status_on = 0x00, // 켜짐, 0x00
  335. e_status_off = 0x01, // 꺼짐, 0x01
  336. } e_status_onoff;
  337. // 도어 상태
  338. typedef enum _e_door_status
  339. {
  340. e_door_open = 0x00, // 열림, 0x00
  341. e_door_close = 0x01, // 닫힘, 0x01
  342. } e_door_status;
  343. // 팬 상태
  344. typedef enum _e_fan_status
  345. {
  346. e_fan_run = 0x00, // 열림, 0x00
  347. e_fan_stop = 0x01, // 닫힘, 0x01
  348. } e_fan_status;
  349. // 히터 상태
  350. typedef enum _e_heater_status
  351. {
  352. e_heater_run = 0x00, // 열림, 0x00
  353. e_heater_stop = 0x01, // 닫힘, 0x01
  354. } e_heater_status;
  355. /*
  356. *****************************************************************************
  357. * VMS Form define
  358. ****************************************************************************/
  359. // 폼 배경 색상
  360. typedef enum _e_bg_rgb
  361. {
  362. e_bg_black = 0x00, // 검정색 0x00
  363. e_bg_red = 0x01, // 적색 0x01
  364. e_bg_green = 0x02, // 녹색 0x02
  365. e_bg_yellow = 0x03, // 황색 0x03
  366. } e_bg_rgb;
  367. // 오브젝트 종류
  368. typedef enum _e_obj_type
  369. {
  370. e_obj_text = 0x00, //문자열 0x00
  371. e_obj_bitmap = 0x01, //Bitmap 0x01
  372. e_obj_bitmapid = 0x02, //Bitmap ID 0x02
  373. e_obj_video = 0x03, //동영상 0x03 동영상 *.AVI (XVID)
  374. e_obj_stream = 0x04, //스트리밍 영상 0x04
  375. } e_obj_type;
  376. // 그래픽 데이터 형식
  377. typedef enum _e_img_type
  378. {
  379. e_img_bitmap = 0x00, // Window Bitmap
  380. e_img_gif = 0x01, // GIF
  381. e_img_jpg = 0x02, // JPG
  382. e_img_pcx = 0x03, // PCX
  383. } e_img_type;
  384. // 폼 표출유형
  385. typedef enum _e_form_display_type
  386. {
  387. e_static_normal = 0x00, // 즉시 표출
  388. e_shift_up = 0x01, // 기존 화면 위에 다음 화면을 겹쳐서 위 방향으로 다음 화면만 밀면서 표출
  389. e_shift_down = 0x02, // 기존 화면 위에 다음 화면을 겹쳐서 아래 방향으로 다음 화면만 밀면서 표출
  390. e_shift_left = 0x03, // 기존 화면 위에 다음 화면을 겹쳐서 왼쪽 방향으로 다음 화면만 밀면서 표출
  391. e_shift_right = 0x04, // 기존 화면 위에 다음 화면을 겹쳐서 오른쪽 방향으로 다음 화면만 밀면서 표출
  392. e_scroll_up = 0x05, // 기존 화면과 다음 화면을 위 방향으로 밀면서 표출
  393. e_scroll_down = 0x06, // 기존 화면과 다음 화면을 아래 방향으로 밀면서 표출
  394. e_scroll_left = 0x07, // 기존 화면과 다음 화면을 왼쪽 방향으로 밀면서 표출
  395. e_scroll_right = 0x08, // 기존 화면과 다음 화면을 오른쪽 방향으로 밀면서 표출
  396. e_wipe_up = 0x09, // 기존 화면을 위 방향으로 지우면서 다음 화면을 표출
  397. e_wipe_down = 0x0A, // 기존 화면을 아래 방향으로 지우면서 다음 화면을 표출
  398. e_wipe_left = 0x0B, // 기존 화면을 왼쪽 방향으로 지우면서 다음 화면을 표출
  399. e_wipe_right = 0x0C, // 기존 화면을 오른쪽 방향으로 지우면서 다음 화면을 표출
  400. e_curtain_v_in = 0x0D, // 수직으로 나누어 중앙을 향해 안쪽으로 표출
  401. e_curtain_v_out = 0x0E, // 수직으로 나누어 중앙에서 바깥쪽을 향해 표출
  402. e_urtain_h_in = 0x0F, // 수평으로 나누어 중앙을 향해 안쪽으로 표출
  403. e_curtain_h_out = 0x10, // 수평으로 나누어 중앙에서 바깥쪽을 향해 표출
  404. e_trace_right = 0x11, // 한 글자 크기에 대한 한 Line씩 오른쪽으로 표출
  405. e_trace_left = 0x12, // 한 글자 크기에 대한 한 Line씩 왼쪽으로 표출
  406. e_blind_up = 0x13, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 위 방향으로 표출
  407. e_blind_down = 0x14, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 아래 방향으로 표출
  408. e_blind_left = 0x15, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 왼쪽 방향으로 표출
  409. e_blind_right = 0x16, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 오른쪽 방향으로 표출
  410. e_blinking = 0x17, // 표출화면(폼 전체 깜박임
  411. } e_form_display_type;
  412. typedef struct _vms_form_head
  413. {
  414. WORD FORM_ID; // 폼 ID, 'FID0000'과 'FID9999'를 제외한 일련번호
  415. WORD FORM_CNT; // 전체 폼의 수
  416. } VMS_FORM_HEAD;
  417. typedef struct _vms_form_data_head
  418. {
  419. WORD FORM_SEQ; // 폼 표출 일련번호, 2Byte
  420. BYTE DISPLAY_TIME; // 폼의 표출시간을 지정, 1Byte( 0x00 이면 계속 표출 )
  421. BYTE DISPLAY_TYPE; // 폼의 표출유형을 지정, 1Byte
  422. BYTE BG_RGB; // 폼의 배경색을 지정, 1Byte
  423. BYTE OBJ_CNT; // 표출할 오브젝트 전체 수, 1Byte
  424. } VMS_FORM_DATA_HEAD;
  425. typedef struct _vms_form_obj_head
  426. {
  427. BYTE OBJ_TYPE; // 오브젝트 종류
  428. WORD OBJ_SIZE; // 오브젝트 데이터 크기
  429. BYTE FLASH; // 점멸여부, 1Byte(0x00 : 고정, 0x01 : 점멸)
  430. WORD X; // 좌표 X
  431. WORD Y; // 좌표 Y
  432. BYTE TEXT_BG_RGB; // 문자열 배경색을 지정
  433. } VMS_FORM_OBJ_HEAD;
  434. // ▷ 비트맵 데이터 (표출할 비트맵 데이터)
  435. // 표시하고자 하는 비트맵 데이터로서 파일형식은󰡒BMP"를 기준으로 하고 색상은 16Color를 기본으로 하며 16Color 이상도 사용할 수 있다.다.
  436. typedef struct _vms_obj_text
  437. {
  438. BYTE COLOR[3]; // 사용 폰트 색상, Full-Color를 위해 3Byte로 변경함
  439. BYTE SIZE; // 사용 폰트 크기, (별표 참조)
  440. BYTE TYPE; // 사용 폰트 종류 Code, (별표 참조)
  441. BYTE BOLD; // 사용 폰트 굵기, (별표 참조)
  442. BYTE ETC; // 기타
  443. char *DATA; // 표출할 문자열, N Bytes
  444. } VMS_OBJ_TEXT;
  445. typedef struct _vms_obj_bitmap
  446. {
  447. WORD WIDTH; // 비트맵 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  448. WORD HEIGHT; // 비트맵 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  449. BYTE IMG_TYPE; // e_img_type
  450. BYTE ETC; // 기타
  451. } VMS_OBJ_BITMAP;
  452. typedef struct _vms_obj_bitmapid
  453. {
  454. WORD WIDTH; // 비트맵 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  455. WORD HEIGHT; // 비트맵 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  456. BYTE IMG_TYPE; // e_img_type
  457. WORD BITMAP_ID; // 표출할 비트맵 ID, 2 Byte, 0~ 9999 : 표출할 비트맵 ID
  458. } VMS_OBJ_BITMAPID;
  459. typedef struct _vms_obj_video
  460. {
  461. WORD WIDTH; // 동영상 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  462. WORD HEIGHT; // 동영상 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  463. BYTE ETC; // reserved: 0x00
  464. BYTE FILE_NM[50]; // 확장자가 포함된 파일이름(*.avi)
  465. } VMS_OBJ_VIDEO;
  466. typedef struct _vms_obj_stream
  467. {
  468. WORD WIDTH; // 동영상 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  469. WORD HEIGHT; // 동영상 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  470. BYTE ETC; // reserved: 0x00
  471. char STREAM_ADDR[];
  472. } VMS_OBJ_STREAM;
  473. typedef struct _vms_schedule_form_info
  474. {
  475. WORD FormNo;
  476. BYTE DispSec;
  477. } VMS_SCHEDULE_FORM_INFO;
  478. typedef struct _vms_schedule_form
  479. {
  480. VMS_SCHEDULE_FORM_INFO Form[MAX_VMS_SCENARIO_FORM];
  481. } VMS_SCHEDULE_FORM;
  482. // 내부적으로 사용할 구조체
  483. typedef struct _vms_file_download
  484. {
  485. //////////////////////////////////////////////////////////////////////
  486. //// 프로토콜 적용을 위해서
  487. BYTE fileType; // 0x01 : 이미지 (JPG)
  488. // 0x02 : 동영상 (AVI)
  489. // 0x03 : URL(스트리밍)
  490. // 0x04 : 소통 이미지
  491. // 0x05 : 표출문구 이미지
  492. //////////////////////////////////////////////////////////////////////
  493. AnsiString VMS_FORM_ID;
  494. bool IsDownload;
  495. int FormIdx;
  496. int BitmapId;
  497. WORD FormNo;
  498. BYTE DispSec;
  499. AnsiString STRM_ADDR;
  500. } VMS_FILE_DOWNLOAD;
  501. typedef struct _vms_download_data
  502. {
  503. bool IsDefault;
  504. int MaxSchedule;
  505. int DownloadCnt;
  506. VMS_FILE_DOWNLOAD Info[MAX_VMS_SCENARIO_FORM];
  507. } VMS_DOWNLOAD_DATA;
  508. typedef struct _vms_file_ftp_data
  509. {
  510. char FILE_NM[255];
  511. } VMS_FILE_FTP_DATA;
  512. /*
  513. *****************************************************************************
  514. * Download Data 저장위치 상세코드
  515. ****************************************************************************/
  516. typedef enum _e_vms_download_loc
  517. {
  518. e_download_file = 0, // 파일명에 포함
  519. e_download_prog = 1, // 로컬 프로그램이 속하여 있는 디렉토리에 저장
  520. e_download_porg_root = 2, // 로컬 프로그램이 설치된 루트 디렉토리에 저장
  521. e_download_win = 3, // 윈도우즈 디렉토리에 저장
  522. e_download_win_sys = 4, // 윈도우즈 시스템 디렉토리에 저장
  523. e_download_prog_image = 5, // 로컬 프로그램 이미지 디렉토리에 저장
  524. e_download_prog_default = 6, // 로컬 프로그램 디폴트 폼 디렉토리에 저장
  525. } e_vms_download_loc;
  526. typedef struct _vms_file_head
  527. {
  528. BYTE SAVE_LOC; // Download Data 저장위치 Code, 1 Byte
  529. BYTE NAME_SIZE; // 파일명 길이, 1 Byte, 1~ 255
  530. DWORD SIZE; // 저장하여야 할 데이터의 크기, 4 Byte
  531. // 파일명, N byte
  532. // 파일Data, N byte
  533. } VMS_FILE_HEAD;
  534. typedef struct _vms_file_data
  535. {
  536. VMS_FILE_HEAD head;
  537. } VMS_FILE_DATA;
  538. //===== Bitmap ID Object
  539. typedef struct _vms_form_bmpid_info
  540. {
  541. VMS_FORM_DATA_HEAD data;
  542. VMS_FORM_OBJ_HEAD obj;
  543. VMS_OBJ_BITMAPID bmpid;
  544. } VMS_FORM_BMPID_INFO;
  545. typedef struct _vms_form_bmpid_data
  546. {
  547. VMS_FORM_BMPID_INFO INFO;//[MAX_VMS_SCENARIO_FORM];
  548. } VMS_FORM_BMPID_DATA;
  549. //===== Video Object
  550. typedef struct _vms_form_video_info
  551. {
  552. VMS_FORM_DATA_HEAD data;
  553. VMS_FORM_OBJ_HEAD obj;
  554. VMS_OBJ_VIDEO video;
  555. } VMS_FORM_VIDEO_INFO;
  556. typedef struct _vms_form_video_data
  557. {
  558. VMS_FORM_VIDEO_INFO INFO;//[MAX_VMS_SCENARIO_FORM];
  559. } VMS_FORM_VIDEO_DATA;
  560. #define MAX_TXT_FULL_RGB_BIT 9216
  561. typedef struct _vms_full_graphic_lib
  562. {
  563. BYTE Phase; // 0x00(1phase), 0x01(2phase)
  564. BYTE DispFunc; // 0x07(static)
  565. BYTE DispDir; // 0x00(drop down)
  566. WORD MsgNmbr;
  567. BYTE R_Data1[MAX_TXT_FULL_RGB_BIT];
  568. BYTE G_Data1[MAX_TXT_FULL_RGB_BIT];
  569. #if 0
  570. BYTE R_Data2[MAX_TXT_FULL_RGB_BIT];
  571. BYTE G_Data2[MAX_TXT_FULL_RGB_BIT];
  572. #endif
  573. } VMS_FULL_GRAPHIC_LIB;
  574. //---------------------------------------------------------------------------
  575. #pragma pack(pop)
  576. //---------------------------------------------------------------------------
  577. #endif