我有一个由微处理器组成的系统,它通过串口连接到树莓派。raspberry pi使用node-serialport运行node.js,以提供基于web的用户界面。
当我尝试通过web接口写入串口时,在收到微控制器的回复(10秒到几分钟)之前,我经常遇到很长的延迟,这意味着serialport.write不知何故被延迟了。(我没有看到错误,端口也没有关闭。)在第6次串口写入之后,这种情况会持续发生。如果我重新加载浏览器,它将再次正常工作,直到第7个请求。
这是在node.js中打开数据并将数据推送到串口的例程:
var myPort = new SerialPort("/dev/ttyAM
我正在为我的树莓Pi开发一个node.js应用程序,它从它的串口接收数据,但是我不直接在它上开发应用程序,而是使用我的主计算机。所以我的app.js中有这样的代码:
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", {
parser: serialport.parsers.readline("\n")
});
sp.on("data"
我有两个脚本--一个是python脚本,另一个是node脚本。python脚本在无限循环中运行,并读取串行数据。一旦它接收到串行数据,它就必须将其传递给node.js scipt,以便在节点服务器中进行处理。
我想过使用node.js child_process模块从python脚本中读取数据,但由于python脚本是一个无限循环,所以它不会向节点脚本返回任何数据。有谁能告诉我如何解决这个问题?
Python脚本:
import serial
ser = serial.Serial('COM10', 9600, timeout =1)
while 1 :
print s
我想以有序的方式运行这三个操作:
打开串口
倾听任何变化
通过串口发送命令
问题在于节点js的异步性,有时在端口开始侦听之前发送数据。因此,这些数据就丢失了。这是我的代码样本。我该如何解决这个问题?
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("COM27", {
baudrate: 57600
}, false); // this is the openImmediately flag [default is true
我正在做一个需要从串口实时采集数据的项目.数据流非常快,它基本上是一个实时测量点的列表。我正在与一起工作,以处理通信部分,与客户端进行通信(包含应绘制点的图表的网页)。当我每秒发送1点时,它工作得很好,但是当数据流非常快(比如1点/10 is )时,node.js会显示这个错误:
MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏。添加了11个数据侦听器。使用emitter.setMaxListeners()增加限制
我的问题是:是否有一个解决方案来处理如此快速的实时流?我的第一个想法是使用生产者消费者算法和队列从串口收集数据。我想知道
我正在开发一个称重应用程序,它读取串口数据并显示在客户端上。我得到了读取串口的NodeJS脚本,
我的serial.js,这给了我称重机的重量,就像流一样
const SerialPort = require("serialport");
const ReadLine = SerialPort.parsers.Readline;
//Defining the Serial port
var port = new SerialPort("COM1", {
baudRate:9600,
});
//the serial port parser
cons