int SerialPort::read_port(char *buf)
{
int result = 0;
fd_set rset;
struct timeval timeout;
timeout.tv_sec = 1;
timeout.tv_usec = 100;
FD_ZERO(&rset);
FD_SET(fd, &rset);
if(select(fd+1, &rset, NULL, NULL, &timeout) > 0)
{
if (FD_ISSET(fd, &rset)) {
result = ::read(fd, buf, 100);
}
}
return result;
}
int SerialPort::write_port(char *buf, unsigned len)
{
int result = write(fd, buf, len);
// Wait until all data has been written
tcdrain(fd);
return result;
}
select 实现对串口的读取
最新推荐文章于 2022-12-27 14:26:58 发布