Witam Kolegów,
Temat dotyczy języka C/C++ oraz protokołu RS232C, a konkretnie struktury COMMPROP i struktury DCB. Program piszę pod IDE BCB6 Personal.
Męczę się od jakiegoś czasu nad dopracowaniem takiego szczegółu a mianowicie odczytywanie danych ze struktury COMMPROP danych wynikających bezpośrednio ze struktury DCB (np. ile jest bitów stopu, albo jaka jest parzystość - w obu strukturach te dane są zawarte).
Jeśli chodzi o takie sprawy jak konfiguracja, otwieranie, zamykanie portu to wszystko działa i potrafię to z poziomu C/C++ to obsłużyć.
Problem jest gdy próbuję odczytać wartość ze struktury COMMPROP, np.
Sprawa wygląda tak, że wszystko działa (ustawianie konfiguracji portu, otwieranie portu, zamykanie portu, struktura DCB pokazuje prawidłowe dane)...
Problem pojawia się gdy chcę zobaczyć zaawansowane ustawienia portu używając do tego struktury COMMPROP.
Oryginalny kod którego używam jest trochę skomplikowany, ale załóżmy, że wygląda on tak (bez dyrektyw #include):
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Reasumując:Funkcja GetCommProperties(hCommDev, &CommProp)
pomimo prawidłowego otwarcia portu nie zaskakuje jak należy, bo zwraca wartość różną od zera.
Aby można było cokolwiek odczytać ze struktury COMMPROP to funkcja GetCommProperties powinna po wywołaniu zwracać zero. Wtedy mam dostęp do zmiennej CommProp...
Natomiast funkcja GetLastError() podaje że to błąd systemowy nr 122, co wg MSDN oznacza:
ERROR_INSUFFICIENT_BUFFER
The data area passed to a system call is too small.czyli na nasze to oznacza mniej/więcej
BŁĄD NIEDOSTATECZNEJ (PAMIĘCI) BUFORA
Obszar danych przekazany do wywołania systemowego jest za mały.Czy Ktoś z Kolegów robił już jakieś doświadczenia ze strukturą COMMPROP i miał podobną sytuację?
Bardzo proszę o konkretne odpowiedzi.
Pozdrawiam! j23 Jarek
P.S. Tylko z tą strukturą tak się męczę, pozostałe działają w porządku.