gpt4 book ai didi

javascript - 串口不工作?

转载 作者:IT老高 更新时间:2023-10-28 23:20:15 25 4
gpt4 key购买 nike

我编写了一个程序,向我的 arduino 发送数据,它检测发送的内容,然后根据按下的键打开正确的引脚。

在我的 windows 计算机上使用 arduino 软件时,arduino 草图工作正常,我可以通过发送 W A S 或 D 来打开和关闭每个引脚。

通过 Node 发送时,arduino 上的 RX 灯闪烁,但没有其他 react 。

谁能帮忙?

Node.js 程序:

var httpServer = require('http').createServer(function(req, response){ /* Serve your static files */ })
httpServer.listen(8080);

var nowjs = require("now");
var everyone = nowjs.initialize(httpServer);

everyone.now.logStuff = function(msg){
console.log(msg);
}

var SerialPort = require('serialport2').SerialPort;
var assert = require('assert');

var portName;

if (process.platform == 'win32') {
portName = 'COM4';
} else if (process.platform == 'darwin') {
portName = '/dev/cu.usbserial-A800eFN5';
} else {
portName = '/dev/ttyUSB0';
}

var readData = '';
var sp = new SerialPort();

sp.on('close', function (err) {
console.log('port closed');
});

sp.on('error', function (err) {
console.error("error", err);
});

sp.on('open', function () {
console.log('port opened... Press reset on the Arduino.');
});

sp.open(portName, {
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
flowControl: false
});

everyone.now.forward = function() {
sp.write("w");
}

everyone.now.back = function() {
sp.write("s");
}

everyone.now.left = function() {
sp.write("a");
}

everyone.now.right = function() {
sp.write("d");
}

sp.on('data', function(data) {
console.log(data.toString());
});

Arduino 程序:

void setup(){
Serial.begin(9600);
Serial.write("READY");
//Set all the pins we need to output pins
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}

void loop (){
if (Serial.available() > 0) {

//read serial as a character
char ser = Serial.read();
Serial.write(ser);
//NOTE because the serial is read as "char" and not "int", the read value must be compared to character numbers
//hence the quotes around the numbers in the case statement
switch (ser) {
case 'w':
move(8);
break;
case 's':
move(9);
break;
case 'a':
move(10);
break;
case 'q':
move(10);
move(8);
break;
case 'd':
move(11);
break;
case 'e':
move(11);
move(8);
break;
}
}
}

void move(int pin){
Serial.print(pin);
digitalWrite(pin, HIGH);
delay(1);
digitalWrite(pin, LOW);
}

最佳答案

我最近涉足这个领域。当 Arduino 接收到来自 Arduino IDE 以外的大多数设备的串行通信时,它会自动重置。这就是为什么您可以从 IDE 发送但不能从 node.js 发送的原因。

我有一个 Uno,并在 Reset 和 Ground 之间放置了一个电容器。这是一个包含有关该主题的一些有用信息的页面。
祝你好运。 http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

关于javascript - 串口不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com