使用我的Photon,我记录了4000个传感器读数(存储在一个阵列中)1秒钟。然后我将读数分成100组,并通过PUBNUB将其作为消息发送到网站。
光子的PUBNUB库对于消息的结构非常挑剔,如果消息不是100%正确,则会崩溃(红色闪烁)。有效的结构是[{" Time":" 1456"," Value":" 1"},{" Time& #34;:" 1458","价值":" 2"}]。
这是批处理代码:
void myReadings(int aData[], float aTime[], int nX)
{
int x = 0;
while (x <= nX) {
String stringTemp = "[";
for (int q= 0; q <= 100; q++)
{
if (x <= nX) {
stringTemp += "{\"Time\":\"" + String(aTime[x]) + "\",\"Value\":\"" + String(aData[x]) + "\"}";
if (q < 100 and x< nX)
{
stringTemp += ",";
}
x += 1;
}
}
stringTemp += "]";
int strLen = stringTemp.length();
char * msg = new char[strLen + 1];
stringTemp.toCharArray(msg, strLen + 1);
Serial.println(msg);
TCPClient * client;
client = PubNub.publish(channel, msg);
client ->stop();
Serial.println("Message sent");
delay(1000);
}
在网络方面,我无法让我的Javascript在数组中循环并绘制时间与价值点。我知道消息已经到来,但我无法得到任何标题。
请帮助您使用Javascript,它将在数组中循环并绘制点。
这是我正在使用的Javascript:
<script type="text/javascript">
var pubnub = PUBNUB.init({
publish_key: 'XXXX',
subscribe_key: 'YYY',
error: function (error) { console.log('Error:', error) }
});
var GraphChannel = "AmpValue";
var h = false;
charttemp = eon.chart({
pubnub: pubnub,
channel: GraphChannel,
limit: 5000,
xType: 'custom',
xId: 'Time',
history: h,
flow: false,
generate: {
bindto: "#charttemp",
data: { colors: {}, type: "spline" },
size: { height: 600, width: 1000 },
transition: { duration: 100 },
axis: { x: { label: "Time", show: false }, y: { label: "Amps", show: true } },
grid: { x: { show: false }, y: { show: true } },
},
transform: function (m) {
return { eon: { 'Time': m.Time, 'Value': m.Value } }
}
});
</script>
我是否需要修改已发布的消息,或者是否需要修改Javascript以循环播放数组以进行绘图?