Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - JaviOKxD

#1
Programación C/C++ / Ayuda con programa en C++
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:

#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.