Marvin_G
Junior Member level 3
- Joined
- Nov 21, 2011
- Messages
- 28
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Activity points
- 1,485
Hello guys, i'm trying to send input and receive output from a fingeprint device. I have this code. i know how to send the command as you see in below code but i don't know how to receive data from the device. This is what i actually want to do, after sending the command, i need to wait between 1-5 sec because the device will give output at random time between 1-5sec (this actually time taken by user to input their fingerprint. max 5sec.). Kinda weak in C, hope anyone could help. Thanks in advanced.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <sys/signal.h>
#include <errno.h>
#include <termios.h>
#define FALSE 0
#define TRUE 1
volatile int STOP=FALSE;
int wait_flag=TRUE; /* TRUE while no signal received */
void signal_handler_IO (int status); /* definition of signal handler */
int n;
int fd, res;
int connected;
struct termios termAttr;
struct sigaction saio;
char buf[255];
int main(int argc, char *argv[])
{
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
perror("open_port: Unable to open /dev/ttyO1\n");
exit(1);
}
saio.sa_handler = signal_handler_IO;
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction(SIGIO,&saio,NULL);
fcntl(fd, F_SETFL, FNDELAY);
fcntl(fd, F_SETOWN, getpid());
fcntl(fd, F_SETFL, O_ASYNC ); /**<<<<<<------This line made it work.**/
tcgetattr(fd,&termAttr);
//baudRate = B115200; /* Not needed */
cfsetispeed(&termAttr,B115200);
cfsetospeed(&termAttr,B115200);
termAttr.c_cflag &= ~PARENB;
termAttr.c_cflag &= ~CSTOPB;
termAttr.c_cflag &= ~CSIZE;
termAttr.c_cflag |= CS8;
termAttr.c_cflag |= (CLOCAL | CREAD);
termAttr.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
termAttr.c_iflag &= ~(IXON | IXOFF | IXANY);
termAttr.c_oflag &= ~OPOST;
tcsetattr(fd,TCSANOW,&termAttr);
printf("UART1 configured....\n");
connected = 1;
while(connected == 1){
// some code
write(fd,"\xF5\x01\x00\x01\x03\x00\x03\xF5",8);
/*Here suppose to read output from device*/
}
}
close(fd);
exit(0);
}
void signal_handler_IO (int status)
{
printf("received data from UART.\n");
}