Dev - C++ - Problema con servos para brazo robótico

 
Vista:
sin imagen de perfil

Problema con servos para brazo robótico

Publicado por Javier (1 intervención) el 08/02/2018 12:28:19
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#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 sincronzació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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder