Jel netko sam radio driver za serijski port na PC-u (IBM struktura) mislim da je to UART 16550 ili 16450 ? Inaèe ja bi si to volio napisat u VB.NET-u? Jel mi mo¾e neko reæ kako kontrolirat registre, da ja mogu napravit kao kod mikrokontrolera , da kad byte ude u UART da opali ISR i tamo da ja napi¹em neki kod da se izvr¹i!!
Nevjerujem da je netko pisao win driver za com port jer za tim nema potrebe (standardni hardware), a pogotovo da je to moguce koristenjem .net tehnologije nego se obicno se koristi C ili asm.
U ovom slucaju rjesenje je koristenje standardnog drivera i neke od klasa za serijsku komunikaciju koja podrzava evente npr
Bok. Nema frke sto se toga tice. Da vidis koji UART imas u kompu instaliras program tipa EVEREST i tamo ce ti pisat sve, pa i na kojem IRQ se nalazi. No ja ti vec sada mogu reci da sigurno imas 16550A (mislim da je to zadnji cip, danas je standard).
Trebas saznat baznu adresu (EVEREST ce ti reci) i dalje ides kao na mikrokontroleru, sve bi trebalo biti isti.
Jedini problem na koji ces sigurno naic je sto ti operacijski sustav nece dat prostup tom portu sam tak, jer jezgra vrti proc u "privilegiranom nacinu rada", dok se korisnicki programi vrte u "ogranicenom nacinu" i cim procesor pokusa izvest instrukciju pristupa portu (doticni LOAD ili STORE na adrese portova) bit ce prekinut. Moras naci driver (ima toga na netu) koji zaobilazi to ogranicenje.
Sorry na glupim izrazima s nacinima rada, valjda kuzis kaj mislim :)
AFAIK nema potrebe za pisanjem drivera ak koristi¹ .NET 2.0, jer on ima gotovu klasu za RS232 portove. Ja sam je koristio iz C#, pa je valjda mo¾e¹ i iz VB. Klasa je SerialPort iz System.IO.Ports. Ja sam u svom programu za diplomski koristil nekaj slièno onome kaj ti spominje¹. Konkretno, kad mi stignu 2 bajta, da mi se izvr¹i niz funkcija koje ih obrade. Za to sam koristil /event/. Svoju instancu klase podesi¹ da ti pokrene odreðenu funkciju kad port primi odreðeni broj bajtova. Vi¹e od toga ti ne mogu pisat sad napamet jer sam svoj VS2005 i MSDN Library ritualno deinstaliral kad mi vi¹e nije trebal.
Ovo je inaèe drugi naèin igranja lutrije, bar pod Windowsima. Polling, sinko, polling, jer ako spoji¹ komad hardwarea koji ne koristi ili ne radi dobro s RTS/CTS, na veæim brzinama dobije¹ buffer overflow. Ne ru¹i se aplikacija, nego stalno prepisuje zadnji primljeni podatak. C#, .NET2.0
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.