Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Arduino和nodejs脚本之间的通信出现未知错误_Node.js_Arduino - Fatal编程技术网

Node.js Arduino和nodejs脚本之间的通信出现未知错误

Node.js Arduino和nodejs脚本之间的通信出现未知错误,node.js,arduino,Node.js,Arduino,我试图从nodejs脚本向Arduino发送一个两个字母的字符串,例如cc,我没有收到任何错误,但是Arduino没有以它应该的方式响应 RX指示灯闪烁,因此我认为我在Arduino一侧做错了什么,但我对此一无所知 我跟在后面 Arduino代码: // Motor A connections int enA = 9; int in1 = 8; int in2 = 7; // Motor B connections int enB = 3; int in3 = 5; int in4 = 4;

我试图从nodejs脚本向Arduino发送一个两个字母的字符串,例如cc,我没有收到任何错误,但是Arduino没有以它应该的方式响应

RX指示灯闪烁,因此我认为我在Arduino一侧做错了什么,但我对此一无所知

我跟在后面

Arduino代码:


// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;
String var1;
const byte DATA_MAX_SIZE = 32;
char data[DATA_MAX_SIZE];   // an array to store the received data

void setup()
{
  // Set all the motor control pins to outputs
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  // Turn off motors - Initial state
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void receiveData() {
  static char endMarker = '\n'; // message separator
  char receivedChar;     // read char from serial port
  int ndx = 0;          // current index of data buffer  // clean data buffer
  memset(data, 32, sizeof(data));  // read while we have data available and we are
  // still receiving the same message.
  while (Serial.available() > 0) {
    receivedChar = Serial.read();    if (receivedChar == endMarker) {
      data[ndx] = '\0'; // end current message
      return;
    }    // looks like a valid message char, so append it and
    // increment our index
    data[ndx] = receivedChar;
    ndx++;    
    if (ndx >= DATA_MAX_SIZE) {
      break;
    }
  } 
  memset(data, 32, sizeof(data));
}
void loop()
{
  analogWrite(enA, 255);
  analogWrite(enB, 255);
  receiveData();
  if (data[0] == 'c') { //cc
    if (data[1] == 'c') {
      digitalWrite(in3, LOW);
      digitalWrite(in4, LOW);
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);
    }
    else if (data[1] == 'o') { //co
      digitalWrite(in3, LOW);
      digitalWrite(in4, LOW);
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);
    }
  }
  else if (data[0] == 'w') { //wu
    if (data[1] == 'u') {
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      digitalWrite(in3, HIGH);
      digitalWrite(in4, LOW);
    }
    if (data[1] == 'd') { //wd
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      digitalWrite(in3, LOW);
      digitalWrite(in4, HIGH);
    }
  }

  else {
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
  }
}
Node.js代码:

const SerialPort=需要“SerialPort”; const Readline=require'@serialport/parser Readline';const port=new SerialPort'COM3',{baudRate:9600}; const parser=port.pipenew Readline{分隔符:'\n'}; var stdin=process.stdin; stdin.setRawMode true; 标准简历; stdin.setEncoding'utf8'; //将任何数据输入stdin 标准“数据”,功能键{ //其他if/ELSE 如果键=='j'{ port.write'cc\n',err=>{ 如果出错{ 返回console.log'Error on write:',err.message; } console.log'messagewrited'; }; } 如果键=='l'{ port.write'oc\n',err=>{ 如果出错{ 返回console.log'Error on write:',err.message; } console.log'messagewrited'; }; } 如果key=='i'{ port.write'wu\n',err=>{ 如果出错{ 返回console.log'Error on write:',err.message; } console.log'messagewrited'; }; } 如果键==“k”{ port.write'wd\n',err=>{ 如果出错{ 返回console.log'Error on write:',err.message; } console.log'messagewrited'; }; } 如果键=='\u0003'{process.exit;} };
您错过了您所说的教程的第一行代码:

 Serial.begin(9600); // Starts the serial communication

我不知道你说的RX LED是什么意思,但它闪烁是有意义的,因为你正在从计算机发送数据,但由于端口未在Arduino代码上初始化,因此micro未侦听数据,因此从未收到任何信息。

请将Arduino连接到PC,并在代码中添加一些调试打印,或者,您可以提供预期行为和实际行为的更具体描述吗?如果在arduino执行过程中发生错误,则led通常会闪烁,这对您的回答是有意义的。修复后一切都会好起来的是的,可能也是这样。我真的不知道,因为问题没有说明使用了什么开发板。。。