Programowanie RS232 w Delphi z użyciem asemblera ? moje doświadczenia i wskazówki

jeszcze raz RS232 inaczej





Poprzedni Następny
Wiadomość
Spis treści
From: "Artur" <arturk1_at_nospam_zeus.polsl.gliwice.pl>
Subject: jeszcze raz RS232 inaczej
Date: Sat, 4 May 2002 12:55:45 +0200


Witam:)
niedawno pytalem sie jak oprogramowac RS pod delphi i tak przegladalem rozne
strony rozne materialy, przez was podane i nietylko i doszedlem do wniosku
ze to dosc jak na poczotek trudne, ale znalazlem jakies ksero z jakiejs
ksiazki o asemblerze PC wlasnie z opisem portu szeregowego i powiem
szczerze, ze mimo to iz jest to sembler jest jasno opisane co trzeba zrobic
i przynajmniej jasno opisane linie kodu, wiec chyba warto zrobic sobie
wstawki asemblera w program, moze bedzie latwiej:))
Jeszcze nie probowalem ale niewatpliwie sprobuje, a o wynikach dam znac,
ewentualnie zamieszcze kod w asembleze to zaintersowanym sie przyda:)
Pozdrawiam
Artur



Poprzedni Następny
Wiadomość
Spis treści
From: "bartek" <combosoft_at_nospam_poczta.onet.pl>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sat, 4 May 2002 16:18:07 +0200



Użytkownik "Artur" <arturk1_at_nospam_zeus.polsl.gliwice.pl> napisał w wiadomości
news:ab0eq6$ndh$1_at_nospam_devnull.open.net.pl...
Witam:)
niedawno pytalem sie jak oprogramowac RS pod delphi i tak przegladalem
rozne
strony rozne materialy, przez was podane i nietylko i doszedlem do wniosku
ze to dosc jak na poczotek trudne, ale znalazlem jakies ksero z jakiejs
ksiazki o asemblerze PC wlasnie z opisem portu szeregowego i powiem
szczerze, ze mimo to iz jest to sembler jest jasno opisane co trzeba
zrobic
i przynajmniej jasno opisane linie kodu, wiec chyba warto zrobic sobie
wstawki asemblera w program, moze bedzie latwiej:))
Jeszcze nie probowalem ale niewatpliwie sprobuje, a o wynikach dam znac,
ewentualnie zamieszcze kod w asembleze to zaintersowanym sie przyda:)
Pozdrawiam
Artur


wszystko jest ok. ale do momentu kiedy nie wychodzisz poza 95/98 i pochodne.
W windows nt zupelnie inaczej wygladaja prawa dostepu do portow. Jezeli
jestes zainteresowany tym tematem polecam lekture archiwum. Ta tematyka byla
poruszana na grupie wielokrotnie.


pozdrawiam. bartek.



Poprzedni Następny
Wiadomość
Spis treści
From: "Greg S." <greg_sz_at_nospam_dsuper.net>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sat, 04 May 2002 18:42:34 -0400


bartek wrote:

wszystko jest ok. ale do momentu kiedy nie wychodzisz poza 95/98 i pochodne.
W windows nt zupelnie inaczej wygladaja prawa dostepu do portow.

Wydaje mi sie ze nie masz racji jesli chodzi o NT.
Na programowaniu do Winzgrozy sie za bardzo nie znam i machnalem kiedzys
programik uzywajacy porty szeregowe dosc intensywnie ale pod DOSem w Borland C++
i chodzilo bardzo ladnie pod DOsem Windows 3.11/95/98/NT3x./NT4.0 oraz OS2 i na
Macintoshu w emulacji Win98.
Mysle ze problem zaistnieje dopiero w XP gdzie pbezposredni dostep do sprzetu
jest zabroniony.

Pozdro
Grze..Szy..


Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sun, 5 May 2002 03:28:41 +0200


Uzytkownik "Greg S." <greg_sz_at_nospam_dsuper.net> napisal w wiadomosci
news:3CD463DA.D2C3AFD9_at_nospam_dsuper.net...

