| Autor | Správa |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: St 16.02.11 22: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. |
| |
  |
 |
vama
 Užívateľ
 Založený: 20.11.2009 Príspevky: 213 Bydlisko: Myjava Vek: 19
 | Zaslal: St 16.02.11 22: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ú správny čas na správnom mieste." M. Valášek | |
    |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: St 16.02.11 22: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. |
| |
  |
 |
vama
 Užívateľ
 Založený: 20.11.2009 Príspevky: 213 Bydlisko: Myjava Vek: 19
 | Zaslal: St 16.02.11 22: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ú správny čas na správnom mieste." M. Valášek | |
    |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: St 16.02.11 23:03 |   |
ok, už som to rozchodil. Vedel by si sem hodiť nejaké zdrojáky, kde ide to čítanie ??. |
| |
  |
 |
vama
 Užívateľ
 Založený: 20.11.2009 Príspevky: 213 Bydlisko: Myjava Vek: 19
 | Zaslal: St 16.02.11 23:30 |   |
|
    |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: St 16.02.11 23:46 |   |
Ok, skusim, zajtra kukni túto tému, keby som mal otázky . zatial vdaka. |
| |
  |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: Ut 01.03.11 14: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 |
| |
  |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: So 12.03.11 15: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 |
| |
  |
 |
vama
 Užívateľ
 Založený: 20.11.2009 Príspevky: 213 Bydlisko: Myjava Vek: 19
 | Zaslal: So 12.03.11 18:17 |   |
to EventChar , co znamena? |
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú správny čas na správnom mieste." M. Valášek | |
    |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: So 12.03.11 18: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)... |
| |
  |
 |
vama
 Užívateľ
 Založený: 20.11.2009 Príspevky: 213 Bydlisko: Myjava Vek: 19
 | Zaslal: So 12.03.11 22: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ú správny čas na správnom mieste." M. Valášek | |
    |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 | Zaslal: Ne 13.03.11 11: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. |
| |
  |
 |
vama
 Užívateľ
 Založený: 20.11.2009 Príspevky: 213 Bydlisko: Myjava Vek: 19
 | Zaslal: Ne 13.03.11 12:57 |   |
Jasne uz chapam, znak STX ti posiela samotny meraci pristroj? |
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú správny čas na správnom mieste." M. Valášek | |
    |
 |
Seth222
 Užívateľ
 Založený: 16.02.2011 Príspevky: 11
 |
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... |
| |
  |
 |
|