全能接口
两个字符串进、一个 JSON 出。
完整清单见「UI 开发」。下面每个接口都带一句用法和一个例子;签名取自
Lib/c/vml_ui.h(权威来源)。
ui_call_json(char* fn, char* args_json, char* out_buf, int cap)
两个字符串进、一个 JSON 字符串出 —— 查设备信息、调宿主的杂项能力都走它,不必为每个小功能占一个 syscall 号。结果写进你给的缓冲区。 ⚠ 性能敏感的调用别走这里(一次要过两趟 JSON + 一次内存拷贝):绘图、输入仍旧走专用接口。
char buf[512];
ui_call_json("sysinfo", "", buf, 512);
puts(buf); /* {"ok":true,"result":{…}} */
ui_call_json_get_at(int i)
取上一次结果的第 i 个字节。
char c = (char)ui_call_json_get_at(i);
ui_call_json_get_len(void)
上一次 ui_call_json_s 的结果有多长。
int n = ui_call_json_get_len();
ui_call_json_print(void)
把上一次 ui_call_json_s 的结果整份打到 stdout(末尾补换行)—— 调试最省事,各语言的自测也都靠它把结果原样打出来。⚠ 无参:打印的是上一次的结果,不是带参数再调一次。
ui_call_json_s("version", "");
ui_call_json_print();
ui_call_json_s(char* fn, char* args_json)
同上,但不用给缓冲区(适合拿不到指针的语言),配 _len / _at 读结果。
int n = ui_call_json_s("version", "");
for (int i = 0; i < n; i++) putchar(ui_call_json_get_at(i));