Thread View: pl.comp.sys.palmtop
2 messages
2 total messages
Started by Piotr Ziemian (Automex)
Sun, 24 Apr 2005 00:11
[PCC] ReadFile zjada zera !
Author: Piotr Ziemian (Automex)
Date: Sun, 24 Apr 2005 00:11
Date: Sun, 24 Apr 2005 00:11
51 lines
2680 bytes
2680 bytes
Witam! Z góry przepraszam, że post ten idzie na kilka grup, ale szukam w możliwie szerokim gronie osoby, która mogłaby rzucić trochę światła na mój problem dotyczący komunikacji poprzez łącze szeregowe. Przy pomocy funkcji API: <CODE> BOOL Success = (ReadFile(FHandle, Buffer, Count, &BytesTrans, NULL) != 0); </CODE> odczytuję sobie dane z RS'a. Wszystko jest fajnie. Tylko denerwuje mnie jedna rzecz. Dlaczego po pierwszym uruchomieniu transmisji ReadFile "zjada" zera w odbieranej odpowiedzi ? Kolejna próba uruchomienia transmisji (przy pomocy przycisku w programie) juz działa dobrze. Co takiego może być nie tak ? Aby było ciekawiej, to program identycznie zachowuje się na emulatorze jak i na normalnym pocket'cie (Acer n30). Pierwsze uruchomienie transmisji skutkuje logiem: <LOG> >> 0314e9 << 08140204030205d4 >> 0315e8 << 1315303430323934a5 Nie udało się odczytać całej ramki ! >> 051d40207e << 231dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 >> 0e3105812bfd1fffe000ffffff18 << 0a30053c6025 Nie udało się odczytać całej ramki ! </LOG> Kolejne (bez wychodzenia z programu): <LOG> >> 0314e9 << 08140204030205d4 >> 0315e8 << 131530343032393400000000000000000000a5 >> 051d40207e << 231dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 >> 0e3105812bfd1fffe000ffffff18 << 0a3000053c0060000025 </LOG> Acha fromat ramki jaki stosuję to <LEN> <DANE>...<DANE> <CRC>. Bajt <LEN> mówi ile bajtów jest w ramce włącznie z nim samym czyli: <03> <14> <E9> -> 3 bajty -> jeden bajt danych Jeszcze jedno ! Program z identyczną transmisją ale skompilowany i uruchomiony na komputerze PC nie robi takich numerów ! A transmisja różni się od "pocket'owej" tylko tym ,że PC działa z wykorzystaniem struktury OVERLAPPED. Pozdrawiam, Piotr
Re: [PCC] ReadFile zjada zera !
Author: Piotr Ziemian (Automex)
Date: Sun, 24 Apr 2005 13:20
Date: Sun, 24 Apr 2005 13:20
43 lines
1992 bytes
1992 bytes
Użytkownik "Piotr Ziemian (Automex)" <ziemianp@gazeta.pl> napisał w
wiadomości news:d4eo7h$7m3$1@inews.gazeta.pl...
> Pierwsze uruchomienie transmisji skutkuje logiem:
> <LOG>
>>> 0314e9
> << 08140204030205d4
>>> 0315e8
> << 1315303430323934a5 Nie udało się odczytać całej ramki !
>>> 051d40207e
> << 231dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
>>> 0e3105812bfd1fffe000ffffff18
> << 0a30053c6025 Nie udało się odczytać całej ramki !
> </LOG>
>
> Kolejne (bez wychodzenia z programu):
> <LOG>
>>> 0314e9
> << 08140204030205d4
>>> 0315e8
> << 131530343032393400000000000000000000a5
>>> 051d40207e
> << 231dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
>>> 0e3105812bfd1fffe000ffffff18
> << 0a3000053c0060000025
> </LOG>
>
Odpowiem sobie sam :)
Poprawiłem u siebie strukturę DCB, a konkretnie to zmieniłem:
<CODE>
DCB dcb;
if (GetCommState(FHandle,&dcb))
{
dcb.fBinary = TRUE; // <-- ta linia jest nowa !
dcb.BaudRate = FBaudRate;
...
}
</CODE>
Teraz transmisja "śmiga" od razu :)
Pozdrawiam,
Piotr
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads