我正在瀏覽FTDI網站上的示例代碼。打開設備和設定流量控制爲RTS /它們發送CTS和以下述方式接收數據後:使用FTDI的D2XX接口進行RTS/CTS流量控制的正確形式
' Set RTS
FT_Status = FT_SetRts(FT_Handle)
If FT_Status <> FT_OK Then
Exit Sub
End If
' Set DTR
FT_Status = FT_SetDtr(FT_Handle)
If FT_Status <> FT_OK Then
Exit Sub
End If
' Write string data to device
FT_Status = FT_Write_String(FT_Handle, TextBox4.Text, Len(TextBox4.Text), BytesWritten)
If FT_Status <> FT_OK Then
Exit Sub
End If
Sleep(100)
' Get number of bytes waiting to be read
FT_Status = FT_GetQueueStatus(FT_Handle, FT_RxQ_Bytes)
If FT_Status <> FT_OK Then
Exit Sub
End If
' Read number of bytes waiting
TempStringData = Space(FT_RxQ_Bytes + 1)
FT_Status = FT_Read_String(FT_Handle, TempStringData, FT_RxQ_Bytes, BytesRead)
If FT_Status <> FT_OK Then
Exit Sub
End If
' Close device
FT_Status = FT_Close(FT_Handle)
If FT_Status <> FT_OK Then
Exit Sub
End If
它們基本上設置RTS,DTR,然後寫數據到該設備。
這是正確的嗎?如果我多次發送設備,我是否需要每次清除RTS?然後再將其設置爲高?或者我每次發送新數據時都將其設置爲高?如果流量控制被定義爲RTS/CTS,他們爲什麼要設置DTR?
就最佳實踐而言,這是讀取和寫入的最佳方式嗎?
剛剛碰到這個:http://stackoverflow.com/q/957337/34989 – Gerhard 2011-06-01 06:34:33
感謝您的信息。當你立刻說,你能以毫秒量化嗎?我們每秒接收/發送少量數據。我應該在每次發送後清除RTS嗎? – drinck 2011-06-01 16:52:16
如果您有要發送的緩衝區中的數據,請發送它。如果你有一個空的緩衝區取消斷言。 – Gerhard 2011-06-02 06:16:33