By liran bh | 5/16/2016 | Linux User Space

Using UART Asynchronously

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
 
int h;
 
void async(int s)
{
        char c;
        int x = 0;
        printf("signal\n"); fflush(stdout);
        /*while (read(h, &c, 1) == 1) x++; */
         read(h, &c, 1);
        printf("read: %c\n", c); /* fflush(stdout); */
        if (fcntl(h, F_SETFL, O_NONBLOCK) < 0) perror("fcntl"), exit(1);
        if (fcntl(h, F_SETFL, O_ASYNC | O_NONBLOCK) < 0) perror("fcntl"), exit(1);
        sleep(1);
}
 
int main(void)
{
        h = open("/dev/tty", O_RDONLY | O_NONBLOCK);
        if (h < 0) perror("open"), exit(1);
        signal(SIGIO, async);
        if (fcntl(h, F_SETFL, O_ASYNC | O_NONBLOCK) < 0) perror("fcntl"), exit(1);
        while (1) sleep(1);
}

{{CommentsModel.TotalCount}} Comments

Your Comment

{{CommentsModel.Message}}

Recent Stories

Top DiscoverSDK Experts

User photo
3355
Ashton Torrence
Web and Windows developer
GUI | Web and 11 more
View Profile
User photo
3220
Mendy Bennett
Experienced with Ad network & Ad servers.
Mobile | Ad Networks and 1 more
View Profile
User photo
3060
Karen Fitzgerald
7 years in Cross-Platform development.
Mobile | Cross Platform Frameworks
View Profile
Show All
X

Compare Products

Select up to three two products to compare by clicking on the compare icon () of each product.

{{compareToolModel.Error}}

Now comparing:

{{product.ProductName | createSubstring:25}} X
Compare Now