尝试在树莓派上运行 javascript 时出现语法错误

车山贾亚提拉卡

我正在使用 Arduino 和 raspberry pi 构建一个 IoT 应用程序。有一个要求是从 Arduino 读取串行输出。这个读数是由树莓派完成的。对于这个过程,我使用的是节点串口模块。

在读取该串行输出时,我必须使用一个条件。我只需要包含整数值的一行。所以我使用了以下代码行。

图片:在这里你可以看到包含整数的行。因为这是一个循环,你可以看到多行。我需要读一遍该行以进行循环

var sp = new serialport("/dev/ttyACM0", { //for serial communication with arduino 
    //baudrate: 9600,  
    baudRate: 9600,
// we are using UNO so baudrate is 9600, you might need to change according to your model
 //parser: serialport.parsers.readline("\n")
 parser: new Readline("\r\n") 

    if(data === parseInt(data,10)){

        dataTemp = data;


    }


});

如您所见,我使用 if 条件来检查该行是否为整数。但是当我使用腻子执行此操作时,控制台回复我以下内容:

图片:腻子输出

/home/pi/indigo-parking.js:24
        if(data === parseInt(data,10)){
        ^^

SyntaxError: Unexpected token if

所以我想知道任何人都可以帮助我完成这个。如果您有任何想法/解决方案,请与我分享。(我在下面包含了完整的代码......你可以参考它以获得更好的主意)

树莓派的完整代码:

//indigo parking data transfer
var webSocketUrl = "wss://api.artik.cloud/v1.1/websocket?ack=true";
var device_id = "861b8f68ff30439288d755b5e7a74374"; // Indigo parking DEVICE ID
var device_token = "0f8681a1bd624624b6d4841358f323c2"; //Indigo parking DEVICE TOKEN
// import websocket module
var WebSocket = require('ws');
var isWebSocketReady = false;
var data="";
var dataTemp="";
var ws = null;
// import serialport module
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var Readline = serialport.parsers.Readline
//const port = new SerialPort('/dev/tty-usbserial1')

var sp = new serialport("/dev/ttyACM0", { //for serial communication with arduino 
    //baudrate: 9600,  
    baudRate: 9600,
// we are using UNO so baudrate is 9600, you might need to change according to your model
 //parser: serialport.parsers.readline("\n")
 parser: new Readline("\r\n") 

    if(data === parseInt(data,10)){

        dataTemp = data;


    }


});


var parking_state=0;// variable to check for parking state_gate
// this is for demo purpose only


/**
 * Gets the current time in millis
 */
function getTimeMillis(){
    return parseInt(Date.now().toString());
}

/**
 * Create a /websocket connection and setup GPIO pin
 */
function start() {
    //Create the WebSocket connection
    isWebSocketReady = false;
    ws = new WebSocket(webSocketUrl);
    ws.on('open', function() {
        console.log("WebSocket connection is open ....");
    // after creating connection you have to register with your Authorization information
        register();
    });
    ws.on('message', function(dataTemp) {
      //this loop is called whenever the client sends some message
         handleRcvMsg(dataTemp); //data is received to the function handleRcvMsg()
    });
    ws.on('close', function() {
        console.log("WebSocket connection is closed ....");

    });      

}

/**
 * Sends a register message to /websocket endpoint
 */
//Client will only work when device gets registered from here
function register(){
    console.log("Registering device on the WebSocket connection");
    try{
        var registerMessage = '{"type":"register", "sdid":"'+device_id+'", "Authorization":"bearer '+device_token+'", "cid":"'+getTimeMillis()+'"}';
        console.log('Sending register message ' + registerMessage + '\n');
        ws.send(registerMessage, {mask: true});
        isWebSocketReady = true;
    }
    catch (e) {
        console.error('Failed to register messages. Error in registering message: ' + e.toString());
    }    
}


//data after receiving is sent here for processing
function handleRcvMsg(msg){
    var msgObj = JSON.parse(msg);
    if (msgObj.type != "action") return; //Early return;

    var actions = msgObj.dataTemp.actions;
    var actionName = actions[0].name; //assume that there is only one action in actions
    console.log("The received action is " + actionName);

    //you must know your registered actions in order to perform accordinlgy
    // we will not receive any action in our case
    if (actionName.toLowerCase() == "parking_state") 
    { 
       // your code here 
    }
    else {
         //this loop executes if some unregistered action is received
         //so you must register every action in cloud
        console.log('Do nothing since receiving unrecognized action ' + actionName);
        return;
    }

}



/**
 * Send one message to ARTIK Cloud
 */
//This function is responsible for sending commands to cloud
function sendStateToArtikCloud(parking){
    try{
        ts = ', "ts": '+getTimeMillis();
        var dataTemp = {
            "indigolot": parking
//setting the parking value from argument to our cloud variable "parking"
//we will get the value from arduino
            };
        var payload = '{"sdid":"'+device_id+'"'+ts+', "data": '+JSON.stringify(dataTemp)+', "cid":"'+getTimeMillis()+'"}';
        console.log('Sending payload ' + payload + '\n');
        ws.send(payload, {mask: true});
    } catch (e) {
        console.error('Error in sending a message: ' + e.toString() +'\n');
    }    
}



function exitClosePins() {

        console.log('Exit and destroy all pins!');
        process.exit();

}


start();
//exectes every time when data is received from arduino (30sec programmed delay from arduino)
sp.on("open", function () {
    sp.on('data', function(dataTemp) {

            console.log("Serial port received data:" + dataTemp);
            //sendStateToArtikCloud(data);//parking data to artik cloud
            sendStateToArtikCloud(dataTemp);

    });
});


process.on('SIGINT', exitClosePins);
Aritra Chakraborty

这不是明显的语法错误吗?

var sp = new serialport("/dev/ttyACM0", {
    baudRate: 9600,
    parser: new Readline("\r\n") 
    if(data === parseInt(data,10)){//// this line////
        dataTemp = data;
    }
});

串行端口构造函数接受一个对象作为第二个参数。您正在if对象内编写一个子句。

不知道串口,但如果解析器接受函数,你可以在它周围包装一个函数。或者也许使用 iife

parser: (function(){
    let data = new Readline("\r\n") 
    if(data === parseInt(data,10)){
        dataTemp = data;
        return dataTemp;
    })();

或类似的东西

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试将HTML文件转换为包含套接字io的JavaScript时出现语法错误,SyntaxError:意外令牌<

来自分类Dev

尝试运行 IF EXISTS 查询时出现语法错误

来自分类Dev

Javascript:使用“标签”时出现奇怪的语法错误

来自分类Dev

尝试加入Access时出现语法错误

来自分类Dev

尝试学习循环时出现Java语法错误

来自分类Dev

尝试从MySql提取数据时出现语法错误

来自分类Dev

尝试在mysql中创建过程时出现语法错误

来自分类Dev

尝试检索主键时出现SQL语法错误

来自分类Dev

OpenLDAP:尝试添加LDIF时出现无效的语法错误

来自分类Dev

尝试动态编写搜索查询时出现语法错误

来自分类Dev

尝试更新数值时出现语法错误(MySQL)

来自分类Dev

尝试从Arelle模块导入Cntlr时出现语法错误

来自分类Dev

尝试使用 postgres INSERT INTO 表时出现语法错误

来自分类Dev

尝试使用支付墙示例时出现语法错误

来自分类Dev

尝试创建类型时出现 Postgresql 语法错误

来自分类Dev

尝试使用归纳谓词时出现语法错误

来自分类Dev

从Jenkins运行Python脚本时出现语法错误

来自分类Dev

运行grunt任务时出现grunt语法错误问题

来自分类Dev

从Java运行DELETE时出现SQL语法错误

来自分类Dev

运行make时出现问题-语法错误:“(”意外

来自分类Dev

在 psql 中运行 SQL 脚本时出现语法错误

来自分类Dev

运行脚本时出现sql语法错误

来自分类Dev

每当我尝试编译javascript代码时,我都会收到语法错误

来自分类Dev

尝试运行龙卷风main.py时出现语法错误

来自分类Dev

尝试从PyCharm运行远程解释器的调试配置时出现语法错误

来自分类Dev

尝试运行龙卷风main.py时出现语法错误

来自分类Dev

在shell脚本中尝试在循环中运行awk时出现“语法错误:循环变量无效”

来自分类Dev

尝试在sql中声明变量并使用if-else语句时出现语法错误。-“ VARCHAR”或附近的语法错误

来自分类Dev

将Razor变量分配给Javascript变量时出现Javascript语法错误

Related 相关文章

  1. 1

    尝试将HTML文件转换为包含套接字io的JavaScript时出现语法错误,SyntaxError:意外令牌<

  2. 2

    尝试运行 IF EXISTS 查询时出现语法错误

  3. 3

    Javascript:使用“标签”时出现奇怪的语法错误

  4. 4

    尝试加入Access时出现语法错误

  5. 5

    尝试学习循环时出现Java语法错误

  6. 6

    尝试从MySql提取数据时出现语法错误

  7. 7

    尝试在mysql中创建过程时出现语法错误

  8. 8

    尝试检索主键时出现SQL语法错误

  9. 9

    OpenLDAP:尝试添加LDIF时出现无效的语法错误

  10. 10

    尝试动态编写搜索查询时出现语法错误

  11. 11

    尝试更新数值时出现语法错误(MySQL)

  12. 12

    尝试从Arelle模块导入Cntlr时出现语法错误

  13. 13

    尝试使用 postgres INSERT INTO 表时出现语法错误

  14. 14

    尝试使用支付墙示例时出现语法错误

  15. 15

    尝试创建类型时出现 Postgresql 语法错误

  16. 16

    尝试使用归纳谓词时出现语法错误

  17. 17

    从Jenkins运行Python脚本时出现语法错误

  18. 18

    运行grunt任务时出现grunt语法错误问题

  19. 19

    从Java运行DELETE时出现SQL语法错误

  20. 20

    运行make时出现问题-语法错误:“(”意外

  21. 21

    在 psql 中运行 SQL 脚本时出现语法错误

  22. 22

    运行脚本时出现sql语法错误

  23. 23

    每当我尝试编译javascript代码时,我都会收到语法错误

  24. 24

    尝试运行龙卷风main.py时出现语法错误

  25. 25

    尝试从PyCharm运行远程解释器的调试配置时出现语法错误

  26. 26

    尝试运行龙卷风main.py时出现语法错误

  27. 27

    在shell脚本中尝试在循环中运行awk时出现“语法错误:循环变量无效”

  28. 28

    尝试在sql中声明变量并使用if-else语句时出现语法错误。-“ VARCHAR”或附近的语法错误

  29. 29

    将Razor变量分配给Javascript变量时出现Javascript语法错误

热门标签

归档