30/11/2009, 09:57
|
| | Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 15 años, 1 mes Puntos: 0 | |
Respuesta: pasar char to int He realizado un programa que me permite leer el puerto serie, pero me muestra los datos como tipo char y quiero que me los muestre como enteros. He estado probando vuestras soluciones pero ninguna me ha funcionado(o no he sabido funcionarla)
Pego el código del programa por si a alguien se le ocurre una posible solución para que la variable sResult me salga como hexadecimal(o como mucho en decimal).
Muchas gracias!
int main(int argc, char **argv) {
int result;
char sResult[254]; //variable que contendra lo leido a traves del puerto
//Abro puerto RS232
fd = open("/dev/ttyM0", O_RDONLY| O_NOCTTY | O_NDELAY); //Creo socket para solo lectura | | no bloqueante, si se quiere abrir el socket de lectura y escritura cambiar O_RDONLY, por O_RDWR
if (fd == -1) { //Si hay error al abrir
perror("open_port: Unable to open /dev/ttyM0 - ");
return 1;
} else {
fcntl(fd, F_SETFL, 0);
}
printf("baud=%d\n", getbaud(fd)); //imprimo la velocidad del puerto en badios por defecto
initport(fd); //inicializo el puerto
printf("baud=%d\n", getbaud(fd)); //imprimo la velocidad en baudios del puerto despues de realizar la inicializaci�n
//Codigo para escribir datos a traves del puerto RS232, como no queremos escribir, lo comento
/*char sCmd[254];
sCmd[0] = 0x41;
sCmd[1] = 0x42;
sCmd[2] = 0x43;
sCmd[3] = 0x00;
if (!writeport(fd, sCmd)) {
printf("write failed\n");
close(fd);
return 1;
}
printf("written:%s\n", sCmd);*/
do{
usleep(5000000); //Tiempo a esperar como maximo para leer un dato del puerto
fcntl(fd, F_SETFL, FNDELAY); // no bloqueo el puerto serie para letura
result = readport(fd,sResult);
if (!result) { //sino se lee nada del puerto
printf("FALLO DE LECTURA\n");
close(fd);
return 1;
}
//printf("contenido del puerto=%s\n", sResult); //imprimo el contenido leido
}while (result); //Repito operacion leer mientras no haya error
close(fd); //cierro el puerto
return 0;
} |