Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 16.02.2011 21:37

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
Bydlisko: Myjava
Príspevok NapísalOffline : 16.02.2011 21:47

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
Príspevok Napísal autor témyOffline : 16.02.2011 21:52

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
Bydlisko: Myjava
Príspevok NapísalOffline : 16.02.2011 21:58

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
Príspevok Napísal autor témyOffline : 16.02.2011 22:03

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
Bydlisko: Myjava
Príspevok NapísalOffline : 16.02.2011 22:30

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
Príspevok Napísal autor témyOffline : 16.02.2011 22:46

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
Príspevok Napísal autor témyOffline : 01.03.2011 13:10

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
Príspevok Napísal autor témyOffline : 12.03.2011 14:39

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
Bydlisko: Myjava
Príspevok NapísalOffline : 12.03.2011 17:17

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
Príspevok Napísal autor témyOffline : 12.03.2011 17:39

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
Bydlisko: Myjava
Príspevok NapísalOffline : 12.03.2011 21:06

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
Príspevok Napísal autor témyOffline : 13.03.2011 10:18

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
Bydlisko: Myjava
Príspevok NapísalOffline : 13.03.2011 11:57

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
Príspevok Napísal autor témyOffline : 17.03.2011 23:39

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...


Odpovedať na tému [ Príspevkov: 15 ] 


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 Assembler, C, C++, Pascal, Java

7

376

08.08.2015 12:45

Dumitru Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra