新しく接続されたデバイスを監視しています。私はlibudev.hを使用してやりたいことをしています。
while(1){
ret = select(fd+1, &fds, NULL, NULL, NULL);
if(ret<0){
perror("select() failed. Exitting...");
exit(EXIT_FAILURE);
}
if (FD_ISSET(fd, &fds)) {
dev = udev_monitor_receive_device(mon);
if (dev) {
printf("New device attached\n");
printf(" Node: %s\n", udev_device_get_devnode(dev));
printf(" Action: %s\n", udev_device_get_action(dev));
udev_device_unref(dev);
if(strcmp("/dev/ttyUSB0", udev_device_get_devnode(dev))==0){
fd1 = open("/dev/ttyUSB0");
if (fd<0) exit(0);
FD_SET(fd1, &fds);
select(fd1+1, &fds, NULL, NULL, NULL);
if (FD_ISSET(fd1))
//Read from the serial device and echo back to serial device when data is received
}
}
}
else {
printf("No Device from receive_device(). An error occured.\n");
}
}
たとえば、デバイスが接続され、ノードが/ dev / ttyUSB0である場合、デバイスを開いてファイル記述子を監視する必要があります。座ってデータが利用可能になるのを待っています。
fd1 = open("/dev/ttyUSB0");
if (fd<0) exit(0);
FD_SET(fd1, &fds);
select(fd1+1, &fds, NULL, NULL, NULL);
if (FD_ISSET(fd1)){
//Read from the serial device and echo back to serial device when data is received
}
/ dev / ttyUSB0のfdを監視している間、最初の選択はデバイスのジョブ監視を続行する必要があります。2つの選択を同時に行うにはどうすればよいですか?..ありがとう