Arduino C++ много времени связи искажены
Я использую библиотеку, которую нашел на https://github.com/manashmndl/SerialPort Я пытаюсь использовать свой компьютер, чтобы поздороваться с Arduino, а затем получить ту же строку, которую я отправляю из Arduino. вот мой код с ++
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include "SerialPort.h"
using namespace std;
//String for getting the output from Arduino
char output[MAX_DATA_LENGTH];
/*Portname must contain these backslashes, and remember to
replace the following com port*/
const char *port_name = "\\\\.\\COM4";
//String for incoming data
char incomingData[MAX_DATA_LENGTH];
int main()
{
SerialPort arduino(port_name);
if (arduino.isConnected())
cout << "Connection Established" << endl;
else
cout << "ERROR, check port name";
while (arduino.isConnected()) {
Sleep(1000);
cout << "Write something: \n";
std::string input_string = "Hello";
//Getting input
//getline(cin, input_string);
cout << input_string << endl;
//Creating a c string
char *c_string = new char[input_string.size() + 1];
//copying the std::string to c string
std::copy(input_string.begin(), input_string.end(), c_string);
//Adding the delimiter
c_string[input_string.size()] = '\n';
//Writing string to arduino
arduino.writeSerialPort(c_string, MAX_DATA_LENGTH);
//Getting reply from arduino
arduino.readSerialPort(output, MAX_DATA_LENGTH);
//printing the output
puts(output);
//freeing c_string memory
delete[] c_string;
}
}
и код Arduino
#include <Servo.h>
#define BAUD 9600
//led
#define led 13
//macro for on/off
#define on (digitalWrite(led, HIGH))
#define off (digitalWrite(led, LOW))
void setup() {
Serial.begin(BAUD);
pinMode(led, OUTPUT);
}
void loop() {
String input;
//If any input is detected in arduino
if (Serial.available() > 0) {
on;
//read the whole string until '\n' delimiter is read
input = Serial.readStringUntil('\n');
//while (Serial.available() > 0)
// Serial.read();
Serial.println(input);
Serial.flush();
off;
}
}
Я хотел бы получить что-то вроде
Connection Established
Write something:
Hello
Hello
Write something:
Hello
Hello
Write something:
Hello
Hello
Write something:
Hello
Hello
Write something:
Hello
Hello
Write something:
Hello
Hello
но я на самом деле получаю
Connection Established
Write something:
Hello
Hello
Write something:
Hello
楥楥楥q|M爺
Write something:
Hello
?
Write something:
Hello
楥楥楥C|爺
Write something:
Hello
楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥楥|C爺
Write something:
Hello
楥楥楥q|M爺
с первого выхода возникает какая-то проблема.
Я что-то пропустил или мне нужно что-то сделать, прежде чем я прочитал новую форму ввода Arduino?
Большое спасибо за чтение этого вопроса.
1 ответ
Вы посылаете больше, чем "привет" в Arduino, потому что вы отправляете символы MAX_DATA_LENGTH, которые в основном не определены. (по крайней мере, те, которые следуют за первыми шестью символами "привет \n")