Zaslal: so březen 30 2013, 22:06 Předmět: Detekce 0/1 na COM portu
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 )
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).
Založen: Jun 14, 2003 Příspěvky: 2807 Bydliště: Blížejov
Zaslal: ne březen 31 2013, 12:12 Předmět:
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-pc-pod-windows-burkhard-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...
Založen: Feb 14, 2005 Příspěvky: 9090 Bydliště: Brno (JN89GF)
Zaslal: ne březen 31 2013, 12:26 Předmět:
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...)
č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.
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: ne březen 31 2013, 14:24 Předmět:
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.
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. _________________ www.mojeelektronika.mzf.cz
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?
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
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.