Ovladani serioveho portu ve Visual C++

David Belohrad belohrad
Středa Březen 17 12:03:12 CET 2004


nevim co vidite na visual c zavadneho, ja osobne se domnivam, ze jde o
vubec nejlepsi kompilator pro platformu windows, a to jak co se tyce
ovladatelnosti, tak kompatibility se samotnymi windows. co se tyce
vaseho problemu:
seriak se vetsinou - pokud potrebujete jenom prenosy dat ovlada tak, ze
si otevrete
jako OPEN_EXISTING pipe s nazvem COM1-x (prikaz createfile), potom
pomoci getdcb, modifikace dat a setdcb (popripade pomoci buildcommdcb si
strukturu sestavite) a pak se k tomu chovate uplne stejne jako k
souboru, tj. writefile zapisuje data na port, readfile je cte. lze
nastavit setcommtimeouts pro nastaveni timeoutu. pokud potrebujete
prijimat data asynchronne, lze to take pouzit pomoci posledniho
parametru k read/write file kterym se k asynchronnim operacim
pristupuje. pomoci nektereho z event prikazu lze nastavit frontu zprav
tak, aby pri napr. zmene RTS/CTS signalu posilala do fronty zprav EVENT
command. vsechno se deje pres API, nikoliv pres ten OCX (ktery byl
mimochodem v puvodni verzi vs napsan pro visual basic a nikoliv visual
c, tudiz se ocekavalo _velmi zakladni_ pouziti). jeste poznamka:
problemy nastavaji v techto prikazech s pouzitim fifo, ktera  zpusobi
to, ze vy ty hlasky (v pripade cteni) a zapisy realizujete se zpozdenim
a to dokud nemate naplnene fifo. z tohoto duvodu mrkvosoft doporucuje (~
doporuceni neni na 2 cd msdn, ale najdete jej nekde na
msdn.microsoft.com) fifo vypinat pri prenosu kratkych datovych zprav.

-- to jsou asi tak me zkusenosti. 
-- abych predesel flamewar: nemam rad microsoft, jako svuj hlavni
operacni system pouzivam mandrake linux (v. 8.0), nicmene clovek se musi
ridit pranim zakaznika a tak kdyz potrebujete naprogramovat neco pro
_obycejneho_ uzivatele, tak se bohuzel prozatim musite smirit s tim, ze
pod W$ programovat proste budete :). co se tyce mrkvosoftu: existuji
snad pouze 2 dobre aplikace co kdy vyrobili: internet explorer (pocinaje
verzi 4:) a visual studio (pocinaje verzi 4)

-- jeste me ted napadlo: pri ukonceni programu: zavirate ten port? v
okamziku kdy jej neuzavrete a program je ukoncen mohou vzniknout
problemy

-- v pripade zajmu se ozvete na soukr. mail, mohu poslat draft zdrojaku
ve kterem je ukazka jednoduche implementace seriaku

d.


zoodiskus@mbox.vol.cz wrote:
> 
> Uz me ten Mrkvosoft vazne se.. !!
> 
> Pisu sw, ktery z modulu osazenych AT89C2051 pres RS-485 cte data.
> Zadny velky zazrak, v podstate jde o to z PC poslat na seriovy port balik dat (10-bytu) na ktery odpovi
> osloveny modul. Ovladani smeru komunikace po RS-485 je pres RTS a kontrolu spravnosti dat zajistuje CRC16.
> 
> V podstate mi to chodi, ale nikoliv bez problemu.
> 
> Pro ovladani portu jsem pouzil MSCOMM32.ocx a zde jsem narazil na prvni zadrhel. Ackoliv mam kompletni dokumentace k
> Visual Studiu (2ks CD) o pouziti MSCOMM v C++ se zde taktne mlci a tak jsem byl nucen postupovat metodou pokus omyl a
> vyznam jednotlivych funkci dedukovat z jejich nazvu.
> 
> Kupodivu to chodi k plne spokojenosti a to az do okamziku kdy program vypnu. Pri druhem spusteni programu jiz pripojeny modul
> nereaguje a pomuze pouze jeho reset.
> 
> Napadlo me, ze pri zavreni portu dojde na portu k stavu, ktery AT89C2051 vyhodnoti jako pokus o komunikaci (komunikace v aT89C2051 je rizena prerusenim)
> a program v Atmelu mi zatuhne. Rozumejsi vysvetleni me nenapadlo.
> 
> Pro sledovani komunikace na protu jsem pouzil program Portmon a v tom okamziku vse ustalo a komunikace funguje skvele bez ohledu na to kolikrat ridici sw
> na PC vypnu a zapnu.
> 
> Cele to bezi pod Windows 2000 a chova se to stejne i pokud vyhodim prevodniky na RS485 a komunikuji primo pomoci RS-235. Pokud mam zapnuty portmon je vse OK.
> A ted babo rad, respektive:
> 
> 1. Nevite kde sehnat nejakou pouzitelno dokumentaci pro pouziti MSComm ve VisualC++ ?
> 2. Nevite o nejakem jim vhodmejsim zpusobu ovladani protu v VisualC++ ?
> 3. Nesetkal jste se nekdo s podobnym problemem, pripadne nemate napad cim by to mohl byt ?
> 4. Nevite o programu pro sledovani komunikace na portech pro Win2000 ? Neco jako je Portmon, ktery mi naprosto vyhovuje,
>    ale PC po jeho pouziti nelze uspat a pomuze pouze znovunajeti systemu a to mi vadi.
> 
> Predem dekuji.





Další informace o konferenci Hw-list