这是我的代码
var webSocketUrl = "wss://api.artik.cloud/v1.1/websocket?ack=true";
var device_id = "########################"; // DEVICE ID
var device_token = "#####################"; // DEVICE TOKEN
// require websocket module to connect
// execute following two commands to your pi's terminal
// sudo apt-get update
// npm install websocket
var WebSocket = require('ws');
var isWebSocketReady = false;
var data="";
var ws = null;
// require serialport module to raspberry pi
// execute following command to terminal
// npm install serialport
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", { //for serial communication with
arduino
baudrate: 9600,
// we are using UNO so baudrate is 9600, you might need to change according
to your model
parser: serialport.parsers.readline("\n")
});
但是在我运行之后我得到了一个像这样的错误
/home/pi/parking.js:21
parser: serialport.parsers.readline("\n")
^
TypeError: serialport.parsers.readline is not a function
at Object.<anonymous> (/home/pi/rainbow-parking.js:21:32)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:140:18)
at node.js:1043:3
任何人都可以帮我解决这个问题。我尝试了很多。我这个问题是我的nodejs和npm版本问题。但不确定。
答案 0 :(得分:0)
您使用的是错误的变量名称。而不是
serialport.parsers.readline
使用
Serialport.parsers.readline
答案 1 :(得分:0)
我可以看到您使用的已经很老了,请查看文档https://node-serialport.github.io/node-serialport/global.html#Parsers您的代码使用它们的方式非常陈旧。
替换代码的这一部分
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", {
//for serial communication with arduino
baudrate: 9600,
// we are using UNO so baudrate is 9600, you might need to change according to your model
parser: serialport.parsers.readline("\n")
});
使用下面提到的代码
const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const port = new SerialPort("/dev/ttyACM0",{
baudRate: 9600,
parser: new Readline("\n")
});
答案 2 :(得分:0)
好的。我找到了解决此问题的方法。问题是我的npm版本和串行端口版本彼此不匹配。轻松避免此问题更新相同的两个版本。谢谢大家的帮助