Seriel protokol - paritetsbit

Tags:    c++

Hej,

Jeg arbejder på et embedded system hvor jeg skal kunne interagere med trafikken på en seriel bus fra en pc (f.eks. opdatere firmwaren i apparaterne).

Jeg kan genbruge det meste af protollen fra det embeddede system, men det nederste lag der styrer uart'en skal selvfølgelig skrives om.

Protokollens nederste lag er baseret på at bruge paritetsbittet som frame-sync (altså indikation af første byte i en pakke). Dvs. man indstiller den serielle port til "even parity" og frame-sync forekommer så når der er paritets-fejl. Det er en udbredt måde at gøre det på fordi mange uart'er ikke understøtter det 9. bit som man ellers ofte bruger til netop frame-sync.

Det går fint i den embeddede verden hvor jeg har fuld kontrol over hardwaren, men på pc'en i visual studio 2005 kan jeg ikke finde ud af hvordan jeg skal gøre det. Jeg har fundet en del eksempler på kode til den serielle port ikke noget der bruger paritetscheck.

Hvordan får jeg hul på problemet? Kender I til eksempler jeg kan kigge i for at se hvordan det kan gøres?

På forhånd tak

Thomas Augustinus
Amfitech



Hej
Jeg mange ting med serie kommunikation. Blot for en ordens skyld ! Det er RS232 du skal kommunikrere med det udstyre du skla styre eller opdatere???

Hvis du går ind på www.beyondlogic.org kan du læse om hvordan URT`en på en PC kan programmeres. Husk dette er evt. kun i DOS mode. Hvis jeg skal hjælpe dig uden at løse problemmet skal du skrive hvilke komponent du bruger eller du ikke bruger til at kommunikere med den serielle port.

Forventet kommunikations type
Datalængde:8 bit, 1 stop bit, en start bit, en chek bit (Odd eller even).

Prøv lige
http://www.codeproject.com/system/serial.asp
Med Venlig Hilsen
Janus S. Andersen





Hej Janus

Tak for dit svar.

Det jeg skal er at lave en windows applikation der kan snakke med mine embeddede enheder der sidder på en rs485 bus. Jeg har lavet en usb-rs485 adapter der optræder som en uart (seriel port) på pc'en. På de embeddede enheder bruger jeg den uart der er indbygget i micro-controlleren (en lpc2103 fra NXP).

Bussen kører 115200bps, 8 data bit, 1 stop bit.

Paritet er som jeg skrev i den første post det der er tricky idet jeg bruger paritetsbittet til at indikere start af en pakke i protokollen. Dvs. jeg sender den første byte i hver pakke med parity=mark og alle efterfølgende bytes sendes med parity=space. På modtageren konfigurer jeg til parity=space og detekterer så start af en pakke ved at se om der kommer paritets-fejl.

Applikationen skal skrives i c eller c++ under visual studio 2005.

Havde jeg bare kunnet klare mig med en dos-applikation så var jeg glad - jeg har være embedded programmør i for mange år til at være rigtigt glad for ikke at kunne mærke hardwaren :-).

Jeg vil kigge på dine links!

Tak

Thomas Augustinus



Hej igen
Forresten kan du bruge mscomm32.ocx den er relativ nem at bruge. Den kan bruges i alle sprog.

Den instaleres sammen med Visuel Studie 6.0

Med Venlig Hilsen
Janus S. Andersen




Hej Igen
Jeg fik lige lyst til at poste et par link
http://www.logix4u.net/inpout32.htm
http://www.geekhideout.com/iodll.shtml

Det første link er til inpout32.dll som er en dll der kan bruges til at kontakte de fleste adresser i Windows.

Nr. to er næsten det sammen
Sammen med www.beyondlogic.org burde der være adgang til de meste på PC`en i Windows miljøet.

Jeg har selv brugt inpout32.dll nogle gange og har ikke haft problemer.
Med Venlig Hilsen
Janus S. Andersen




t