0

我在 Arduino Uno 上存储信息,然后,当我将 Arduino 插入电脑时,我希望 google chrome 读取传入的串行数据()。我找到了谷歌的 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();
    }
}
4

2 回答 2

0

我已经开发了一个可以做到这一点的插件。它比你要找的更广泛,但你可能会在我的插件中看到我是如何做到的。

仅供参考,该插件是浏览器中 arduino 编辑器的开始。它与一个服务器端应用程序相结合,该应用程序编译代码并将其返回,然后将其刷新到 arduino。它可以读取和写入 arduino 所连接的串行端口。

您可能只是对 chrome 扩展感兴趣,以了解我如何获取串行数据,但是我也放置了服务器端链接

Chrome 扩展:https ://github.com/DecodedCo/ArduinoInTheBrowser

服务器端代码:https ://github.com/DecodedCo/ArduinoInTheBrowserServer

于 2015-06-24T15:04:32.320 回答
0

我认为这就是你需要的:http://www. tigoe.com/pcomp/code/arduinowiring/1096/(从链接中删除空格)

这是关于如何使用 nod.js 和 websockets 将 arduino 等串行设备连接到 broser 的说明。它使用 express.js、socket.io 和 node-serialport 库来点头。

这是索引页面。它加载用P5.js编写的client.js脚本,用于处理套接字通信。它打开一个返回服务器的 webSocket,并监听来自服务器的事件。无论它从事件中获得什么数据,它都会打印到自身内部的 DIV 中。将这些保存在新的子目录 /nodeSerialServer/public 中。

这是服务器https://github.com/tigoe/NodeExamples/blob/master/SerialToSocketIO/server.js(从链接中删除空格)

它启动一个 Web 服务器并监听对 public/index.html 的 HTTP 请求,并在被询问时提供它。它还监听传入的 webSocket 请求,并打开它们。当它这样做时,它开始监听串行事件。如果它在串行端口中获得回车和换行符,它将把它得到的内容发送到 websocket。将此保存在 /nodeSerialServer 中。

要运行它,请将目录更改为将其保存在 /nodeSerialServer 中:

cd /nodeSerialServer

然后使用节点运行 server.js 脚本。要调用此脚本,您需要在命令行中为其指定要打开的串行端口的名称,如下所示:

节点 server.js /dev/tty.usbportname

将您的端口名称放入上面的 usbportname 中。您将收到脚本已启动的消息。现在打开浏览器并打开这个地址:localhost:8080

于 2015-09-21T08:25:05.830 回答