elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con programa en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con programa en C++  (Leído 1,136 veces)
JaviOKxD

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con programa en C++
« en: 8 Febrero 2018, 17:41 pm »

Buenas, estoy haciendo un proyecto para la clase de programación en el que tenemos que enviar un fichero por el puerto de comunicaciones y que el robot haga los movimientos del fichero. El programa está hecho y funcionando pero hay un problema: la posición 0 y el servo 0 no se pueden mandar. Aquí adjunto el programa:
Código:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <windows.h>
#include "rs232.h"
#include <string.h>
#include <string>
#include <sstream>
using namespace std;
 
ifstream fichero;
int main(){
    int servo, posicion,syncbyte = 255;
    char s,ser,pos,pos2,pos3, p, sbyte = (char) syncbyte;
    string nombre, auxiliar;
    cout << "Introduce el nombre del fichero: ";
    getline(cin, nombre);
    fichero.open(nombre, ios::in);
    if (fichero.is_open()){
    while (!fichero.eof()){
    getline(fichero, auxiliar);
    ser = auxiliar[2];
    servo = ser - '0';
    if (servo >4){
        servo = 3;
    }
    if (servo <0){
        servo = 0;
    }
 
    pos = auxiliar[4];
    pos2 = auxiliar[5];
    pos3= auxiliar[6];
    posicion = (pos - '0')*100 +(pos2 - '0')*10 + (pos3 - '0');
    if (posicion <0){
        posicion= 0;
    }
    if (posicion >255){
       posicion = 254;
    }
    cout <<servo << "," <<posicion<<endl;
    s = (char) servo;
    p = (char) posicion;
 
    ostringstream suma;
    suma << sbyte << s << p;
    string todo = suma.str();
    //cout << todo<<endl;
    const char* lavihen = todo.c_str();
RS232_OpenComport(0, 9600, "8N1");
RS232_cputs(0, lavihen);
RS232_CloseComport(0);
    }
}else{
    cout << "ERROR";
}
return 0;
}
El programa consiste básicamente en coger de un fichero el servo y la posición, transformarlos de tipo integer a tipo char y enviarlo todo junto por el puerto de comunicaciones. Antes de esas dos variables hay que poner el byte de sincronización. Hasta ahí todo bien, pero a la hora de enviar un servo 0, que sería el que mueve el robot horizontalmente, <- ->, o incluso la posición 0, el programa transforma ese 0 a char y se lo envía, pero no hace nada. Si quiero enviarle las coordenadas servo 1, posición 127 quedaría del tipo :  ☺⌂, primero el byte de sincronización, luego el servo en tipo char y luego la posición en tipo char. Me gustaría saber si existe alguna otra manera para enviarle el 0 al robot y que reaccione. Muchas gracias de antemano.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON PROGRAMA
Diseño Gráfico
Luisango 1 2,461 Último mensaje 17 Abril 2005, 13:25 pm
por Sub_Cero
ayuda con mi programa
Programación Visual Basic
nitrox 2 2,362 Último mensaje 31 Julio 2005, 00:48 am
por Slasher-K
[Ayuda] ¿Cómo ejecutar otro programa desde mi programa de C#?
.NET (C#, VB.NET, ASP)
Zodiak98 1 6,181 Último mensaje 8 Diciembre 2013, 01:51 am
por Eleкtro
[AYUDA] Ayuda con NETCAT o cualquier otro programa similar
Dudas Generales
Noxware 0 2,188 Último mensaje 16 Junio 2014, 18:13 pm
por Noxware
AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Programación C/C++
EduardoSaenz 4 3,885 Último mensaje 7 Mayo 2016, 23:38 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines