Мне нужно установить последовательное соединение между моим компьютером и моим Arduino.Я нашел класс, который делает последовательное соединение и работает без каких-либо ошибок.Я написал свой код в arduino (чтение из порта 2 в arduino и запись его в выходной поток и получение символа из C ++):
int PButton=2;
int Led=13;
unsigned long start,finished,elapsed;
void setup() {
Serial.begin(9600); //begins the Serial Connection.
pinMode(PButton, INPUT_PULLUP);
pinMode(Led,OUTPUT);
digitalWrite(Led,LOW);
Serial.println("Is the video already started? ""y/n""...\n");
start=millis();
}
void loop() {
if(Serial.available()>0){
char letter=Serial.read();
if(letter=='y'){
digitalWrite(13,HIGH);
Serial.println("The video is started!\n");
}
else if(letter=='n'){
digitalWrite(13,LOW);
Serial.println("The Video is still not started! \n");
}
else
Serial.println("Enter a valid Answer please!\n");
}
int buttonState=digitalRead(PButton); //read the input pin
if(buttonState==LOW){
Serial.println(" the pushbutton is pressed!");
finished=millis();
elapsed=finished-start;
Serial.print(elapsed);
}
}
Код работает как отдельный и делаетправильный вывод в последовательном мониторе.Проблема в том, что я не очень опытен в C ++, и меня смущает, как написать основную функцию для чтения и записи в C ++ и обратно в Arduino и наоборот.Я нашел некоторые коды в stackoverflow, но я не могу настроить их по своему усмотрению.
Это мой код C ++ (у меня уже есть класс последовательного соединения).Я не уверен, какую строку комментировать, и если она вообще логична!
// SerialCommunication.cpp : Definiert den Einstiegspunkt für die
Konsolenanwendung.
//This code snippet will help you to read data from arduino
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include "SerialPort.h"
//using namespace std;
//using std::cin;
//using std::cout;
//using std::endl;
//String for getting the Output from Arduino
char output[MAX_DATA_LENGTH];
//Portname must contain these backslashes
char *port_name = "\\\\.\\COM5";
//const unsigned int bufSize =255;
//String for incoming data
char incomingData[MAX_DATA_LENGTH];
int main()
{
SerialPort arduino(port_name);
if (arduino.isConnected())
std::cout << "Connection Established" << std::endl;
else
std::cout << "ERROR, check port!";
while (arduino.isConnected()) {
//std::cout << "Is the video Started?Yes or No: \n";
//std::string input_string = "Blabla\n";
char answer;
std::cin >> answer;
//Writing answer to arduino
arduino.writeSerialPort( (answer* ), MAX_DATA_LENGTH);
//Getting reply from arduino
arduino.readSerialPort(output, MAX_DATA_LENGTH);
//printing the output
puts(output);
}
/*while (arduino.isConnected()) {
//Check if data has been read or not
int read_result = arduino.readSerialPort(incomingData, bufSize);
//prints out data
puts(incomingData);
//wait a bit
Sleep(10);
}*/
}