project.json5 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. // 项目json结构
  2. {
  3. // 版本号
  4. "version": "1.0.0",
  5. // 应用元数据
  6. "meta": {
  7. // 项目名称
  8. "name": "智能HOME项目",
  9. // 项目版本号
  10. "version": "1.0.0",
  11. // 项目描述
  12. "description": "智能HOME项目",
  13. // 项目类型
  14. "type": "chip", // 'analog_display' | 'chip' | 'board' 1: 模拟显示 2: 芯片 3: 板卡
  15. // 屏幕类型
  16. "screenType": "single", // 'single' | 'dual' 1:单屏 2:双屏
  17. // 语言
  18. "language": "zh-cn",
  19. // 资源打包方式
  20. "resourcePackaging": "c_bin", // 'c' | 'c_bin' 1: C源码 2: C源码+BIN
  21. // BIN数量
  22. "binNum": "1", // 1~32
  23. // 芯片配置
  24. "chip": {
  25. // 芯片型号
  26. "model": "ESP32",
  27. // 闪存大小
  28. "flash_size": {
  29. "capacity": "16",
  30. "unit": "M"
  31. },
  32. // 内存大小
  33. "ram_size": {
  34. "capacity": "4",
  35. "unit": "M"
  36. }
  37. },
  38. // 板卡配置
  39. "board": {
  40. // 板卡型号
  41. "model": "ESP32",
  42. },
  43. // 屏幕配置
  44. "screens": [
  45. {
  46. // 屏幕类型
  47. "type": "1", // 1:主屏 2:副屏
  48. // 接口类型
  49. "interface": "RGB",
  50. // 屏幕宽
  51. "width": 1920,
  52. // 屏幕高
  53. "height": 1080,
  54. // 颜色深度
  55. "colorDepth": "16bit",
  56. // 颜色格式
  57. "colorFormat": "BGR",
  58. // 屏幕参数
  59. "params": {
  60. "PCLK": "",
  61. "VBP": "",
  62. "VFP": "",
  63. "HBP": "",
  64. "HFP": "",
  65. "HSYNC": "",
  66. "VSYNC": "",
  67. "HSYNC_WIDTH": "",
  68. "HSYNC_WIDTH": ""
  69. }
  70. }
  71. ],
  72. // 创建时间
  73. "createTime": "2025-09-01 12:00:00",
  74. // 修改时间
  75. "modifyTime": "2025-09-01 12:00:00",
  76. },
  77. // BIN列表
  78. "bins": [
  79. {
  80. "id": "bin_1",
  81. "fileName": "bin1.bin",
  82. "path": "./src/bin/bin1.bin"
  83. },
  84. {
  85. "id": "bin_2",
  86. "fileName": "bin2.bin",
  87. "path": "./src/bin/bin2.bin"
  88. }
  89. ],
  90. // 资源
  91. "resources": {
  92. // 图片资源
  93. "images": [
  94. {
  95. "id": "img_1",
  96. "fileName": "image1.png",
  97. "fielType": "png",
  98. "path": "./src/assets/images/image1.png",
  99. "compressFormat": "rle", // 无压缩、RLE压缩、QOI压缩、JPEG压缩、PNG压缩
  100. "alpha": 255, // 透明度0-255
  101. "bin": "bin_1", // 关联的BIN ID
  102. "colorFormat": "RGB565", // 颜色格式
  103. "colorDepth": "16bit", // 颜色深度
  104. }
  105. ],
  106. // 字体资源
  107. "fonts": [
  108. {
  109. "id": "font_1",
  110. "fileName": "font1.ttf",
  111. "fielType": "ttf",
  112. "path": "./src/assets/fonts/font1.ttf",
  113. "range": ["page", "custom", "range"], // 'all' | 'page' | 'custom' | 'range' 0: 全部 1:界面文本 2:自定义文本 3: 编码范围
  114. // 编码范围
  115. "codeRange": ["0x4E00-0x9FA5"],
  116. // 额外的文本内容
  117. "extText": "abcdefghijklmnopqrstuvwxyz",
  118. "bin": "bin_1" // 关联的BIN ID
  119. }
  120. ],
  121. "others": [
  122. // 动画资源
  123. {
  124. "id": "o_1",
  125. "fileName": "other.an",
  126. "fileType": "an",
  127. "path": "./src/assets/others/other.an"
  128. },
  129. // 样式资源
  130. {
  131. "id": "o_2",
  132. "fileName": "a.style",
  133. "fileType": "style",
  134. "path": "./src/assets/others/a.style"
  135. }
  136. ]
  137. },
  138. // 复用控件
  139. "widgets": [
  140. {
  141. "id": "copy_obj_1",
  142. // 控件名称
  143. "name": "copy_obj_1",
  144. // 控件类型
  145. "widgetType": "lv_object",
  146. // 属性 根据每个控件生成
  147. "props": {
  148. // 坐标x
  149. "x": 0,
  150. // 坐标y
  151. "y": 0,
  152. // 宽度
  153. "width": 100,
  154. // 高度
  155. "height": 100,
  156. // 布局方式 flex grid
  157. "layout": "flex",
  158. // 启用
  159. "enable": true,
  160. // 可见
  161. "visible": true,
  162. // 值
  163. "value": {
  164. "valueType": "VARIABLE",
  165. "value": "page_1_a"
  166. },
  167. },
  168. // 样式 根据每个控件生成
  169. "style": {
  170. // 样式
  171. "style": "default",
  172. "state": {
  173. // 默认状态
  174. "normal": {
  175. // 直接使用颜色值
  176. "bg_color": "#000000",
  177. "border": "all", // all left right top bottom
  178. // 绑定变量或主题色
  179. "border_color": {
  180. // valueType的值: TEXT: 文本,VARIABLE: 变量,LANGUAGE: 多语言, COLOR: 主题颜色,不同的控件可以配置不同类型的属性
  181. "valueType": "TEXT",
  182. "value": "#ffffff"
  183. },
  184. "border_width": 1,
  185. "round_radius": 4
  186. },
  187. // 禁用状态
  188. "disabled": {
  189. "bg_color": "#000000",
  190. "border": "all",
  191. }
  192. }
  193. },
  194. // 事件
  195. "events": [
  196. {
  197. "id": "event_1",
  198. // 事件名称
  199. "name": "lv_obj_click_event",
  200. // 触发事件
  201. "trigger": "click",
  202. // 动作类型
  203. "type": "function", // 'play_animation' | 'function' -> play_animation: 播放动画 function: 执行函数
  204. // 动画ID
  205. animation: "",
  206. // 动画播放前函数ID
  207. animationPlayerBeforeEvent: "",
  208. // 动画播放后函数ID
  209. animationPlayerAfterEvent: "",
  210. // 函数ID
  211. function: "method_1"
  212. },
  213. // 加载完毕播放动画
  214. {
  215. "id": "event_1",
  216. // 事件名称
  217. "name": "lv_obj_click_event",
  218. // 触发事件
  219. "trigger": "click",
  220. // 动作类型
  221. "type": "play_animation", // 'play_animation' | 'function' -> play_animation: 播放动画 function: 执行函数
  222. // 动画ID
  223. animation: "animation_1",
  224. // 动画播放前函数ID
  225. animationPlayerBeforeEvent: "method_animation_1",
  226. // 动画播放后函数ID
  227. animationPlayerAfterEvent: "method_animation_2",
  228. // 函数ID
  229. function: ""
  230. }
  231. ],
  232. // 子对象
  233. "children": [
  234. {
  235. "id": "label_1",
  236. "name": "lv_label",
  237. "parentId": "lv_obj_01",
  238. "type": "object",
  239. "hidden": false,
  240. "locked": false,
  241. "props": [
  242. {
  243. "id": "prop_1",
  244. "name": "text",
  245. "type": "string",
  246. "text": {
  247. "valueType": "LANGUAGE",
  248. "value": "hello"
  249. }
  250. }
  251. ]
  252. }
  253. ]
  254. },
  255. ],
  256. // 全局变量定义
  257. "variables": [
  258. {
  259. // 组ID
  260. "id": "group_1",
  261. // 组名称
  262. "name": "全局变量",
  263. // 变量
  264. "variables": [
  265. {
  266. "id": "var_1",
  267. "name": "a",
  268. "value": "1",
  269. "type": "int"
  270. }
  271. ]
  272. }
  273. ],
  274. // 主题
  275. "themes": [
  276. {
  277. "id": "theme_0",
  278. // 主题名称
  279. "name": "默认主题",
  280. // 默认主题
  281. "default": true,
  282. // 颜色集
  283. "colors": [
  284. {
  285. "id": "color_1",
  286. // 颜色名称
  287. "name": "背景颜色",
  288. // 颜色值
  289. "value": "#000000",
  290. // 透明度
  291. "alpha": 255
  292. }
  293. ]
  294. },
  295. {
  296. "id": "theme_1",
  297. // 主题名称
  298. "name": "高亮主题",
  299. // 默认主题
  300. "default": false,
  301. // 颜色集 这里的颜色只能从默认主题获取,可以修改值
  302. "colors": [
  303. {
  304. "id": "color_1",
  305. // 颜色名称
  306. "name": "背景颜色",
  307. // 颜色值
  308. "value": "#ffffff",
  309. // 透明度
  310. "alpha": 255
  311. }
  312. ]
  313. }
  314. ],
  315. // 动画
  316. "animations": [
  317. {
  318. // 动画名称
  319. "name": "move_x_animation",
  320. // 时间轴
  321. "timeline": [
  322. {
  323. // 目标属性
  324. "target": "x",
  325. // 开始值
  326. "start": 0,
  327. // 结束值
  328. "end": 100,
  329. // 延迟时间
  330. "delay": 0,
  331. // 动画时间
  332. "duration": 500,
  333. // 动画效果
  334. "timingFunction": "ease",
  335. // 动画次数
  336. "iterationCount": "infinite" // 数值或infinite
  337. }
  338. ]
  339. }
  340. ],
  341. // 多语言
  342. "languages": [
  343. {
  344. "id": "language_1",
  345. // 语言表示
  346. "key": "hello",
  347. // 语言内容
  348. "values": [
  349. {
  350. "language": "zh-cn",
  351. "value": "你好",
  352. "font": "font_1"
  353. },
  354. {
  355. "language": "en",
  356. "value": "hello"
  357. },
  358. {
  359. "language": "ja",
  360. "value": "こんにちは"
  361. },
  362. {
  363. "language": "ko",
  364. "value": "안녕하세요"
  365. },
  366. {
  367. "language": "fr",
  368. "value": "bonjour"
  369. }
  370. ]
  371. }
  372. ],
  373. // 方法
  374. "methods": [
  375. {
  376. "id": "method_1",
  377. "name": "lv_obj_click",
  378. "action": "static lv_obj_click(void* ctx) { // TODO: 添加事件处理逻辑 }"
  379. }
  380. ],
  381. // 屏幕
  382. "screens": [
  383. {
  384. "id": "screen_1",
  385. "name": "主屏",
  386. // 类型
  387. "type": "screen",
  388. // 屏幕宽 未设置取通用配置
  389. "width": 1920,
  390. // 屏幕高 未设置取通用配置
  391. "height": 1080,
  392. // 隐藏
  393. "hidden": false,
  394. // 锁定
  395. "locked": false,
  396. // 页面
  397. "pages": [
  398. {
  399. "id": "page_1",
  400. // 页面名称
  401. "name": "启动页",
  402. // 类型
  403. "type": "page",
  404. // 隐藏
  405. "hidden": false,
  406. // 锁定
  407. "locked": false,
  408. // 参考线
  409. "referenceLine": [
  410. {
  411. "id": "r_1",
  412. // 垂直 水平
  413. "layout": "horizontal",
  414. // 位置
  415. "position": 0,
  416. // 显示
  417. "visible": true
  418. }
  419. ],
  420. // 属性
  421. "props": {},
  422. // 样式
  423. "style": {},
  424. // 事件
  425. "events": [],
  426. // 页面变量
  427. "variables": [
  428. {
  429. "id": "page_1_var_1",
  430. "name": "page_1_a",
  431. "value": "1",
  432. "type": "int"
  433. }
  434. ],
  435. // 子组件
  436. "children": [
  437. {
  438. "id": "lv_obj_01",
  439. // 复用控件ID
  440. "widgetId": "obj_1",
  441. // 控件名称
  442. "name": "容器",
  443. // 类型
  444. "type": "widget",
  445. // 隐藏
  446. "hidden": false,
  447. // 锁定
  448. "locked": false,
  449. // 属性 根据每个控件生成
  450. "props": {
  451. // 坐标x
  452. "x": 100,
  453. // 坐标y
  454. "y": 100
  455. }
  456. }
  457. ]
  458. }
  459. ]
  460. }
  461. ]
  462. }