RS-232: DTR, RTS get, set, clear

Fórumok

Üdv!

Találtam itt a fórumon is a témában dolgot, meg másmerre is egy csomó soros port kezelő programot, de nem jöttem ár belőle igazán arra ami kell. Építettem egy hőmérőt soros portra. A HW működik is tutira, mert van hozzá vindózos programom azzal tökéletesen kitudom olvasni az értékeket belőle.. Most azonban egy linuxos programot akarok hozzá írni a már meglévő vindózos alapján. A vindózos program alapja igazából az RTS és a DTR lábak ki és bekapcsolgatása, és ezt szeretném lemásolni Linuxon C-be. ioctl függvénnyel próbálkoztam, de csomó helyen láttam/hallottam, hogy ez már elavult és van helyette vmi más mostmár.. De nemigazán vagyok otthon soros port programozásban linuxon, úgyhogy nem tudom mi lenne az egyszerű, modern, működő megoldás az RTS és a DTR állapotának lekérdezésére, valamint a ki és bekapcsolására. Aki foglalkozott már ilyennel és tud okossat, ne fogja vissza magát ;]

Köszi, karika200

Hozzászólások

Én sok sorosportos meghajtást írtam linux alá.
Tömegspektrométer, különféle mérlegek, elektronikák, stb.
A beolvasást poll() - read() párossal végzem, az irás pedig
sima write(); mingyá nézek valami kis anyagot azt kiteszem
az ftp-re.

> Sol omnibus lucet.

No, akkor:

protokol: ftp
domain: meditor.hu
user: public
passwd: egy üres [enter]

cd ./c_examples és itt a ZeroPage.tar.gz

Ez egy soros kommunikációt mutat be, ami
tömegspektrométerhez készült. A feladat általánosan
van megfogalmazve, a ZeroPage-re ráépülő szoftver
megosztott memórián keresztül eteti illetve olvassa a puffereket, és a ZeroPage-t signállal kell rávenni
különböző dolgokra.

Az anyag tartalmazza a NI_USB-6008-as mérőkütyüvel
való kommunikációt is, ez ne zavarjon senkit, nyugodtan
ki lehet hagyni az olvasgatását.

Üdv: meditor
> Sol omnibus lucet.

hmm, ez nem egésszen az amit én szeretnék:| EZ simán csak read-el olvasgatja a portot.
Építettem egy hőmérőt, DS1621-es IC-vel. Egész pontossan ezt: http://users.atw.hu/home-elektro/project/pc_thermometer/pc_thermometer…
Van hozzá egy kész vindózos programom pascalban. Az a program a DTR és az RTS ki-be kapcsolgatásával olvassa le az adatokat az IC(k)ről. EZt a programot szeretném lemásolni C-ben. Ki-be szeretném kapcsolgatni az RTS-t illetve az DTR-t, és lekérdezni az állapotaikat:$

Nézd meg ezt: SLED! Az RTS és DTR húzogatásával ledeket kapcsolgat. Pár sor az egész.

Nos.. köszönöm a segítséget mindenkinek, amire kiváncsi voltam azt igazából megtudtam :) Most azonban egy másik problémám van, de ugyan ezzel a projecttel. Van egy VB-ben írt program a hőmérőmhöz, amit át akarok írni gnu C-re. Át is írtam, de valamiért nem igazán működik a dolog úgy ahogy kellene... Ha esetleg vetne rá vki egy pillantást, és esetleg rámutatna néhány hibára azt megköszönném ;]

A két fajta forrás itt érhető el: http://home.sinuslink.hu/stuff/thermosoft/

A Visual Basices program 100%, hogy működik ahogy kell.

Igy elso korben: Serial Programming example, kulonos tekintettel a sebessegallitasra, paritasra, meg egyebekre.
Aztan kezdd szepen megcsinalni a protokollt. Nem kell sztem ennyire szetvagdalni fuggvenyekre, egyelore a portkezelest csinald a main-bol, ugy konnyebb debuggolni. A protokollkezeleshez kell uj fgv csak.

--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

hu, bocsi, igazad van, el is kerülte a figyelmemet:$ Megnéztem közbe, akár még jó is lehet, bár másféle IC-khez van benne support, de alapnak jólehet. A sorosport példákkal meg igazából előrébb nem jutok, mert a soros port kezelés része a programnak működik, mert a két lábat tudom ki be kapcsolgatni, emrt rátettem egy ledet és tökéletesen kapcsolgatta a program rá a feszt :)

Nos, megoldódott a probléma. Igazából a kód a jelenlegi állapotában működőképes és jó értékeket ad vissza:

karika200@karika200-p4:~/prog/c/homero$ ./homero
Hőmérsékletek:
Benti: 23.000000 °C
Kinti: 15.000000 °C

Bár a tizedesek még nem stimmelnek de ez már csak részletkérdés. Érdekes egyébként a dolog.. Szedtem egy serial port sniffert és elindítottam, hogy megnézzem hol akad meg a kommunikáció. Mikor lefuttattam a hőmérőmet, hogy kezdje el a beszélgetést, akkor már jó értékeket adott vissza, és azóta ok.. :)

Köszönöm a sok segítséget mindenkinek :)