Serial port (COMn) problemi (DOS prozor)

Apr 27, 2013 at 9:40 PM
Edited Apr 28, 2013 at 2:12 AM
Opet malo self-therapy, pisem samome sebi, a ko zeli neka procita.
Jos krajem prosle godine, kolega Dbone napisa kako se definira COM port pod Windowsima:
mode com1: to=on odsr=on idsr=on baud=9600 parity=n data=8 stop=1
mode lpt2=com1
I sve bjese u redu, dok se na jedoj masini ne pojavi slijedeca poruka (nakon prve mode komande):

Device COM1 is not currently available

Port postoji fizicki, u BIOS-u je definiran na 3F8/IRQ4 (default), vidi se u Device Manageru, ali nesto ga je blokiralo, a nemam pojma sta - masina cista, samo XP SP3 i driveri, deinstalirano sve sto smeta i ne treba. I sto je najzanimljivije, na nekim masinama se poruka pojavljuje, a na nekima ne.
Da skratim, nakon lutanja bespucima interneta, nadjem da disable/enable samog porta u device manageru i nakon toga resetiranje, moze rijesiti problem.

Jest, mislim se, bas ce tupan kojem je najvece tehnicko dostignuce u zivotu ciscenje deporatora kafe aparata, disejblat pa enejblat COM port u Device Manageru. Srecom, postoji devcon, besplatan utility kojim je to moguce.

Uglavnom, BAT/CMD procedura bi izgledala ovako:
@echo off
:gasimo pa palimo port
devcon disable ACPI\PNP0501
devcon enable ACPI\PNP0501

:ova kobasica je potrebna zbog printanja duzih fajlova-inace se printanje prekine
mode com1: to=on odsr=on idsr=on baud=9600 parity=n data=8 stop=1

:od sada printamo na virtualni LPT2 port jer LPT1 vjerojatno fizicki postoji
mode lpt2=com1
Nakon ovoga nije potrebno resetirati racunalo, ali se mora svaki put pozvati prije vase DOS aplikacije (barem jednom nakon bootanja). ACPI\PNP0501 je oznaka uredjaja COM1 (na vise razlicitih racunala je ista, pa vjerujem da je uvijek ista pod XP-om), ali to se moze provjeriti ovako:

devcon find * > lista.txt

i onda otvorite lista.txt i potrazite string COM1.

BTW, ono sto je najzanimljivije (barem meni), cim po bootanju dobijem mogucnost pokrenuti CMD, komanda MODE COM1 uredno prikazuje parametre i port nije blokiran. Imam vremena vise puta pokrenuti istu komandu, dok se port ne zablokira. Ocigledno ga blokira nesto sto se jos nije diglo u citavom procesu bootanja. E sto je to nesto, nemam pojma, a sad kad sam nasao rjesenje, nije me vise ni briga :)

EDIT: elegantnija varijanta trazenja naziva svih COMn uredjaja:

devcon find * | find "COM"
Apr 27, 2013 at 10:51 PM
Hvala za devcon .. možda još zatreba negdje :)

Inače, to se meni dešavalo sada kad sam postavljala nove win programe, a istovremeno se koriste još i stari, dos programi.

Ako je u windowsima instaliran driver za printer i vezan na COM port, u dosu ga više ne vidi, nije dostupan.
Bilo je dovoljno u windowsima prebaciti ispis na LPT2 port i sve je ok.
Naravno, treba samo napraviti redirekciju na lpt2 kod pokretanja windowsa kako bi sve radilo.
Apr 29, 2013 at 9:24 AM
Devcon sam testirao za disable grafičke kartice (isto ovo gore, samo ne za com nego vga) da bi dobio malu rezoluciju. Stvar je na prvi pogled izgledala odlično, ali se nakon višestrukog pokretanja devcona računalo zamrzlo (testirano na više računala).
Apr 29, 2013 at 2:34 PM
Ja sam VGA disejblirao na jednom Vista laptopu (da bih dobio pravi FULL SCREEN), ali sam to napravio rucno, u Device Manageru samo jedanput i tako je ostalo. Nemam potrebe to visekratno pozivati. Ovo sa COM portom, barem sam tako ja skuzio, dovoljno je pozvati samo 1 prije dizanja DOS aplikacije, ostane aktivno cijelu tu Windows sesiju (do sljedeceg restarta), tako da nisam skuzio probleme sa visekratnim koristenjem devcon-a.