[ Pobierz całość w formacie PDF ]
.Wbrew pozorom jest to bardzo ciekawei kszta³c¹ce zajêcie.Poznaj¹c zasady tworzenia takich algorytmów w DOS iWindows mo¿na siê przekonaæ, jak wielki postêp zosta³ dokonany w tej dziedzinieprogramowania.Wiadomoœci tu przedstawione pomog¹ zrozumieæ, ¿e ideaprogramowania w Windows nie powsta³a od razu.Powsta³a dziêki odpowiedniemuulepszaniu i adaptacji najlepszych elementów œrodowisk programistycznychDOS-a.Borland C++Zaprezentujemy dwie bardzo u¿yteczne funkcje zdefiniowane w standardzie ANSIC, umo¿liwiaj¹ce bardzo szybkie skonfigurowanie w trybie do transmisjiasynchronicznej wybranego ³¹cza szeregowego.Ich prototypy znajduj¹ siê w plikubios.h.Bêd¹ nimi:int bioscom(int cmd, char abyte, int port);orazunsigned _bios_serialcom(int cmd, char abyte, int port);W obu przypadkach parametr port okreœla dany port komunikacyjny, dla 0 = COM1,dla 1 = COM2, lub ogólnie (n-1) = COMn.Nale¿y pamiêtaæ, ¿e nazwy COMn znajduj¹siê na liœcie nazw zastrze¿onych, nie mo¿na ich zatem nadawaæ ¿adnemu plikowi.cmd okreœla rodzaj wykonywanej przez port szeregowy operacji.Poni¿ejprzedstawiono wartoœci, jakie mo¿na przypisaæ parametrowi cmd.bioscom()_bios_serialcom()znaczeniewartoœæ cmdsta³a symboliczna_COM_INITinicjalizacja i otwarcie portu1_COM_SENDustawienie ³¹cza w trybie do wysy³ania2_COM_RECEIVEustawienie ³¹cza w trybie do odbioru3_COM_STATUSpobranie aktualnego statusu portuSposób ustalenia wszystkich cech charakterystycznych ramki danych okreœlaparametr abyte:bioscom() _bios_serialcom() znaczenierozmiar pola bitów danych0x02 _COM_CHR7 7 bitów danych0x03 _COM_CHR8 8 bitów danychbity stopu0x00 _COM_STOP1 1 bit stopu0x04 _COM_STOP2 2 bity stopubity parzystoœci0x00 _COM_NOPARITY No parity (brak parzystoœci)0x08 _COM_ODDPARITY Odd parity (nieparzysta)0x18 _COM_EVENPARITY Even parity (parzysta)prêdkoœæ transmisji0x00 _COM_110 110 bitów/sek.0x20 _COM_150 1500x40 _COM_300 3000x60 _COM_600 6000x80 _COM_1200 12000xA0 _COM_2400 24000xC0 _COM_4800 48000xE0 _COM_9600 9600Przyk³adowo, je¿eli chcemy ustaliæ: prêdkoœæ transmisji na 9600 b/s;sprawdzanie parzystoœci polegaj¹ce na tym, ¿e liczba jedynek w polu danychbêdzie uzupe³niana do liczby nieparzystej; jeden bit stopu oraz d³ugoœæ s³owadanych jako 8 bitów, to argumentowi abyte nale¿y przypisaæ:abyte = (0xE0 | 0x08 | 0x00 | 0x03)w funkcji bioscom() lubabyte = (_COM_9600 | _COM_ODDPARITY | _COM_STOP1 | _COM_CHR8)je¿eli zechcemy u¿yæ _bios_serialcom().Z zapisów tych wynika, ¿e przypisanie konkretnej wartoœci reprezentuj¹cejstrukturê ramki danych odbywa siê poprzez wykonanie operacji maskowania zzastosowaniem operatora bitowej alternatywy |.Powy¿sze ustawienie parametrówramki równie dobrze mo¿na odczytaæ jako:1 1 1 0 0 0 0 0 (0xE0) dziesiêtnie 224OR0 0 0 0 1 0 0 0 (0x08) 8OR0 0 0 0 0 0 0 0 (0x00) 0OR0 0 0 0 0 0 1 1 (0x03) 3__________________abyte = 1 1 1 0 1 0 1 1 (0xEB) 235Zarówno bioscom(), jak i _bios_serialcom() zwracaj¹ wartoœæ 16-bitow¹.Bardziej znacz¹cy bajt tej liczby zawiera bity opisuj¹ce aktualny stantransmisji.Bardziej znacz¹cy bajt:bit 7 (Time out)1 = b³¹d przekroczenia czasu nawi¹zania po³¹czenia, tzw
[ Pobierz całość w formacie PDF ]
Darmowy hosting zapewnia PRV.PL