[ Príspevkov: 15 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
NapísalOffline : 16.02.2011 21:37 | RS 232

Cafte,

najde sa tu niekto kto skúšal riešiť RS232 (seriovú linku) v Delphi ?

No takto, snazim sa to robit cez component Cport4.11. Port mi najde, otvorí, viem ho otestovať ci je otvorený, ale nevim ho čítať. Tipujem ze to bude treba robiť cez comport1.read(). Nepotrebujem nič odosielať, len čisto čítať, nemá niekto s tymto skúsenosti ?. Formát toho co citam poznam, to som zistil cez Terminalv1.9b
je 16bajtov:
B0-Startovacie slovo (STX)
B1-je nieco
B2-je nieco
:
B15- CR- co by malo byt ukoncenie ratazca.

Za kazdu radu, vdaka.


Offline

Užívateľ
Užívateľ
RS 232

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58 | 58
Bydlisko: Myjava
NapísalOffline : 16.02.2011 21:47 | RS 232

Ja bezne pouzivam na komunikaciu s RS232 komponent TMS Async32. Citanie aj zapis pracuje bezproblemov.


_________________
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 16.02.2011 21:52 | RS 232

Delfičko máš aku verziu ? to som skúšal tiež, ale ani za nic, som ten komponent tam nevedel nahodiť, bez toho aby mi vyhadzovalo chyby. Ja mam D7 enterprise.


Offline

Užívateľ
Užívateľ
RS 232

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58 | 58
Bydlisko: Myjava
NapísalOffline : 16.02.2011 21:58 | RS 232

Tiez mam Delphi 7.
Nainstalovat ho treba tak ako je napisane v install
Citácia:
Delphi 7
1. Run Delphi 7 and select the FILE / OPEN menu item
2. Open the file Vacomm7.dpk and click Install.
3. Choose Environment options from the Tools menu.
4. Add the folder of vcl to the library path.


A potom ide bezproblemov.
treba najprv spustit Delphi a potom v nom otvorit ten komponent, dat nainstalovat a pridat ho medzi kniznice a je to.


_________________
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 16.02.2011 22:03 | RS 232

ok, už som to rozchodil. Vedel by si sem hodiť nejaké zdrojáky, kde ide to čítanie ??.


Offline

Užívateľ
Užívateľ
RS 232

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58 | 58
Bydlisko: Myjava
NapísalOffline : 16.02.2011 22:30 | RS 232

tu mam clanok o tom aj s prikladom: http://www.builder.cz/art/delphi/srozhrani2.html


_________________
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 16.02.2011 22:46 | RS 232

vama píše:
tu mam clanok o tom aj s prikladom: http://www.builder.cz/art/delphi/srozhrani2.html


Ok, skusim, zajtra kukni túto tému, keby som mal otázky :). zatial vdaka.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 01.03.2011 13:10 | RS 232

Vie mi niekto poradiť ako vymazať buffer ?

Čitam retazec cez
Citácia:
comport.readstr(str,16);


Ked spustím prístroj prvy krat, tak čítaný retazec má korektný tvar:
"s443300000000"

Ale keď spustím program druhy krát, čítaný retazec je zle načítaný napr:
"0000s443300000"

Predpokladam že to bude súvisieť s bufferom ktorý používam daný comport. Viem nejako vymazať tieto buffery napr, pred spustením komunikácie alebo pred ukončením aplikácie ?

Príkazy ktoré sa ponúkajú:
comport.clearbuffer(true,true) . //(vstupny buff, vystupny buff) problém však je pri ukončení apikácie, kde bud to aplikácia zamrzne, alebo sa vypne korrektne.

Este tom zabudol, ze v evente Comportu -> comport.ComPortRxChar čítam cez proceduru
comport.readstr(str,16) //retazec má 16bajtov


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 12.03.2011 14:39 | RS 232

stačilo nastaviť EventChar na "#1", sice komunikaciu nacita sem tam zle, ale po max 2 sekundach sa sama opravi :)

Dalsiu zradu robila "LED diodka" ktora signalizuje komunikáciu pri cítani RxChar... pri vypnuti komportu, ju bolo treba odpojit od Comportu ... alebo ju vyhodiť :).... az potom je možné korektne vypnuť aplikáciu


Offline

Užívateľ
Užívateľ
RS 232

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58 | 58
Bydlisko: Myjava
NapísalOffline : 12.03.2011 17:17 | RS 232

to EventChar , co znamena?


_________________
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 12.03.2011 17:39 | RS 232

menší preklep, má tam byť #2 :)

V ascii je to STX.... co je prave zaciatok retazca "¬" ktory citam, v meme ma takyto cely retazec (v mojom pripade) tvar "¬44360200000000".

Na zaklade tohoto znaku #2 = ASCII alebo "¬"= memo, zacina citat (onRxchar), a v ramci toho comportu4.11 je pravdepodobne urcity algoritmus, ktory sa po X pokusoch, znazi tento znak dostat na prve miesto stringu ktory citam > readstr(str,16)...


Offline

Užívateľ
Užívateľ
RS 232

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58 | 58
Bydlisko: Myjava
NapísalOffline : 12.03.2011 21:06 | RS 232

A ten znak STX vo stringu, je iba len v PASCAL, OBJECT PASCAL (DELPHI) ?

Pretoze co viem, tak v C, je iba ukonceny retazec \0 .


_________________
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 13.03.2011 10:18 | RS 232

No ty pises o ukonceni retazca, ja o jeho zaciatku. V mojom pripade pristroj oznami koniec retazca ako znak CR (ASCII = #13), Priamo v tomto comporte ide prave o prvy znak.

takto: (STX)434300000000(CR), kazde jedno cislo je jeden bajt.... posiela po bajtoch a cely retazec ktory potrebujem ma velkost 16bajtov (krory nacitam cez readstr(str,16)). To STX je v meme zobrazene ako:='¬' a CR je v meme zobrazene ako prazdne miesto.


Offline

Užívateľ
Užívateľ
RS 232

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58 | 58
Bydlisko: Myjava
NapísalOffline : 13.03.2011 11:57 | RS 232

Jasne uz chapam, znak STX ti posiela samotny meraci pristroj?


_________________
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.02.11
Prihlásený: 17.03.11
Príspevky: 11
Témy: 2 | 2
Napísal autor témyOffline : 17.03.2011 23:39 | RS 232

ano, on posiela dokola toto:

(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)(STX)434300000000(CR)..... atd....

samozrejme tie čisla sa menia...


 [ Príspevkov: 15 ] 


RS 232



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

RS-232 spuštanie stopiek

v Backend

7

462

08.08.2015 12:45

Dumitru



© 2005 - 2026 PCforum, edited by JanoF