| | |
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 |
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.
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 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 |
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 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.
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 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 |
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 16.02.2011 22:03 | |
|
ok, už som to rozchodil. Vedel by si sem hodiť nejaké zdrojáky, kde ide to čítanie ??.
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 16.02.2011 22:30 | |
|
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 16.02.2011 22:46 | |
|
vama píše:
Ok, skusim, zajtra kukni túto tému, keby som mal otázky . zatial vdaka.
|
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 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
|
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 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
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 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 |
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 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)...
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 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 |
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 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.
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 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 |
|
Registrovaný: 16.02.11 Prihlásený: 17.03.11 Príspevky: 11 Témy: 2 | Napísal autor témy Seth222: 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...
|
|
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
| 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
|
|