使用tcflush可以清除已写但未发出,或已接收但未读数据。[喝小酒的网摘]http://blog./a/17015.htm
用法如下:
linux清除串口未读取的数据 tcflush(fd, TCIFLUSH) ;
tcflush(int fd, int queue_selector) //对已写但未发出,或已接收但未读数据的flush.
discards data written to the object referred to by fd but not
transmitted, or data received but not read, depending on the value of
queue_selector:
TCIFLUSH
flushes data received but not read.
TCOFLUSH
flushes data written but not transmitted.
TCIOFLUSH
flushes both data received but not read, and data written but not transmitted.
tcgetattr(int fd, struct termios *termios_p) //get串口termios结构
gets the parameters associated with the object referred by fd and
stores them in the termios structure referenced by termios_p. This
function may be invoked from a background process; however, the
terminal attributes may be subsequently changed by a foreground
process.
tcsetattr(int fd, int optional_actions, const struct termios *termios_p) //设置串口termios结构
sets the parameters associated with the terminal (unless support is
required from the underlying hardware that is not available) from the
termios structure referred to by termios_p. optional_actions
specifies when the changes take effect:
TCSANOW
the change occurs immediately.
TCSADRAIN
the change occurs after all output written to fd has been
transmitted. This function should be used when changing parameters that
affect output.
TCSAFLUSH
the change occurs after all output written to the object referred by
fd has been transmitted, and all input that has been received but not
read will be discarded before the change is made.
|