Hace poco postee una pregunta sobre como escribir en el puerto serie a traves de C.
Esto ya lo logre, mi problema ahora es el siguiente:
Tengo conectada una interface al puerto serie de mi pc. Al enviarle determinados datos a esta interface, esta me los devuelve para confirmarme que llegaron. El problema es que no puedo leer esos datos. Aqui les dejo el codigo q uso para hacer todo esto (resumido):
Espero puedan ayudarme!, Saludos y gracias!
Código:
La interface viene con un programa de ejemplo escrito en VB, utiliza el ocx MSComm.int main(int argc, char *argv[]) { fd = open(INTERFACE_DEVICE, O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { printf("Unable to open device %s... ABORTING (10)\n", INTERFACE_DEVICE); return 1; } else { printf("Succesfully connected to device...\n"); fcntl(fd, F_SETFL, 0); } initport(fd); printf("Baud: %d\n", getbaud(fd)); char sCmd[254]; int p1, p2, p3, p4; p1 = atoi(argv[1]); p2 = atoi(argv[2]); p3 = atoi(argv[3]); if(atoi(argv[4])) p4 = atoi(argv[4]); sCmd[0] = p1; sCmd[1] = p2; sCmd[2] = p3; if(p4) sCmd[3] = p4; if (!writeport(fd, sCmd)) { printf("Write failed... ABORTING (11)\n"); close(fd); return 1; }else printf("Sending: %d-%d-%d-%d\n", p1, p2, p3, p4); usleep(100000); char sResult[254]; //fcntl(fd, F_SETFL, FNDELAY); // don't block serial read if (!readport(fd,sResult)) { printf("read failed\n"); close(fd); return 1; } printf("readport=%s\n", sResult); close(fd); return 0; } int readport(int fd, char *result) { int iIn = read(fd, result, 254); result[iIn-1] = 0x00; if (iIn < 0) { if (errno == EAGAIN) { printf("SERIAL EAGAIN ERROR %s \n",strerror(errno)); return 0; } else { printf("SERIAL read error %d %s\n", errno, strerror(errno)); return 0; } } return 1; }
Tambien trae un txt donde explica que hay q desactivar la opcion de buffers desde windows... esto que necesito hacer yo es bajo linux, sera que tengo q configurar esto tambien en linux? y como seria?