Ver Mensaje Individual
  #1  
Antiguo 23-03-2017
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Reputación: 21
REHome Va por buen camino
Cambiar este código C++

Hola:

El programa que quiero es:

1. Si pulso un número 1 o un 2 en C++, envía un mensaje a Aduino, luego Arduino le devuelve un mensaje.

2. Si pulso otro número que no está en el Switch Case, te salta el mensaje Default inficando que solo hay dos opciones para pulsar, tecla 1 y 2. Si pulso un 3 o otro valor que no existe, se queda elprograma C++ como esperando y no hace nada.

3. Si no se pulsa nada desde C++, Arduino tiene un botón, que al pulsarlo, envía mensajes llamado, ON o un OFF, C++ debe leer, nunca los lee.

Uso el IDE de Visual Studio 2017 en Win32 consola.

El código C++ que debo mejorar y no se como hacerlo lo que pido arriba:
Código:
// Para crear conexión con los puertos COM1 - COM9.
// Serial* Arduino = new Serial("COM7");

// Para crear conexión con los puertos COM10 en adelante.
// Serial* Arduino = new Serial("\\\\.\\COM10");

#include <iostream>
#include <fstream>
#include <Windows.h>
#include "SerialClass.h"
using namespace std;

void main()
{
   // Título de la ventana
   SetConsoleTitle("Control Led Arduino.");

   // Puerto serie.
   Serial* Puerto = new Serial("COM4");

   // Comandos para Arduino.
   char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
   char Luz_OFF[] = "Luz_OFF";
   char lectura[50] = "\0"; // Guardan datos de entrada del puerto.

   int opc; // Guarda un 1 o 2 tipo entero queintroduces desde la consola.

   while (Puerto->IsConnected())
   {
      cout << endl; // Dejamos un retorno.
      cout << "Introduzca la opcion deseada: " << endl << endl; // Muestra texto en pantalla.

      cin >> opc; // Aquí introduces un número, el 1 o el 2.

      switch (opc) // Espera recibir un 1 o un 2.
      {
      case 1:
         // Encener luz.
         cout << "Enviando: " << Luz_ON << endl; // Muestra en pantalla textos.
         Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
         break;

      case 2:
         // Apagar luz.
         cout << "Enviando: " << Luz_OFF << endl;
         Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
         break;

      default: // Si haz pulsado otro número distinto del 1 y 2, muestra
         cout << "Puse del 1 al 2."; // este mensaje.
      }


      while (true) {
         int n = Puerto->ReadData(lectura, 49);
         if (n > 0) {
            lectura[n + 1] = '\0';
            break;
         }
         Sleep(1);
      }
      cout << "Recibido: " << lectura << endl;
      cout << "-------------------" << endl;
      }
}
Su librería es esta.
https://github.com/Gmatarrubia/LibreriasTutoriales

¿Alguna ayuda?

Llevo dos semanas con esto, ajjaa ajaj ja jaja. Al menos he logrado enviar y recibir algo, pero no sale como quiero.

Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita