Последовательное соединение Arduino - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно установить последовательное соединение между моим компьютером и моим 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);
}*/
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...