Detekce 0/1 na COM portu

Problémy s návrhem, konstrukcí, zapojením, realizací elektronických zařízení

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
sgames
Příspěvky: 20
Registrován: 30 led 2011, 01:00

Detekce 0/1 na COM portu

#1 Příspěvek od sgames »

Zdravím,
potřeboval bych poradit s následujícím :

dejme tomu, že pořádám soutěže,kde se měří čas mezi průjezdem dvou branek. u každé branky sedí člověk co má v ruce čudlík. když ho zmáčkne, tak já na druhem konci toho čudlíku skrze COM port chci detekovat 1 (sepnuto). když čudl pustí tak 0 (rozepnuto)

prostě jen úplně základní detekci 1/0 stavu skrze COM port.

Dokáže někdo poradit ? (upozorňuju vůbec tomu nerozumím :) )

Uživatelský avatar
Yarda1
Příspěvky: 2372
Registrován: 11 úno 2009, 01:00

#2 Příspěvek od Yarda1 »

Pod MS-DOS (tak do W98) by to i pro mne byla brnkačka. Teď nevím.
Svět je divadlo, které se jen proto tak špatně hraje, abych já se měl čemu smát. Ladislav Stroupežnický

Uživatelský avatar
sgames
Příspěvky: 20
Registrován: 30 led 2011, 01:00

#3 Příspěvek od sgames »

je to win app.
umim v programu udelat connect na COM, ale jde mi spise o ten HW.

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#4 Příspěvek od frpr666 »

HW už můžeš koupit částečně hotový.
Za cca 100kč dostaneš koupit: RS232 TTL Převodník Modul MAX232.
Spojíš: 2x převodník, 2x Arduino, nahraješ sketch a např. při rychlosti komunikace 19200 se vlezeš do tolerance 1 milisekundy (zpoždění indikace průjezdu-příjem znaku 1 byte).

Uživatelský avatar
monterjirka
Příspěvky: 2761
Registrován: 14 čer 2003, 02:00
Bydliště: Blížejov

#5 Příspěvek od monterjirka »

