gpt4 book ai didi

c - 将通过 Web 服务器发送的 C 字符数组解析为(JSON 或 JavaScript)变量

转载 作者:行者123 更新时间:2023-11-30 16:40:10 28 4
gpt4 key购买 nike

期望的结果:使用 Web 服务器从 C 发送 GPS 数据结构,并将数据(纬度、经度等)显示在网页上。

使用:Linux,用于 Web 服务器的 libwebsockets (LWS) 库。 C 代码在 LWSWS(网络服务器)应用程序中作为独立插件实现。

当前对项目的理解/工作:将结构从插件转换为字符数组,并尝试将该数组(使用 JSON)解析为原始结构的各个成员。然后在网页上显示每个变量。

我是 Linux、LWS、HTML、JavaScript 和 JSON 新手。我可以使用 JSON 或 Javascript 来处理变量,以更有意义的为准。我不完全确定我在项目这一部分的任何一方(C/JS)的计划。

传输此信息并转换为在网页上使用的最佳方式是什么?

这是我的结构:

struct per_session_data__gps_rcvr {
struct time_struct{
int month;
int day;
int year;

int hour;
int minute;
double second;
}time;

double latitude;
char lat_indicator;

double longitude;
char lon_indicator;

double heading;

int quality;
int satellites;
};

发送结构体,转换为字符指针:

    // Write GPS data to GUI
n = lws_snprintf( (char *)p, sizeof(buf) - LWS_PRE, "%s", (char *)pss );
m = lws_write(wsi, p, n, LWS_WRITE_TEXT);
if (m < n) {
lwsl_err("ERROR %d writing to di socket\n", n);
return -1;
}
break;

我正在修改的测试代码似乎接收名为“msg”的变量中的数据。我假设我需要将 char 数组中发送的数据解析为与原始结构的成员相对应的 block 。然后我就可以在网页上显示每条GPS数据了。

var socket_gps;

if (use_lws_meta)
socket_gps = lws_meta.new_ws("", "gps-rcvr-protocol");
else
socket_gps = new_ws(get_appropriate_ws_url(""), "gps-rcvr-protocol");

try {
socket_gps.onopen = function() {
document.getElementById("wsdi_statustd").style.backgroundColor = "#40ff40";
document.getElementById("wsdi_status").innerHTML =
" <b>websocket connection opened</b><br>" +
san(socket_gps.extensions);
}

socket_gps.onmessage =function got_packet(msg) {
document.getElementById(" **VARIABLE GOES HERE** ").textContent = msg.data + "\n";
}

socket_gps.onclose = function(){
document.getElementById("wsdi_statustd").style.backgroundColor = "#ff4040";
document.getElementById("wsdi_status").textContent = " websocket connection CLOSED ";
}
}
catch(exception) {
alert('<p>Error' + exception);
}

请告诉我是否有更好的方法从 C 发送数据,和/或我是否正确配置了数据。在我的研究中,有人提到数据可以以二进制形式发送,但发送纯文本消息并使用 JSON 似乎是更好的计划。

看起来 JSON 可以“字符串化”信息,但前提是它已经以 JavaScript 格式输入或以 JavaScript 格式输入?我不知道。我还没有看到任何方法可以解析出 char 数组(一次解析一定数量的字符),并将这些段保存为 HTML 端的变量。这就是我所希望的。

感谢您的建议!

最佳答案

像这样:

n = snprintf( (char *)p, sizeof(buf), "{\"NameofParam1\":\"%d\",\"NameofParam2\":\"%d\"}", param1, param2 );

这会一次性为您提供整个 JSON 字符串(存储在缓冲区中)。只需使用适当的标志(%s、%X、%c、%f 等)来捕获您的参数。

关于c - 将通过 Web 服务器发送的 C 字符数组解析为(JSON 或 JavaScript)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46777023/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com