Wydaje mi sie ze nie masz racji jesli chodzi o NT.
Na programowaniu do Winzgrozy sie za bardzo nie znam i machnalem kiedzys
programik uzywajacy porty szeregowe dosc intensywnie ale pod DOSem w
Borland C++
i chodzilo bardzo ladnie pod DOsem Windows 3.11/95/98/NT3x./NT4.0 oraz OS2
i na
Macintoshu w emulacji Win98.

Mysle ze problem zaistnieje dopiero w XP gdzie pbezposredni dostep do
sprzetu
jest zabroniony.
Tak samo jak w NT. Na jakim poziomie siegales do portów?
Funkcji DOS-a, bezposrednich odwolan do funkcji biosu, czy operacji na
fizycznych rejestrach UARTu?
NT-ki pozwola Ci jedynie na pierwszy wariant.

MDz




Poprzedni Następny
Wiadomość
Spis treści
From: "Greg S." <greg_sz_at_nospam_dsuper.net>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sun, 05 May 2002 17:25:09 -0400


Marek Dzwonnik wrote:

Tak samo jak w NT. Na jakim poziomie siegales do portów?
Funkcji DOS-a, bezposrednich odwolan do funkcji biosu, czy operacji na
fizycznych rejestrach UARTu?
NT-ki pozwola Ci jedynie na pierwszy wariant.

Int 14 to BIOS masz racje.
Musialbym zajrzec do programu bo to juz wiele leat nie zmienialem nic w czesci
komunikacyjnej.
Uzywalem jakis kawalkow specjalnych do szeregowej komunikacji ktore byly
dolaczone do kompilatora Borlanda. W kazdym razie dawalo mi to dosc duzo
kontroli nad portami o ile pamietam.
Pamietam tyle e jakis tam programik chodzil w bacgroundzie i zbieral znaki
przychodzace do buforka
Pozdro
Grze..Szy..


Poprzedni Następny
Wiadomość
Spis treści
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sun, 5 May 2002 11:58:51 +0200


Wydaje mi sie ze nie masz racji jesli chodzi o NT.
Na programowaniu do Winzgrozy sie za bardzo nie znam i machnalem kiedzys
programik uzywajacy porty szeregowe dosc intensywnie ale pod DOSem w Borland C++
i chodzilo bardzo ladnie pod DOsem Windows 3.11/95/98/NT3x./NT4.0 oraz OS2 i na
Macintoshu w emulacji Win98.
Mysle ze problem zaistnieje dopiero w XP gdzie pbezposredni dostep do sprzetu
jest zabroniony.

Wkazdym NTku masz zabroniony dostep do portow. Czyli in out nie dziala.
Ale pod NTkami dziala wiekszosc przerwan programowych z DOSa, wiec
programy napisane w BC3 powinny chodzic. Inna sprawa, ze strasznie ciezko z tych
przerwan korzystac (niewygodne). Prosciej CreateFile itp. z WinAPI

jerry



Poprzedni Następny
Wiadomość
Spis treści
From: "Bartosz Rakowski" <rakbar_at_nospam_poczta.onet.pl>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sun, 5 May 2002 12:22:15 +0200


czesc

Uzytkownik "jerry1111" <jerry1111_at_nospam_wp.pl> napisal w wiadomosci
news:ab2vhs$3pu$1_at_nospam_news.tpi.pl...
Wkazdym NTku masz zabroniony dostep do portow. Czyli in out nie dziala.
Ale pod NTkami dziala wiekszosc przerwan programowych z DOSa, wiec
programy napisane w BC3 powinny chodzic. Inna sprawa, ze strasznie ciezko
z tych
przerwan korzystac (niewygodne). Prosciej CreateFile itp. z WinAPI

do delphiego sa gotowe komponenty do uzywania portow szeregowych i
rownoleglych pewnie tez

Rakbar



Poprzedni Następny
Wiadomość
Spis treści
From: "Artur" <arturk1_at_nospam_zeus.polsl.gliwice.pl>
Subject: Odp: jeszcze raz RS232 inaczej
Date: Sun, 5 May 2002 12:36:04 +0200



do delphiego sa gotowe komponenty do uzywania portow szeregowych i
rownoleglych pewnie tez