B.Kainka, knihy o využití portů PC pod DOS i pod Windows, je to tam popsané dost podrobně, existuje k tomu i CD se SW na podporu "nápadů" z knihy.
(http://uloz.to/x4mHqXs/vyuziti-rozhrani ... kainka-rar)

V tomhle mám jasno, ale zatím jsem se neprobojoval k tomu, aby změna stavu na LPT nebo raději COM portu, kterou přečtu jako změnu na adrese (např.§3F8) šla nějak zpracovat v programu EXCEL...

Uživatelský avatar
forbidden
Příspěvky: 8808
Registrován: 14 úno 2005, 01:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#6 Příspěvek od forbidden »

Nevím, jak by to mohlo s excelem jít přímo, i když možnosti jeho programování jsou veliký. Snad by to šlo oklikou, kámoš má v práci čtečku čárových kódů, co se chová jako klávesnice. Funguje to pak všude, čtečka prostě funguje, jako by namačkal ty čísla ručně.
K původnímu dotazu. Buď tam dáš nějakej mikročip, kterej ti pošle celej byte, nebo by to snad šlo i jen pomocí blbýho tlačítka, ale to bys musel hlídat některej z řídících signálů (DTR, RTS...)

Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 02:00
Bydliště: Kadaň
Kontaktovat uživatele:

#7 Příspěvek od Jenda_KL »

forbidden píše: čtečku čárových kódů, co se chová jako klávesnice. Funguje to pak všude, čtečka prostě funguje, jako by namačkal ty čísla ručně.
Takové čtečky používáme taky. Možno by šlo vykuchat čtecí část a zbytek použít. 1ms ale asi ne.
Dal bych tam nějakej MCU, v něm nechal běžet čas a ten pak posílal po stisku do PC.
Nebo bez PC se tomu říká stopky, je to hotový a funkční, akorát to neumí zapisovat do tabulky. Vytáhnout tlačítka ven a je hotovo.

Uživatelský avatar
rnbw
Příspěvky: 32312
Registrován: 21 bře 2006, 01:00
Bydliště: Bratislava

#8 Příspěvek od rnbw »

Alebo daj kazdemu cloveku jednu klavesnicu...

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#9 Příspěvek od procesor »

To stačí kábel a tlačídka + konektor 9 alebo 25 pin.
Na jeden výstup si posli log. 0(napr. DTR), na druhý log.1(napr. RTS)
Dva vstupy(CTS a DSR) budú cez dve tlačídka, zavesené na log.1,
zároveň tie vstupy (pre istotu) priveď cez 10k rezistory na log.0.

Aplikácia sleduje CTS a DSR.
Přílohy
COMx.JPG
(29.87 KiB) Staženo 61 x
Tlacidla-COM.JPG
(88.42 KiB) Staženo 59 x
Naposledy upravil(a) procesor dne 31 bře 2013, 16:17, celkem upraveno 1 x.

Uživatelský avatar
bum
Příspěvky: 227
Registrován: 04 zář 2011, 02:00
Kontaktovat uživatele:

#10 Příspěvek od bum »

Pro Vaši inspiraci HW jak to třeba vyřešit a co potřebujete tak něco podobného mám na www.mojeelektronika.ic.cz v článcích : časomíra pro závody hasičů, časomíra 2, čítač půlzů vodoměru, atd. Možná Vám to s HW pomůže jako inspirace.

p32
Příspěvky: 15069
Registrován: 13 led 2007, 01:00
Bydliště: Olomouc

#11 Příspěvek od p32 »

Možná jen hloupá poznámka, ale proč máš ty stránky zarovnané doprava a ne doleva ?

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#12 Příspěvek od frpr666 »

Při rychlosti 19200bps (a 10bitech/znak) vychází cca. 0.5ms na byte.
Dobrý převodníček RS232 zvládne 250kbps, to vychází 40 mikrosekund na byte.
To už spíš větší latenci bude mít ta aplikace na WIN. Mimochodem kolik metrů máme z bodu A do bodu B?

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#13 Příspěvek od petrfilipi »

V příloze posílám program (psaný v Delphi 7) a nezbytnou knihovnu (nakopírujte ji do Windows a Windows/System32). Testováno je to na W7 64bit s USB/RS232 převodníkem ASIX (dle mého názoru nejlepší převodník mezi převodníky). Program funguje jen s COM1.
Program ale, tak asi jako všechny prgramy pod Windows, pracuje na základě událostí, takže kontrola jednotlivých vývodů je prováděna ve smyčce (nastavil jsem 100 ms). Mohl bych nastavit méně, ale když Windows nebude chtít nebo nebude mít čas, tak tento proces stejně odsune do pozadí a provede ho až bude mít čas.
Bylo by asi možné napsat do jedné události nekonečnou smyčku, ale takto se programy dnes nepíší.
Jinak program je jednoduchý:
po startu se otevře COM1 - pokud existuje, nastaví se vývody 7 (RTS) a 4 (DTR) do log. 1, aby je pak bylo možné poslat zpět na testované vývody:
if opencom (pchar('COM1:9600,N,8,1'))=0 then begin
MessageDlg('Chyba při otevírání seriového portu COM1, program bude ukončen', mtConfirmation, [mbYes], 0);
halt;
end
else begin
dtr(1);
rts(1);
end;

a pak se jen ve smyčce časovače (100ms) kontrolují jednotlivé vývody:
if cts = 1 then label5.Caption:='1' else label5.Caption:='0';
if dsr = 1 then label6.Caption:='1' else label6.Caption:='0';
if dcd = 1 then label7.Caption:='1' else label7.Caption:='0';
if ri = 1 then label8.Caption:='1' else label8.Caption:='0';

Takže když spojíte vývod 7 (nebo 4) např s vývodem 1 9vývodového CANONu, měla by se u tohoto vývodu změnit 0 na 1.

Knihovna je od pana Burghrarda Kainky a nemá chybu, používám ji napříč Windowsým spektrem. Kdyby něco, ozvěte se.
Petr Filipi
Přílohy
COM port test.zip
(226.62 KiB) Staženo 75 x

Odpovědět

Zpět na „Řešení problémů s různými konstrukcemi“