串口操作之刷清輸入輸出緩存操作---tcflush()函數

原文鏈接tcflush()函數

tcflush函數刷清(扔掉)輸入緩存(終端驅動已接管到,但用戶尚未讀)或輸出緩存(用戶已經寫,但尚未發送).

  int tcflush(int filedes,int quene)
  其中參數quene是下列三個常數之一:
    TCIFLUSH  刷清輸入隊列
    TCOFLUSH  刷清輸出隊列
    TCIOFLUSH 刷清輸入、輸出隊列

  例如:tcflush(fd,TCIFLUSH);


在打開串口後,串口其實已經可以開始讀取 數據了 ,這段時間用戶如果沒有讀取,將保存在緩衝區裏,如果用戶不想要開始的一段數據,或者發現緩衝區數據有誤,可以使用這個函數清空緩衝

tcflush(fdcom, TCIFLUSH);

sleep(2);
RecvLen = PortRecv(fdcom, RecvBuf, 10, portinfo.baudrate);

這樣,在sleep之前發的數據都被清空了。


注意:如果是在任務中,需要不停地寫入數據到串口設備,千萬不能在每次寫入數據到設備前,進行flush以前數據的操作,因爲兩次寫入的間隔是業務控制的,內核不會保證在兩次寫入之間一定把數據發送成功。flush操作一般在打開或者復位串口設備時進行操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章