Wszystko pieknie ladnie jesli ma sie pojecie o angielskim i umie
poslugiwac sie w miare biegle pod delphi.
Niestety ja takich umiejetnosci nie posiadam wiec czepiam sie czego moge
aby ten port oprogramowac
W Delpphi kiedys uzywalem portu rownoleglego i do tego aby nim sterowac
uzywalem komend asemblera, krotko zwiezle pare linijek i sprawia zlatwia,
czy tak samo bedzie dla portu szeregowego?? niewiem ale napewno asembler
jest dla mnie bardziej zrozumialy (i mam opis po polsku:)) niz uzywanie
gotowych komponentow do ktorych czytam heply i nic z tego niewiem
Pozdrwiam
Artur



Poprzedni Następny
Wiadomość
Spis treści
From: "bartek" <combosoft_at_nospam_poczta.onet.pl>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sun, 5 May 2002 13:25:02 +0200


</ciach>
mozna stosowac wstawki z asemblera, choc nie jest to juz takie proste jak
pod lpt.
Zastrzezenie jak wyzej: dla MS Windows 95/98. W innych przypadkach
zostaja komponenty, lub tez inne metody. Ale to juz trzeba troche wiedziec
o delphi i o programowaniu.

pozdrawiam, bartek



Poprzedni Następny
Wiadomość
Spis treści
From: Marek Lewandowski <nospam_at_nospam_poczta.onet.pl>
Subject: Re: Odp: jeszcze raz RS232 inaczej
Date: Sun, 05 May 2002 11:12:29 GMT


Artur wygenerował manualnie w wiadomości
<ab321u$vru$1_at_nospam_devnull.open.net.pl> udostępnionej publicznie dnia Sun,
5 May 2002 12:36:04 +0200 co następuje:


do delphiego sa gotowe komponenty do uzywania portow szeregowych i
rownoleglych pewnie tez

Wszystko pieknie ladnie jesli ma sie pojecie o angielskim i umie
poslugiwac sie w miare biegle pod delphi.

No cóż, angielski rzecz ważna, może czas się nauczyć?

Niestety ja takich umiejetnosci nie posiadam wiec czepiam sie czego moge
aby ten port oprogramowac
W Delpphi kiedys uzywalem portu rownoleglego i do tego aby nim sterowac
uzywalem komend asemblera, krotko zwiezle pare linijek i sprawia zlatwia,
czy tak samo bedzie dla portu szeregowego??

Dopóki siedzisz w Win9x - tak...
pod czymkolwiek wyższym system wykopie cię expresem...
--
Marek Lewandowski ICQ# 10139051
DOUSUNIECIAlocustDOUSUNIECIA_at_nospam_poczta.onet.pl
http://locust.republika.pl
UWAGA! w emailu wycinać DOUSUNIECIA z adresu!

Poprzedni Następny
Wiadomość
Spis treści
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: Re: jeszcze raz RS232 inaczej
Date: Sun, 5 May 2002 14:14:57 +0200


Wszystko pieknie ladnie jesli ma sie pojecie o angielskim i umie
poslugiwac sie w miare biegle pod delphi.
Niestety ja takich umiejetnosci nie posiadam wiec czepiam sie czego moge
aby ten port oprogramowac

Sad but true ;)
Bez angielskiego ani rusz w dzisiejszym swiecie elektroniki/programowania.
A obsluga RSa pod NTki (no i oczywiscie inne windy) jest banalnie
prosta przy uzyciu API. To jest ZALEDWIE kilka funkcji, poza tym
rzeczy typu rxByteTimeout (albo podobnie ;) same sie tlumacza.

W Delpphi kiedys uzywalem portu rownoleglego i do tego aby nim sterowac
uzywalem komend asemblera, krotko zwiezle pare linijek i sprawia zlatwia,
czy tak samo bedzie dla portu szeregowego?? niewiem ale napewno asembler
jest dla mnie bardziej zrozumialy (i mam opis po polsku:)) niz uzywanie
gotowych komponentow do ktorych czytam heply i nic z tego niewiem

Nie uzywac komponentow (kiedys jak pierwszy raz mialem 'ruszyc' RSa
to nasciagalem z 10 chyba komponentow no i kazdy mi nie pasowal).
Potem poczytalem przez 2 godziny helpa do WinAPI i napisalem
wlasny zestaw funkcji do RSa. Uzywany z powodzeniem juz chyba
kilka lat bez wiekszych zmian.

jerry



Poprzedni Następny
Wiadomość
Spis treści
From: "c2h5oh" <crossroads_at_nospam_go2.pl>
Subject: Pytanie przy okazji [było Re: jeszcze raz RS232 inaczej]
Date: Sun, 5 May 2002 17:04:32 +0200



"jerry1111" <jerry1111_at_nospam_wp.pl> wrote in message
news:ab37hd$j14$1_at_nospam_news.tpi.pl...

Nie uzywac komponentow (kiedys jak pierwszy raz mialem 'ruszyc' RSa
to nasciagalem z 10 chyba komponentow no i kazdy mi nie pasowal).
Potem poczytalem przez 2 godziny helpa do WinAPI i napisalem
wlasny zestaw funkcji do RSa. Uzywany z powodzeniem juz chyba
kilka lat bez wiekszych zmian.

Tak przy okazji - czy w Dlephi jest jakiś sposób żeby dobrać się do bitu
parzystości bez uruchamiania mechanizmów kontroli? Wysyłam do uC dane i
chciałbym jakoś oznaczać bajty, które ma przesłać dalej od tych które sš
przeznaczone dla niego. Od strony mikrokontrolera jest to banalne, ale nie
mam pojęcia jak to ruszyć od strony PCta, funkcje API chyba nie pozwalajš
ręcznie manipulować bitem parzystości. Macie jakiś pomysł jak to obejść?
c2h5oh



Poprzedni Następny
Wiadomość
Spis treści
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: =?iso-8859-2?Q?Re:_Pytanie_przy_okazji_=5Bby=B3o_Re:_jeszcze_raz_RS232_in?=
Date: Wed, 8 May 2002 08:38:11 +0200


Tak przy okazji - czy w Dlephi jest jakiś sposób żeby dobrać się do bitu
parzystości bez uruchamiania mechanizmów kontroli? Wysyłam do uC dane i
chciałbym jakoś oznaczać bajty, które ma przesłać dalej od tych które sš
przeznaczone dla niego. Od strony mikrokontrolera jest to banalne, ale nie
mam pojęcia jak to ruszyć od strony PCta, funkcje API chyba nie pozwalajš
ręcznie manipulować bitem parzystości. Macie jakiś pomysł jak to obejść?

Jak nie mozesz przez API, to policzyc jaka powinna byc parzystosc
i sprawdzic parity error. Wtedy wiesz czy 0 czy 1.

jerry



Poprzedni Następny
Wiadomość
Spis treści
From: "c2h5oh" <crossroads_at_nospam_go2.pl>
Subject: Re: Pytanie przy okazji [było Re: jeszcze raz RS232 inaczej]
Date: Wed, 8 May 2002 18:10:42 +0200



"jerry1111" <jerry1111_at_nospam_wp.pl> wrote in message
news:abagth$686$1_at_nospam_news.tpi.pl...
mam pojęcia jak to ruszyć od strony PCta, funkcje API chyba nie
pozwalajš
ręcznie manipulować bitem parzystości. Macie jakiś pomysł jak to obejść?

Jak nie mozesz przez API, to policzyc jaka powinna byc parzystosc
i sprawdzic parity error. Wtedy wiesz czy 0 czy 1.

Chyba się nie rozumiemy. Mi chodzi o komunikację PC -> uC
W mikrokontrolerze mam bezpośredni dostęp do bitu parzystości i dzięki
niemu chcę rozpoznawać jakie bajty uC ma przesłać dalej, a jakie sš dla
niego. Problem polega na tym, że te wszystkie bajty idš z PCta. W PCcie nie
mogę ręcznie zmieniać bitu parity (w każdym razie te funkcje API które znam
mi na to nie pozwalajš), ten bit jest ustawiany w zależności od tego co
kompyter wysyła. Twoja propozycja by się sprawdziła gdyby wszystkie bajty
przeznaczone do dalszej wysyłki miały parity=0 (chodzi o faktycznš
parzystość a nie o sam bit kontrolny) , a wszystkie przeznaczone dla uC
miały parity=1, tylko że tak nie ma sensu.

Właściwie to już wymyśliłem pięć innych sposobów jak to obejść, chciałem się
tylko dowiedzieć jak to jest z tym 'dziewištym bitem' w API.

jerry
c2hoh






Poprzedni Następny
Wiadomość
Spis treści
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: =?iso-8859-2?Q?Re:_Pytanie_przy_okazji_=5Bby=B3o_Re:_jeszcze_raz_RS232_in?=
Date: Wed, 8 May 2002 20:21:56 +0200


Chyba się nie rozumiemy. Mi chodzi o komunikację PC -> uC

OK, rozumiem ;)

W PCcie nie
mogę ręcznie zmieniać bitu parity (w każdym razie te funkcje API które znam
mi na to nie pozwalajš), ten bit jest ustawiany w zależności od tego co
kompyter wysyła.

MOZESZ.
Mozesz ustawic parity=none/odd/even/space(0). Tylko nie pamietam
czy mozesz ustawic mark(1). Jesli tak, to proste, bo przy kazdym
bajcie sobie zmienisz. Jesli nie, to trzeba liczyc co wyjdzie, i w
zaleznosci czy potrzebujemy 1 czy 0, to zrobic odd albo even.
No i te zmiany zawrzec w procedurce wysylania 1 bajtu na RSa. Bedzie
trosze bardziej obciazac system, bo nie bedziesz mogl uzyc buforow, tylko
zmieniac ustawienia RSa przed kazdym bajtem. Na szczescie przez WinAPI
mozna odczytac, ze bajt zostal fizycznie wypluty przez Txd (pisza ze
specjalnie do rs485 to zrobili).

A najlepiej zmienic protokol transmisji na bardziej 'cywilizowany' ;)


jerry



Poprzedni Następny
Wiadomość
Spis treści
From: "c2h5oh" <crossroads_at_nospam_go2.pl>
Subject: Re: Pytanie przy okazji [było Re: jeszcze raz RS232 inaczej]
Date: Thu, 9 May 2002 16:23:28 +0200



"jerry1111" <jerry1111_at_nospam_wp.pl> wrote in message
news:abbq4t$8pr$1_at_nospam_news.tpi.pl...


MOZESZ.
Mozesz ustawic parity=none/odd/even/space(0). Tylko nie pamietam
czy mozesz ustawic mark(1). Jesli tak, to proste, bo przy kazdym
bajcie sobie zmienisz. Jesli nie, to trzeba liczyc co wyjdzie, i w
zaleznosci czy potrzebujemy 1 czy 0, to zrobic odd albo even.

Faktycznie, nie pomyślałem o odd/even. Dzięki - będę spał spokojniej ;))



A najlepiej zmienic protokol transmisji na bardziej 'cywilizowany' ;)

Już chodzi na innym, ale zachciało mi się "oryginalności" ;)

jerry

c2h50h



Poprzedni Następny
Wiadomość
Spis treści
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: =?iso-8859-2?Q?Re:_Pytanie_przy_okazji_=5Bby=B3o_Re:_jeszcze_raz_RS232_in?=
Date: Thu, 9 May 2002 18:53:34 +0200


A najlepiej zmienic protokol transmisji na bardziej 'cywilizowany' ;)

Już chodzi na innym, ale zachciało mi się "oryginalności" ;)

Ale ta oryginalnosc ma malo wspolnego z kompatybilnoscia, a to zle.

jerry



Poprzedni Następny
Wiadomość
Spis treści
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: Odp: jeszcze raz RS232 inaczej
Date: Sun, 05 May 2002 19:06:49 +0200


Wszystko pieknie ladnie jesli ma sie pojecie o angielskim i umie
poslugiwac sie w miare biegle pod delphi.
Niestety ja takich umiejetnosci nie posiadam wiec czepiam sie czego moge
aby ten port oprogramowac

Jakiś czas temu opublikowałem chyba ze 3 procedurki....
nawiazanie polaczenia, zakonczenie i transmisje....całość w Builderze..
W Delphi będzie to wyglšdało podobnie - może więc przeczytaj to i przemyśl ;-)))

Praca z portem jest naprawdę bardzo prosta i przyjemna :-)
--
PZD, Irek.N.
ps. właśnie męczę takie rozwišzanie na 115k8N1 z 90S2313 i chodzi idealnie :-)