Void Selecciona_Velocidad (int8 Baudrate)
{
switch Baudrate
{
case 0: #use rs232(baud=2400,parity=N,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
case 1: #use rs232(baud=2400,parity=E,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
case 2: #use rs232(baud=2400,parity=O,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
case 3: #use rs232(baud=4800,parity=N,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
case 4: #use rs232(baud=4800,parity=E,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
case 5: #use rs232(baud=4800,parity=O,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
default: #use rs232(baud=9600,parity=E,bits=8,xmit=PIN_C6,rcv=PIN_C7,bits=8)
break;
}
}
//Constantes de los seteos de configuracion de velocidades y modos.
enum Sel_Protocolo {ModBusRTU, ModBusASCII, SerialASCII}; // 0,1 y 2 respectivamente
enum Sel_Velocidad { B9600_E_8_1, B9600_N_8_1, B9600_O_8_1, //default 9600,E,8,1
B19200_E_8_1, B19200_N_8_1, B19200_O_8_1,
B38400_E_8_1, B38400_N_8_1, B38400_O_8_1,
B57600_E_8_1, B57600_N_8_1, B57600_O_8_1};
/**************************************************************************************
Enumeracion de las diferentes velocidades elegidas para el puerto serial
***************************************************************************************/
#use rs232(baud=19200, PARITY=E, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=E81)
#use rs232(baud=19200, PARITY=O, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=O81)
#use rs232(baud=19200, PARITY=N, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=N81)
//rutina seleccion velocidad
void Elige_Velocidad_Comm (Int8 Baudrate)
{
switch (Baudrate)
{
case B9600_E_8_1: set_uart_speed(9600,E81); break;
case B9600_N_8_1: set_uart_speed(9600,N81); break;
case B9600_O_8_1: set_uart_speed(9600,O81); break;
case B19200_E_8_1: set_uart_speed(19200,E81); break;
case B19200_N_8_1: set_uart_speed(19200,N81); break;
case B19200_O_8_1: set_uart_speed(19200,O81); break;
case B38400_E_8_1: set_uart_speed(38400,E81); break;
case B38400_N_8_1: set_uart_speed(38400,N81); break;
case B38400_O_8_1: set_uart_speed(38400,O81); break;
case B57600_E_8_1: set_uart_speed(57600,E81); break;
case B57600_N_8_1: set_uart_speed(57600,N81); break;
case B57600_O_8_1: set_uart_speed(57600,O81); break;
// default:
// #use rs232(baud=57600, PARITY=E, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5)
}
} switch (Mi_Velocidad)
{
case B9600_E_8_1: fputc(modbus.trama[i],E81); break;
case B9600_N_8_1: fputc(modbus.trama[i],N81); break;
case B9600_O_8_1: fputc(modbus.trama[i],O81); break;
case B19200_E_8_1: fputc(modbus.trama[i],E81); break;
case B19200_N_8_1: fputc(modbus.trama[i],N81); break;
case B19200_O_8_1: fputc(modbus.trama[i],O81); break;
case B38400_E_8_1: fputc(modbus.trama[i],E81); break;
case B38400_N_8_1: fputc(modbus.trama[i],N81); break;
case B38400_O_8_1: fputc(modbus.trama[i],O81); break;
case B57600_E_8_1: fputc(modbus.trama[i],E81); break;
case B57600_N_8_1: fputc(modbus.trama[i],N81); break;
case B57600_O_8_1: fputc(modbus.trama[i],O81); break;
}
}
break; Para que usar la instruccion set_uart_speed() cuando antes ya se selecciono la velocidad en ambos puertos??
Es mas, esa instruccion es para la uart, mientras que el gps lo tienes en un puerto por software, eso es lo que te cuelga la comunicacion...
Creo que esta dos lineas sobran y ademas son incongruentes...Código: C
set_uart_speed(115200,GPS);Código: C
set_uart_speed(19200,HMR3400);
Hay un ejemplo de CCS que utiliza una comunicacion por hardware y otra por software, lo has probado??
O al menos lo has mirado??
tengo un problema velocidades también, por favor si me pueden ayudar.
tengo datos de entrada a 4800 baudios desde un gps, mi programa debe elegir la sentencia "$GPGLL",
guardar los datos de latitud y longitud que entrega dicha sentencia y finalmente sacar esos datos
a una velocidad de 1200 baudios.
saludos