Este es mi primer programa en C. ¡Hola Mundo! Estoy seguro de que esto no es un problema para los programadores de secundaria en estos días, pero no tenían programación cuando estaba en la escuela secundaria. :)No se puede obtener C para escribir y leer el puerto serie
Quiero escribir en un puerto serie hasta que la secuencia que escribo se me devuelva. Luego haz otras cosas. Mi código a continuación se ejecuta durante unos segundos y luego afirma ver la cadena y los extremos, incluso cuando en realidad no podría haber visto la cadena. Se comporta igual sin importar qué, obviamente tengo algo muy mal.
Sí, el dispositivo en serie/dev/gatitos es real y, desde un terminal, las cadenas repetidas por bash a/dev/gatitos se reciben (eco) en el puerto serie cuando se realiza un bucle en el puerto.
Estaría muy agradecido con cualquiera que pudiera corregir mis errores.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
int fd;
char *buff;
int open_port(void)
{
fd = open("/dev/kitens", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
perror("open_port: Unable to open /dev/kittens ");
}
else
fcntl(fd, F_SETFL, 0);
return (fd);
}
int main()
{
int wr,rd;
open_port();
char msg[]="There are mice in the wire.\r";
do
{
/* Read from the port */
fcntl(fd, F_SETFL, FNDELAY);
rd=read(fd,buff,sizeof(msg));
/* Write to the port */
wr = write(fd, msg, sizeof(msg));
printf("debugging - Wrote to port\n");
usleep(10000);
if (wr < 0) {
fputs("write() to port /dev/kittens failed!\n", stderr);
break;
}
} while (buff != msg);
if (buff=msg)
printf(buff, "String Found! Now do the work.");
/*
system("dostuff.sh);
*/
/* Close the port on exit. */
close(fd);
return 0;
}
1 para los gatitos solos! – vines
Su llamada a 'open()' utiliza '/ dev/kitens'. ¿Es eso un error tipográfico? –
Sí. Fue un error tipográfico en mi publicación. Gracias. –