ich frage diesmal nach einer Windowsfunktion (deshalb hier) um die realen COM-Buffergrößen zu erhalten.
(Den z.T. ähnlich gelagerten alten Thread https://www.purebasic.fr/german/viewtop ... er#p365820 lasse ich mal schlafen ...)
Mir ist bewusst das mir die Buffergrössen egal sein könnten, wenn ich mit eigenem COM-Thread alles sofort in eigenen Ringpuffer transferiere.
Aber meine SW läuft schon stabil und ich möchte nur im worst case den % Füllgrad berechnen bzw. wissen ab wieviel Bytes im Buffer mit Datenverlust
zu rechnen ist.
Setup: PB6.04-6.12 64Bit / Win10 und Win11 x64 / Silicon Labs CP210x USB to UART Bridge als COM-Device
Code: Alles auswählen
If OpenSerialPort(0, "COM28", 500000, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Debug "COM Success"
Repeat
Debug (AvailableSerialPortInput(0)) ; Läuft bei mir bis max. 65536 hoch, stagniert dann. Weitere COM-Daten werden verworfen.
Debug (SerialPortError(0)) ; Zeigt bei mir immer 28, auch mit vollgelaufenem In-Buffer
Delay (100)
ForEver
Else
Debug "COM Failed"
EndIf
Ich komme so bis 64K, egal was ich in der Windows-Systemsteuerung einstelle.
Andere haben bei anderen Setups oder COM-Adaptern ("Echte COM", CH341SER, FTDIxxx, etc.) auch weniger, z.B. gerademal 4K.
Daher meine Frage nach einer Windows-Api-Funktion, die in meinem Fall eben 65536 zurückgeben würde ... falls es sowas gibt.
Denn das stumpfe Ausprobieren oben ist natürlich Müll und nicht universell.
Ein passender Funktionsname zum Googlen wäre schon super, eine Lösung als PB-Codeschnipsel traumhaft.
