PacketHandllingF.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  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. e_vms_MAX = 0xFF+1,
  123. } E_VMS_PROTOCOL;
  124. #if 0
  125. 0xA1 : 동영상 파일 FTP 다운로드
  126. 0xA2 : 동영상 파일 FTP 다운로드 완료
  127. #endif
  128. /*
  129. *****************************************************************************
  130. * VMS Form File Type
  131. ****************************************************************************/
  132. #define P_FILE_TYPE_IMAGE 0x01
  133. #define P_FILE_TYPE_VIDEO 0x02
  134. #define P_FILE_TYPE_STREAM 0x03
  135. #define P_FILE_TYPE_TRAFFIC 0x04
  136. #define P_FILE_TYPE_TEXT 0x05
  137. /*
  138. *****************************************************************************
  139. * VMS System define
  140. ****************************************************************************/
  141. #define MAX_VMS_SCENARIO_FORM 10
  142. #define PICTURE_BASE_FORMID 9000
  143. #define TEXT_BASE_FORMID 9000
  144. #define DEFAULT_FORMID 0
  145. /*
  146. *****************************************************************************
  147. * 프로토콜 OP 코드 정의
  148. ****************************************************************************/
  149. #define VMS_DLE 0x10 // DLE
  150. #define VMS_STX 0x02 // Start of TeXt
  151. #define VMS_ETX 0x03 // End of TeXt
  152. #define VMS_ACK 0x06
  153. #define VMS_NAK 0x15
  154. #define VMS_NULL 0x00
  155. typedef struct _vms_head
  156. {
  157. _vms_head()
  158. {
  159. Dle = VMS_DLE;
  160. Stx = VMS_STX;
  161. }
  162. BYTE Dle;
  163. BYTE Stx;
  164. BYTE Group;
  165. BYTE Ctlr;
  166. BYTE OpCode;
  167. BYTE Curr;
  168. BYTE Total;
  169. DWORD Length;
  170. } VMS_HEAD;
  171. typedef struct _vms_data
  172. {
  173. _vms_data()
  174. {
  175. Curr = 1;
  176. Total = 1;
  177. Length = 0;
  178. }
  179. BYTE Curr;
  180. BYTE Total;
  181. DWORD Length;
  182. } VMS_DATA;
  183. typedef struct _vms_tail
  184. {
  185. _vms_tail()
  186. {
  187. Dle = VMS_DLE;
  188. Etx = VMS_ETX;
  189. }
  190. BYTE Dle;
  191. BYTE Etx;
  192. WORD Crc;
  193. } VMS_TAIL;
  194. typedef struct _vms_req_data
  195. {
  196. _vms_req_data()
  197. {
  198. Group = 0;
  199. Ctlr = 0;
  200. OpCode = VMS_NULL;
  201. Curr = 1;
  202. Total = 1;
  203. Length = 0;
  204. }
  205. BYTE Group;
  206. BYTE Ctlr;
  207. BYTE OpCode;
  208. BYTE Curr;
  209. BYTE Total;
  210. DWORD Length;
  211. } VMS_REQ_DATA;
  212. typedef struct _vms_result
  213. {
  214. BYTE Result;
  215. BYTE Error;
  216. } VMS_RESULT;
  217. typedef struct _vms_req_info_data : public VMS_REQ_DATA
  218. {
  219. BYTE Data[1024];
  220. } VMS_REQ_INFO_DATA;
  221. typedef struct _vms_res_head
  222. {
  223. BYTE Dle;
  224. BYTE Stx;
  225. BYTE Group;
  226. BYTE Ctlr;
  227. BYTE OpCode;
  228. BYTE Curr;
  229. BYTE Total;
  230. DWORD Length;
  231. } VMS_RES_HEAD;
  232. //도형식 VMS 상태
  233. typedef struct _vms_status
  234. {
  235. BYTE DOOR; // Door Open/Close 상태 0x00 : Open, 0x01 : Close, 0x09 : Unknown
  236. BYTE POWER; // 전원의 ON/OFF 상태 0x00 : On, 0x01 : Off (Sign Board)
  237. BYTE FAN; // VMS Fan 동작상태 0x00 : On, 0x01 : Off, 0x09: Unknown
  238. // 함체 Fan 동작상태 0x00 : On, 0x10 : Off, 0x90: Unknown
  239. BYTE HEATER; // VMS Heater 동작상태 0x00 : On, 0x01 : Off, 0x09: Unknown
  240. // 함체 Heater 동작상태 0x00 : On, 0x10 : Off, 0x90: Unknown
  241. WORD FORM_NO; // 표출 폼 번호 0x00 : 통신 폼, 0x01 : 디폴트 폼
  242. BYTE REBOOT_YN; // 재실행 여부 0x00 : 정상, 0x01 : 재실행
  243. char CBOX_TEMP; // 함체온도 127 ~ -127 -128 : Unknown
  244. BYTE BRIGHT[4]; // 화면의 밝기 최대를 100으로 했을 때의 백분율 값 및 기준휘도
  245. // 0: 현재 휘도(00:주간,01:야간,02:자동)
  246. // 1: 야간휘도설정값
  247. // 2: 주간휘도설정값
  248. // 3: 현재휘도값(이건 나의 추측)
  249. char DP_TEMP; // 표출부온도 127 ~ -127 -128 : Unknown
  250. BYTE DP_HUM; // 표출부습도 0~100%, 포항UTIS부터 추가함
  251. } VMS_STATUS;
  252. //문자식 VMS 상태
  253. // Door상태정보 없음, 도형식과 OnOff값이 반대
  254. typedef struct _vms_txt_status
  255. {
  256. BYTE MSG_LIB_ERR : 1; // Message Library Checksum Error
  257. BYTE FAN : 1; // VMS Fan on/off (off=0, on=1)
  258. BYTE HEATER : 1; // VMS heater on/off (off=0, on=1)
  259. BYTE POWER : 1; // Sign board power on/off command status (off=0, on=1)
  260. BYTE POWER_FAIL : 1; // Sign board power failure
  261. BYTE BLANK : 1; // 공백문안이 표출될 경우 Set
  262. BYTE HAN_FAN : 1; // 함체 Fan on/off (off=0, on=1)
  263. BYTE HAM_HEATER : 1; // 함체 heater on/off (off=0, on=1)
  264. BYTE LOCAL_MODE : 1; // Local mode Active
  265. BYTE DEFAULT_PARA : 1; // Default Parameter
  266. BYTE RESET : 1; // Reset Occurred
  267. BYTE LONG_POWER_FAIL : 1; // Long Power Failure
  268. BYTE SHORT_POWER_FAIL : 1; // Short Power Failure
  269. BYTE DOOR : 1; // Door Ajar(0:close, 1: open)--> 화면테스트에서 확인
  270. BYTE MODL_FAIL_RATE : 1; // Module Failure Rate Exceded
  271. BYTE MEM_ERR : 1; // RAM/ROM Error
  272. BYTE VMS_TEMP; // VMS온도
  273. BYTE CBOX_TEMP; // 함체온도
  274. } VMS_TXT_STATUS;
  275. #define MAX_TXT_MODL_ROWS 3
  276. #define MAX_TXT_MODL_COLS 12
  277. typedef struct _vms_txt_modl_status
  278. {
  279. BYTE Modl[MAX_TXT_MODL_ROWS][MAX_TXT_MODL_COLS];
  280. } VMS_TXT_MODL_STATUE;
  281. //도형식 VMS 파라미터응답
  282. typedef struct _vms_parameter
  283. {
  284. BYTE PowerCtrlMode; // 전원제어 모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐,
  285. BYTE FanRunMode; // Fan 동작모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, 0x02 : 자동, 0x09: Unknown
  286. BYTE FanRunTemp; // Fan의 동작개시온도 1 Byte 온도( 0x00 ~0x03f )
  287. BYTE HeaterRunMode; // Heater의 동작모드 1 Byte 0x00 : 꺼짐, 0x01 : 켜짐, 0x02 : 자동, 0x09: Unknown
  288. BYTE HeaterRunTemp; // Heater 의 동작개시온도 1 Byte 온도(0x00 ~ 0x3f )
  289. BYTE BrightMode; // 밝기 모드 2 Byte 0x0 : 수동, 0x1 : 자동, 비율 : 0-100
  290. BYTE BrightRate; // 밝기 모드 2 Byte 0x0 : 수동, 0x1 : 자동, 비율 : 0-100
  291. BYTE BlinkTime; // 깜빡이는 시간주기 1 Byte 문자 비트맵의 깜빡이는 시간주기 0x00 ~ 0x1e( 0.1 ~3.0 )
  292. WORD ScnTurnTime; // 디폴트 시나리오로 전환시간 2 Byte 디폴트 시나리오로 전환될 때까지 기다리는 시간, 단위 : 초
  293. BYTE Reserved; // 기타 1 Byte
  294. //현재 로컬 제어기의 시간
  295. BYTE Year; // 년 1 Byte 0x00 ~ 0x32
  296. BYTE Mon; // 월 1 Byte 0x01 ~ 0x0c
  297. BYTE Day; // 일 1 Byte 0x01 ~ 0x1f
  298. BYTE Hour; // 시 1 Byte 0x00 ~ 0x17
  299. BYTE Min; // 분 1 Byte 0x00 ~ 0x3b
  300. BYTE Sec; // 초 1 Byte 0x00 ~ 0x3b
  301. } VMS_PARAMETER;
  302. //문자식 VMS 설정온도요청응답
  303. typedef struct _vms_txt_parameter
  304. {
  305. BYTE FanRunTemp; // Fan의 동작개시온도 1 Byte 온도( 0x00 ~0x03f )
  306. BYTE HeaterRunTemp; // Heater 의 동작개시온도 1 Byte 온도(0x00 ~ 0x3f )
  307. } VMS_TXT_PARAMETER;
  308. // VMS Status Control
  309. #if 0
  310. 0x01 전광판 전원제어 0x00:꺼짐, 0x01:켜짐, 1Byte
  311. 0x02 제어기 리셋트 - 1Byte
  312. 0x03 통신 재시도 횟수 0x01 ~ 0x09 1Byte(초기값 0x03:3회)
  313. 0x04 제어기 시간설정 "YYYYMMDDHHNNSS" 14Bytes(String)
  314. 0x05 점멸시간 주기 1/10초 단위 1Byte
  315. 0x06 밝기제어 0x00:주간, 0x01:야간, 0x02:Auto 2Byte(제어값+밝기) (밝기:수동 0~100,자동 0)
  316. 0x07 Fan 제어 고정값 0xFF 고정값 0xFF
  317. 0x08 Heater 제어 고정값 0xFF 고정값 0xFF
  318. 0x09 화면 배색 제어 0x01:Red, 0x02:Green, 0x03:Amber 1Byte(제어값)
  319. 0x0A 장애모듈비율 - 에러난 픽셀의 백분율 : 0~100
  320. 0x0B 디폴트 시나리오 동작시간 초 단위 2Byte, default value : 300초
  321. ※ 제어코드(0x01 ~ 0x0A)의 Default 제어값은 기존시스템 초기설정값을 기준으로 한다
  322. ● 전광판 전원 제어 명령 중 꺼짐 명령을 받으면 표지판은 꺼짐. 이후 켜짐 명령이 있을 때까지는 어떤 명령도 무시한다.
  323. ● 숫자 0은 0x00 이며, 문자 ‘0‘은 0x30이다.
  324. ● 제어기 시간 셋트에서 데이터는 문자열로 구성 (예) : 2004년 3월 25일 15시 30분 45초 일때??20040325153045??
  325. ● 밝기 제어
  326. 주간, 야간, 자동으로 구분하여 운영 모드를 지정할 수 있으며, 동시에 밝기를 지정할 수 있다. 주간 조도 default value(90), 야간 모드 default value(65)
  327. ● 장애모듈비율 : 한개의 모듈을 장애로 처리하기 위한 장애 PIXEL 백분율 값.
  328. Default 값은 10%
  329. #endif
  330. /*
  331. *****************************************************************************
  332. * 팬 동작 모드
  333. ****************************************************************************/
  334. typedef enum _e_fan_run_mode
  335. {
  336. e_fan_run_off = 0x00, // 꺼짐, 0x00
  337. e_fan_run_on = 0x01, // 켜짐, 0x01
  338. e_fan_run_auto = 0x02, // 자동, 0x02
  339. e_fan_run_manual = 0x03, // 수동, 0x03
  340. } e_fan_run_mode;
  341. /*
  342. *****************************************************************************
  343. * 하드웨어 작동 상태
  344. ****************************************************************************/
  345. typedef enum _e_status_onoff
  346. {
  347. e_status_on = 0x00, // 켜짐, 0x00
  348. e_status_off = 0x01, // 꺼짐, 0x01
  349. } e_status_onoff;
  350. // 도어 상태
  351. typedef enum _e_door_status
  352. {
  353. e_door_open = 0x00, // 열림, 0x00
  354. e_door_close = 0x01, // 닫힘, 0x01
  355. } e_door_status;
  356. // 팬 상태
  357. typedef enum _e_fan_status
  358. {
  359. e_fan_run = 0x00, // 열림, 0x00
  360. e_fan_stop = 0x01, // 닫힘, 0x01
  361. } e_fan_status;
  362. // 히터 상태
  363. typedef enum _e_heater_status
  364. {
  365. e_heater_run = 0x00, // 열림, 0x00
  366. e_heater_stop = 0x01, // 닫힘, 0x01
  367. } e_heater_status;
  368. /*
  369. *****************************************************************************
  370. * VMS Form define
  371. ****************************************************************************/
  372. // 폼 배경 색상
  373. typedef enum _e_bg_rgb
  374. {
  375. e_bg_black = 0x00, // 검정색 0x00
  376. e_bg_red = 0x01, // 적색 0x01
  377. e_bg_green = 0x02, // 녹색 0x02
  378. e_bg_yellow = 0x03, // 황색 0x03
  379. } e_bg_rgb;
  380. // 오브젝트 종류
  381. typedef enum _e_obj_type
  382. {
  383. e_obj_text = 0x00, //문자열 0x00
  384. e_obj_bitmap = 0x01, //Bitmap 0x01
  385. e_obj_bitmapid = 0x02, //Bitmap ID 0x02
  386. e_obj_avi = 0x03, //동영상 0x03 동영상 *.AVI (XVID)
  387. e_obj_stream = 0x04, //스트리밍 영상 0x04
  388. } e_obj_type;
  389. // 그래픽 데이터 형식
  390. typedef enum _e_img_type
  391. {
  392. e_img_bitmap = 0x00, // Window Bitmap
  393. e_img_gif = 0x01, // GIF
  394. e_img_jpg = 0x02, // JPG
  395. e_img_pcx = 0x03, // PCX
  396. } e_img_type;
  397. // 폼 표출유형
  398. typedef enum _e_form_display_type
  399. {
  400. e_static_normal = 0x00, // 즉시 표출
  401. e_shift_up = 0x01, // 기존 화면 위에 다음 화면을 겹쳐서 위 방향으로 다음 화면만 밀면서 표출
  402. e_shift_down = 0x02, // 기존 화면 위에 다음 화면을 겹쳐서 아래 방향으로 다음 화면만 밀면서 표출
  403. e_shift_left = 0x03, // 기존 화면 위에 다음 화면을 겹쳐서 왼쪽 방향으로 다음 화면만 밀면서 표출
  404. e_shift_right = 0x04, // 기존 화면 위에 다음 화면을 겹쳐서 오른쪽 방향으로 다음 화면만 밀면서 표출
  405. e_scroll_up = 0x05, // 기존 화면과 다음 화면을 위 방향으로 밀면서 표출
  406. e_scroll_down = 0x06, // 기존 화면과 다음 화면을 아래 방향으로 밀면서 표출
  407. e_scroll_left = 0x07, // 기존 화면과 다음 화면을 왼쪽 방향으로 밀면서 표출
  408. e_scroll_right = 0x08, // 기존 화면과 다음 화면을 오른쪽 방향으로 밀면서 표출
  409. e_wipe_up = 0x09, // 기존 화면을 위 방향으로 지우면서 다음 화면을 표출
  410. e_wipe_down = 0x0A, // 기존 화면을 아래 방향으로 지우면서 다음 화면을 표출
  411. e_wipe_left = 0x0B, // 기존 화면을 왼쪽 방향으로 지우면서 다음 화면을 표출
  412. e_wipe_right = 0x0C, // 기존 화면을 오른쪽 방향으로 지우면서 다음 화면을 표출
  413. e_curtain_v_in = 0x0D, // 수직으로 나누어 중앙을 향해 안쪽으로 표출
  414. e_curtain_v_out = 0x0E, // 수직으로 나누어 중앙에서 바깥쪽을 향해 표출
  415. e_urtain_h_in = 0x0F, // 수평으로 나누어 중앙을 향해 안쪽으로 표출
  416. e_curtain_h_out = 0x10, // 수평으로 나누어 중앙에서 바깥쪽을 향해 표출
  417. e_trace_right = 0x11, // 한 글자 크기에 대한 한 Line씩 오른쪽으로 표출
  418. e_trace_left = 0x12, // 한 글자 크기에 대한 한 Line씩 왼쪽으로 표출
  419. e_blind_up = 0x13, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 위 방향으로 표출
  420. e_blind_down = 0x14, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 아래 방향으로 표출
  421. e_blind_left = 0x15, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 왼쪽 방향으로 표출
  422. e_blind_right = 0x16, // 다음 화면을 수직 또는 몇 개의 화면으로 분할하여 오른쪽 방향으로 표출
  423. e_blinking = 0x17, // 표출화면(폼 전체 깜박임
  424. } e_form_display_type;
  425. typedef struct _vms_form_head
  426. {
  427. WORD FORM_ID; // 폼 ID, 'FID0000'과 'FID9999'를 제외한 일련번호
  428. WORD FORM_CNT; // 전체 폼의 수
  429. } VMS_FORM_HEAD;
  430. typedef struct _vms_form_data_head
  431. {
  432. WORD FORM_SEQ; // 폼 표출 일련번호, 2Byte
  433. BYTE DISPLAY_TIME; // 폼의 표출시간을 지정, 1Byte( 0x00 이면 계속 표출 )
  434. BYTE DISPLAY_TYPE; // 폼의 표출유형을 지정, 1Byte
  435. BYTE BG_RGB; // 폼의 배경색을 지정, 1Byte
  436. BYTE OBJ_CNT; // 표출할 오브젝트 전체 수, 1Byte
  437. } VMS_FORM_DATA_HEAD;
  438. typedef struct _vms_form_obj_head
  439. {
  440. BYTE OBJ_TYPE; // 오브젝트 종류
  441. WORD OBJ_SIZE; // 오브젝트 데이터 크기
  442. BYTE FLASH; // 점멸여부, 1Byte(0x00 : 고정, 0x01 : 점멸)
  443. WORD X; // 좌표 X
  444. WORD Y; // 좌표 Y
  445. BYTE TEXT_BG_RGB; // 문자열 배경색을 지정
  446. } VMS_FORM_OBJ_HEAD;
  447. // ▷ 비트맵 데이터 (표출할 비트맵 데이터)
  448. // 표시하고자 하는 비트맵 데이터로서 파일형식은󰡒BMP"를 기준으로 하고 색상은 16Color를 기본으로 하며 16Color 이상도 사용할 수 있다.다.
  449. typedef struct _vms_obj_bitmap
  450. {
  451. WORD WIDTH; // 비트맵 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  452. WORD HEIGHT; // 비트맵 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  453. BYTE IMG_TYPE; // e_img_type
  454. BYTE ETC; // 기타
  455. } VMS_OBJ_BITMAP;
  456. typedef struct _vms_obj_bitmapid
  457. {
  458. WORD WIDTH; // 비트맵 표시 Width, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  459. WORD HEIGHT; // 비트맵 표시 Heitht, 2 Byte, 0 ~ 1023 : 표출 비트맵 Width
  460. BYTE IMG_TYPE; // e_img_type
  461. WORD BITMAP_ID; // 표출할 비트맵 ID, 2 Byte, 0~ 9999 : 표출할 비트맵 ID
  462. } VMS_OBJ_BITMAPID;
  463. typedef struct _vms_form_data
  464. {
  465. VMS_FORM_HEAD head;
  466. VMS_FORM_DATA_HEAD data;
  467. VMS_FORM_OBJ_HEAD obj;
  468. VMS_OBJ_BITMAP bitmap;
  469. } VMS_FORM_DATA;
  470. typedef struct _vms_schedule_form_info
  471. {
  472. WORD FormNo;
  473. BYTE DispSec;
  474. } VMS_SCHEDULE_FORM_INFO;
  475. typedef struct _vms_schedule_form
  476. {
  477. VMS_SCHEDULE_FORM_INFO Form[MAX_VMS_SCENARIO_FORM];
  478. } VMS_SCHEDULE_FORM;
  479. // 내부적으로 사용할 구조체
  480. typedef struct _vms_file_download
  481. {
  482. AnsiString VMS_FORM_ID;
  483. bool IsDownload;
  484. int FormIdx;
  485. int BitmapId;
  486. WORD FormNo;
  487. BYTE DispSec;
  488. } VMS_FILE_DOWNLOAD;
  489. typedef struct _vms_download_data
  490. {
  491. bool IsDefault;
  492. int MaxSchedule;
  493. int DownloadCnt;
  494. VMS_FILE_DOWNLOAD Info[MAX_VMS_SCENARIO_FORM];
  495. } VMS_DOWNLOAD_DATA;
  496. /*
  497. *****************************************************************************
  498. * Download Data 저장위치 상세코드
  499. ****************************************************************************/
  500. typedef enum _e_vms_download_loc
  501. {
  502. e_download_file = 0, // 파일명에 포함
  503. e_download_prog = 1, // 로컬 프로그램이 속하여 있는 디렉토리에 저장
  504. e_download_porg_root = 2, // 로컬 프로그램이 설치된 루트 디렉토리에 저장
  505. e_download_win = 3, // 윈도우즈 디렉토리에 저장
  506. e_download_win_sys = 4, // 윈도우즈 시스템 디렉토리에 저장
  507. e_download_prog_image = 5, // 로컬 프로그램 이미지 디렉토리에 저장
  508. e_download_prog_default = 6, // 로컬 프로그램 디폴트 폼 디렉토리에 저장
  509. } e_vms_download_loc;
  510. typedef struct _vms_file_head
  511. {
  512. BYTE SAVE_LOC; // Download Data 저장위치 Code, 1 Byte
  513. BYTE NAME_SIZE; // 파일명 길이, 1 Byte, 1~ 255
  514. DWORD SIZE; // 저장하여야 할 데이터의 크기, 4 Byte
  515. // 파일명, N byte
  516. // 파일Data, N byte
  517. } VMS_FILE_HEAD;
  518. typedef struct _vms_file_data
  519. {
  520. VMS_FILE_HEAD head;
  521. } VMS_FILE_DATA;
  522. //VMS_FORM_HEAD head;
  523. typedef struct _vms_form_id_info
  524. {
  525. VMS_FORM_DATA_HEAD data;
  526. VMS_FORM_OBJ_HEAD obj;
  527. VMS_OBJ_BITMAPID bid;
  528. } VMS_FORM_ID_INFO;
  529. typedef struct _vms_form_id_data
  530. {
  531. VMS_FORM_ID_INFO INFO[MAX_VMS_SCENARIO_FORM];
  532. } VMS_FORM_ID_DATA;
  533. #define MAX_TXT_FULL_RGB_BIT 9216
  534. typedef struct _vms_full_graphic_lib
  535. {
  536. BYTE Phase; // 0x00(1phase), 0x01(2phase)
  537. BYTE DispFunc; // 0x07(static)
  538. BYTE DispDir; // 0x00(drop down)
  539. WORD MsgNmbr;
  540. BYTE R_Data1[MAX_TXT_FULL_RGB_BIT];
  541. BYTE G_Data1[MAX_TXT_FULL_RGB_BIT];
  542. #if 0
  543. BYTE R_Data2[MAX_TXT_FULL_RGB_BIT];
  544. BYTE G_Data2[MAX_TXT_FULL_RGB_BIT];
  545. #endif
  546. } VMS_FULL_GRAPHIC_LIB;
  547. //---------------------------------------------------------------------------
  548. #pragma pack(pop)
  549. //---------------------------------------------------------------------------
  550. #endif