三、Jetson TX2下的串口通信 (Linux)------程序(采用POLLIN中断)

         感觉自己也是闲无聊,处于对stm32的执念,我一直觉得串口中断就应该是那种有一个输入中断,一个输出中断的,然后奈何才疏学浅,一直不知道怎么弄,后来查到了Jetson TX2的IO中断,发现它就是采用的检测IO的输入输出,相比于之前的SIGIO中断有一个好处:   

                SIGIO中断,串口的输入输出都会引起该中断

                 POLLIN中断,只有串口的输入才会引起,这就减少了判断

实际上最简单的方法就是查询,也就是直接在循环里面read(),  有就读取,但是这样始终都会占用时间,没有中断节省时间,POLLIN中断则会更方便。

              GPIO的中断参考下面的链接:

                https://developer.ridgerun.com/wiki/index.php/Gpio-int-test.c

               我将这个文件改装了一下,和自己写的串口中断放在一起,大家有兴趣的可以在这里下载。

 

              函数的主要部分:

             

memset((void*)fdset, 0, sizeof(fdset));
		 fdset[0].fd=my_fd;
		 fdset[0].events = POLLIN;
		 rc = poll(fdset, nfds, timeout);  
		 if (rc < 0) 
		   {
			printf("\npoll() failed!\n");
			return -1;
		   }
		USART_Send_Dis(1,2);
		if (fdset[0].revents & POLLIN)
		{
			
			read(fdset[0].fd, Buff_Rec, 20);
			
			USART_Rec(Buff_Rec,20);
			 tcflush(my_fd, TCIFLUSH);
			 
			cout<<"get -------------"<

  这里面最关键的是POLLIN的使用,其他的串口初始化、参数设置,都跟我在第二节里面讲的一样

 

 

你可能感兴趣的:(Linux)