Всем добрый день!
Подскажите, что делаю не так:
Структуру COMSTAT получаю нормально, количество байт считывается.
А переменную lpErrors не могу считать, всегда 0.
Подскажите, что не так делаю.
А все, разобрался. Все работает) Просто COM порт буфер не переполнялся физически)
Подскажите, что делаю не так:
Код:
Func _GetRXbyte(const $hOpenCom)
; Создать переменную для структуры COMSTAT.
Local $Struct = DllStructCreate($tagCOMSTAT)
; Создать переменную для lpErrors.
Local $tlpErrors = DllStructCreate("dword lpErrors")
DllCall("kernel32.dll", "bool", "ClearCommError", "handle", $hOpenCom[0], "ptr", DllStructGetPtr($tlpErrors), "ptr", DllStructGetPtr($Struct))
; Считать элемент из структуры.
Local $Temp = _CommAPI_GetCommTimeoutsElement($Struct, "cbInQue")
; Считать маску ошибок.
Local $ret = DllStructGetData($tlpErrors, "lpErrors")
MsgBox(0, "", "Recive: " & $Temp & " lpErrors: " & $ret)
Return $Temp
EndFunc
Структуру COMSTAT получаю нормально, количество байт считывается.
А переменную lpErrors не могу считать, всегда 0.
Функция ClearCommError (winbase.h) - Win32 apps
Извлекает сведения об ошибке связи и сообщает о текущем состоянии устройства связи.
docs.microsoft.com
Подскажите, что не так делаю.
Сообщение автоматически объединено:
А все, разобрался. Все работает) Просто COM порт буфер не переполнялся физически)
Последнее редактирование: