| Author |
Message
|
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#1
14 Jan 2004 02:18 [Visual C++] Komunikacja przez port COM. |
|
|
|
Witam,
wkurzlem sie ostatnimi czasy na visual basic bo programy w nim napisane, ktore wykonywaly operacje na plikach strasznie wolno dzialaly...
Zabralem sie za Visual C++ i wszystko jest OK, tylko w jaki sposob z tego czegos obslugiwac COM'a??
Prosze o jakies gotowe procedury dzialajace bezposrednio lub poprzez kontrolke MSComm...
Chodzi mi o wysylanie i odbieranie danych z uP (dane jednobajtowe)...
dziekuje i pozdrawiam, ArtKar
Temat zamykam. - arnoldziq
|
|
| Back to top |
|
 |
elektryk Poziom 26

Joined: 25 Apr 2002 Posts: 11092
|
#2
14 Jan 2004 02:24 Re: COM PORT w VC++ |
|
|
|
Na elektrodzie jest skan ksiażki po polsku z wytłumaczoną całą komunikacją poprzez API windows.
|
|
| Back to top |
|
 |
Google

|
#
14 Jan 2004 02:24 |
|
|
|
|
|
| Back to top |
|
 |
Quebec Poziom 8

Joined: 21 Sep 2002 Posts: 25
|
|
| Back to top |
|
 |
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#4
18 Feb 2004 22:48 Re: COM PORT w VC++ |
|
|
|
witam...
meczylem sie caly czas z tym serialport'em w c++ i rozgryzlem to w koncu.. tak mi sie przynajmniej wydaje....
no wiec tak:
napisalem program, na porcie zalozylem loopback'a i wyslalem dana, dana wrocila, wszystko OK...
chce napisac program, aby prozumiewal sie z mikrokontrolerem.. napisalem do uP programik w BASCOMie, ktory odbiera dana i natychmiast ja wysyla... dana jednak juz nie zostaje odebrana przez program na PC :( wyskakuje timeout(zmienialem je wartosc)...
prgoram w uP przepisalem tak, ze wysyla caly czas taka sama dana, program w C++ go nie odbiera :(
Robilem rowniez testy na Hyperterminalu....tutaj dziala wszystko OK...komunikuje sie bez problemu
Co moge miec namieszane w tym wszystkim??
port w c++ sadze ze skonfigurowalem i otworzylem poprawnie(uzylem tego czegos z www.codeguru.com)
dziekuje i pozdrawiam, ArtKar
|
|
| Back to top |
|
 |
BoskiDialer Poziom 22

Joined: 28 Nov 2003 Posts: 1533 Location: Żory
|
#5
18 Feb 2004 23:31 Re: COM PORT w VC++ |
|
|
|
Skoro VC++ niedziała poprawinie a HyperTerminal działa...
to sprubój połączyć (na kablu COM) ze sobą sygnały:
- CTS z RTS
- RTS z DSR
(mogłem pomylić sie w oznaczeniach ponieważ pisałem z pamięci..)
albo po prostu piny na złączu DB9:
- 2 z 3
- 7 z 8
....
Czasami programy wykorzystują kontrole przepływu danyh..
|
|
| Back to top |
|
 |
Google

|
#
18 Feb 2004 23:31 |
|
|
|
|
|
| Back to top |
|
 |
elektryk Poziom 26

Joined: 25 Apr 2002 Posts: 11092
|
#6
18 Feb 2004 23:56 Re: COM PORT w VC++ |
|
|
|
A próbowałeś skonfigurować handshaking? Timeouty są to po żeby tak działać, można z nich zrezygnować wykonując operacje blokujące, ale z reguły znacznie gorzej to działa.
|
|
| Back to top |
|
 |
Google

|
#
18 Feb 2004 23:56 |
|
|
|
|
|
| Back to top |
|
 |
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#7
19 Feb 2004 00:32 Re: COM PORT w VC++ |
|
|
|
7 z 8 mam zwarte, 2 z 3 nie moge bo to jest wlasnie RX i TX... jak zewre je to powstanie loopback...
Sprawdzalem co to jest handshaking... w jaki sposob go skonfigurowac i czy konieczne sa wtedy zmiany w oprogramowaniu w uP ??
W HyperTerminal'u wszystko dziala, wiec nie wiem co jest nie tak... jako program testowy na PC uzylem ten demonstracyjny ze strony www.codeguru.com (na loopback'u dziala), a na uP z programem ktory powinien emulowac loopback'a niestety nie :(
Oto zrodlo tego co jest w uP:
| Code: |
Dim A As Byte
Open "com3.1:9600" For Output As #1
Open "com3.0:9600" For Input As #2
Do
Get #2 , A
Put #1 , A
Loop
Close #1
Close #2
End
|
|
|
| Back to top |
|
 |
elektryk Poziom 26

Joined: 25 Apr 2002 Posts: 11092
|
#8
19 Feb 2004 01:09 Re: COM PORT w VC++ |
|
|
|
| ArtKar wrote: |
| Sprawdzalem co to jest handshaking... w jaki sposob go skonfigurowac i czy konieczne sa wtedy zmiany w oprogramowaniu w uP ?? |
No można, ale prościej jest go wogóle wyłączyć ;). Musisz tak przekonfigurować port szeregowy aby ignorował sygnały handshakingu.
|
|
| Back to top |
|
 |
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#9
19 Feb 2004 01:32 Re: COM PORT w VC++ |
|
|
|
haaa, tylko jak go wylaczyc ? ;) hehe, jak chodzi o sprawy zwiazane z portem to jestem nowicjuszem :D
|
|
| Back to top |
|
 |
BoskiDialer Poziom 22

Joined: 28 Nov 2003 Posts: 1533 Location: Żory
|
#10
19 Feb 2004 11:25 Re: COM PORT w VC++ |
|
|
|
Sory.. pomyliło mi sie... połącz ze sobą piny 4 i 6...
| Quote: |
| na porcie zalozylem loopback'a i wyslalem dana, dana wrocila, wszystko OK... |
| Quote: |
| Robilem rowniez testy na Hyperterminalu....tutaj dziala wszystko OK |
Sprawdź czy masz dobrą prędkość ustawioną. bo z tego co wyżej
napisałeś to wnioskuje że albo masz źle skonfigurowaną prędkość..
albo w transmisji występuje bit parzystości który dla mikrokontrolera
może oznaczać błąd transmisji.. spróbuj wgrać na mikrokontroler taki program:
| Code: |
dim a as bit
do
a = P1.0
P1.1 = a
loop |
Będzie on powodował loopback z poziomu programu mikrokontrolera..
p.s. zmień timeout na 5000...
|
|
| Back to top |
|
 |
Google

|
#
19 Feb 2004 11:25 |
|
|
|
|
|
| Back to top |
|
 |
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#11
20 Feb 2004 18:46 Re: COM PORT w VC++ |
|
|
|
...sprobowalem tym sposobem no i jest tak, ze w hyperterminalu dziala, a z C++ nie dziala :)
No ale wlasnie cos przy tym zauwazylem:
mam podlaczony komputer do uP przez MAX232... jak zewre wejscie RX i TX MAXa to dziala w hyperterminalu i z C++, jak za MAXem to tylko z hyperterminala...
Jaka wiec moze byc roznica w dzialaniu pomiedzy tymi dwoma programami??
Sprobuje jeszcze zerknac w aplikacje MAX'a, bo ja wykorzystalem gotowy uklad, ktory kiedys zrobilem pod flashowanie telefonikow, gdzie rowniez byl RX i TX wymagany
P.S. predkosc i parzystosc mam ustawiona OK
Dziekuje ;-), Pozdrawiam, ArtKar
|
|
| Back to top |
|
 |
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#12
21 Feb 2004 00:46 Re: COM PORT w VC++ |
|
|
|
DZIEKUUUUUJEE WAAAAAAM WSZYSTKIIIM ZA ZAINTEREEESOOWANIEE I POMOC:)
Udalo sie :) Juz dziala:)
A teraz takie pytanko male jeszcze??
w czasie transmisji potrzebuje aby program odczekal chwilke...
Jak moge w C++ zrobic cos w stylu 10ms pauzy??
Chodzi o to, ze PeCet musi nadac troche danych, nastepnie odczekac powiedzmy 10ms i znowu nadac...
Dziekuuuje :)
|
|
| Back to top |
|
 |
fantom Poziom 22

Joined: 23 Mar 2003 Posts: 1659 Location: Łódź
|
#13
23 Feb 2004 20:02 Re: COM PORT w VC++ |
|
|
|
Zainstaluj sobie timer funkcja SetTimer i obsluguj komunikat WM_TIMER w aplikacji.
|
|
| Back to top |
|
 |