我在Arduino Uno上存储信息然后,当我将Arduino插入电脑时,我想要google chrome来读取传入的串行数据()。我找到了Google的api http://developer.chrome.com/apps/serial,并认为这可以帮助我。但实际上我不知道如何使用它:D
这是我的Arduino代码可以正常工作:
//Importing libraries
#include <VirtualWire.h>
#include <stdio.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
//Main temperature variable
float temp2;
//Measurements saving variable
int addr = 0;
int address = 0;
int tvalue =0;
int svalue;
//Function for saving data to Arduino's storage
int save_data_to_storage()
{
EEPROM.write(addr, (temp2)*10);
addr = addr + 1;
if (addr == 12)
addr = 0;
delay(5000);
}
int save;
//Display variables
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Begin loops...
void setup()
{
//Initialize serial port bitRate
Serial.begin(9600);
//Alarm pin
pinMode(9, OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD For 7 seconds:
lcd.print("BALGHI");
delay(7000);
lcd.clear();
//Receiver set up
vw_set_rx_pin(8);
vw_rx_start();
vw_setup(2000);
}
void loop()
{
if (Serial.available() > 0) {
//Display USB Connection
lcd.clear();
lcd.print("BALGHI");
lcd.setCursor(0, 1);
lcd.print("USB Connection");
// Send the measurements values to the PC
svalue = EEPROM.read(address);
//Serial.write(svalue);
Serial.println(svalue, DEC);
address = address + 1;
if (address == 12){
address = 0;
//Delete all measurements data
/*for (int d = 0; d < 12; d++)
EEPROM.write(d, 0);*/
}
delay(500);
}
else{
//Displaying temperature
lcd.setCursor(0, 0);
lcd.print("Body Temperature");
lcd.setCursor(0, 1);
lcd.print(temp2, 1) + lcd.print(" C Degree");
// Get the message from the transmiter
uint8_t buflen = VW_MAX_MESSAGE_LEN;
uint8_t buf[buflen];
if(vw_get_message(buf, &buflen))
{
int i = 0;
//Convert the number to DEC
float temp1 = (((buf[i]-48)*100+(buf[i+1]-48)*10+buf[i+2]-48));
//Convert the number to C degrees
temp2 = (temp1)/6.8; // k = 6.8
}
//store Numer
//tvalue = (temp2, 1);
//Alarm if Temperature is too high
if(temp2 > 38.4) {
digitalWrite(9, HIGH);
delay(500);
digitalWrite(9, LOW);
delay(1000);
}
//Or keep calm
else {
digitalWrite(9, LOW);
}
//Write the measurement data to Arduino storage
save = save_data_to_storage();
}
}
答案 0 :(得分:0)
我已经开发了一个执行此操作的插件。它比你想要的更广泛,但你可以看到我在我的插件中如何做到这一点。
仅供参考该插件是浏览器中arduino编辑器的开头。它与服务器端应用程序耦合,该应用程序编译代码并将其返回,然后闪存到arduino。它可以读取和写入arduino所连接的串口。
您可能只对chrome扩展感兴趣,看看我是如何获取串行数据的,但是我也提供了服务器端链接
Chrome扩展程序:https://github.com/DecodedCo/ArduinoInTheBrowser
服务器端代码:https://github.com/DecodedCo/ArduinoInTheBrowserServer
答案 1 :(得分:0)
我认为这就是你所需要的:http:// www。 tigoe.com/pcomp/code/arduinowiring/1096/(从链接中删除空格)
它是关于如何使用nod.js和websockets将arduino等串行设备连接到broser的说明。 它使用express.js,socket.io和node-serialport库作为点头。
这是index页面。它加载用 P5.js 编写的client.js脚本,用于处理套接字通信。它将webSocket打开回服务器,并侦听来自服务器的事件。无论从事件中获取什么数据,它都会在内部打印到DIV。将它们保存在新的子目录/ nodeSerialServer / public中。
以下是服务器: https://github.com/tigoe/NodeExamples/blob/master/SerialToSocketIO/server.js (从链接中删除空格)< / p>
启动Web服务器并侦听public / index.html的HTTP请求,并在询问时将其提供。它还会侦听传入的webSocket请求,并打开它们。当它这样做时,它开始侦听串行事件。如果它在串口中得到回车符和换行符,它会将它发送给websocket。将其保存在/ nodeSerialServer。
要运行此命令,请将目录更改为在/ nodeSerialServer中保存它:
cd / nodeSerialServer
然后使用node运行server.js脚本。要调用此脚本,您需要在命令行中为其指定要打开的串行端口的名称,如下所示:
node server.js /dev/tty.usbportname
将您的端口名称放在上面的usbportname中。您将收到脚本启动的消息。现在打开浏览器并打开以下地址: 本地主机:8080