Programación General > C/C++
Leer de teclado
(1/1)
Zakro:
Hola, tengo un pequeño problema: estoy haciendo un programa que se comunica con el puerto serie; para ello envía una instrucción que se le introduce por teclado. El caso es que cuando llega a la lectura de teclado pasa una de estas dos cosas:
1- Si no hay nada en el puerto serie, lee de teclado con normalidad.
2- Si tengo conectado al puerto serie ( en este caso es un sensor de posicion, que manda datos continuamente), se salta la linea en la que tiene que leer por teclado y el programa termina.
Mi impresión es que está leyendo del puerto serie en vez de por teclado; pero uso "cin" que si no estoy equivocado lee por teclado,¿no?
--- Código: C++ ---#include <iostream>#include <SerialPort.h>#include <unistd.h> //g++ -lserial -o pruebaPuerto pruebaPuerto.cpp using namespace std; string entrada; int main(int argc, char **argv){ //Error si param < 2 if (argc<2) { cerr << "Falta el puerto serie a abrir" << endl; return 1; } //Se crea el puerto serie SerialPort puerto(argv[1]); try { //Se abre el puerto puerto.Open(SerialPort::BAUD_115200, SerialPort::CHAR_SIZE_8, SerialPort::PARITY_NONE, SerialPort::STOP_BITS_1, SerialPort::FLOW_CONTROL_NONE); } //Error al abrir el puerto catch (SerialPort::OpenFailed E) { cerr << "Error abriendo el puerto" << endl; return 1; } //Se lee por pantalla el parametro a enviar cout << "Puerto abierto con éxito" << endl; cout << "Escribe lo que quieres enviar" << endl; cin >> entrada; //Se manda el parametro por el puerto puerto.Write(entrada); puerto.Close;}
m0skit0:
cin lee de la entrada estándar definida por el SO, no del teclado (aunque normalmente y por defecto el teclado es la entrada estándar), y puede ser modificada para apuntar a cualquier flujo de datos. Lo mismo pasa con cout.
Zakro:
¿Entonces tengo que hacer algo para que lea de teclado? Porque no estoy cambiando el comportamiento por defecto en ningún lado,¿no?
m0skit0:
Debería leer del teclado. ¿Lo has depurado a ver?
Navegación
Ir a la versión completa