Avatar billede badedyr Nybegynder
09. marts 2001 - 14:59 Der er 6 kommentarer og
3 løsninger

Hardware programmering?

Det er et lidt løst spørgsmål, men jeg aner ikke hvor jeg skal spørge om det henne.
Hvordan kommer jeg igang med at programmere Hardware? Jeg fik af vide af en at en start til det var at købe en printplade og nogle dioder, og se om man kunne få de dioder aktiveret via seriel porten. Som i nok allerede kan se på min formulering af spørgsmålet er jeg TOTALT på bar bund! Jeg aner ikke hvor jeg skal gå igang, andet end at jeg læser en del om elektronik (bruger en lærerbog fra Datamekaniker uddanelsen) Jeg kan ikke kode i C men har fået af vide at det er et sprog der skal til for at lave F.eks. det med de 8 dioder på en printplade via seriel porten?

Jeg håber der er nogle der kan forstå mit \"underlige\" spørgsmål, og jeg er meget intereseret i nogle bogtitler eller links der kan give mig et hint til hvordan jeg kommer igang.
Avatar billede berg Nybegynder
09. marts 2001 - 15:10 #1
Hvis du har mulighed for at bruge VB, er der en bog om serial kommunikation her:

http://ourworld.compuserve.com/homepages/richard_grier/books.htm

Der er iøvrigt en DLL fil du kan bruge på siden, oxo...

der er et spm. der handler om noget af det du efterlyser her:
http://www.eksperten.dk/spm/52608

.:Berg:.
Avatar billede tuxen Nybegynder
12. marts 2001 - 15:03 #2
hvis du gerne vil programmere HW er det godt at kunne assembler for at kunne teste det nemt.

F.eks kan du teste dioder med parallelporten på følgende måde:
Put så mange dioder du vil ind i porten med det ene ben i hullet det andet på metallet rundt om porten.

Brug asm til at skrive direkte på parallelportens HW adresse.
Hvis adressen f.eks er 0x0378, skal du sende værdier til den, som den så vil tolke som den binære værdi.
D.v.s hvis du sender tallet 6 svarer, så svarer det binært til : 110
Defor vil den tænde 2 af benene, og lade de andre være, benene optræder i rækkefølge.
vis du ikke kender noget til programmering, så hent et diagnostiseringsværktøj til seriel og parallelporten på www.tucows.com og brug det til at tænde de huller du vil.
Husk at det ene ben af dioden skal røre mtallet rundt om porten.

Venlig hilsen Thue
Avatar billede badedyr Nybegynder
12. marts 2001 - 16:06 #3
tuxen: Kan du anbefale en bog til begyndere hvis man vil lære assembler? C F.eks. er det et godt sprog at kunne til det formål ?

Avatar billede tuxen Nybegynder
12. marts 2001 - 16:22 #4
Ja C / C++, er et rigtigt godt sted at starte da det er nemt at putte assembler kode direkte ind i C kode.
Du kan således bruge C til at repræsentere dine Data, og asm til at skrive og læse i din Hardware.
Inline assembler i C kode kan f.eks se sådan ud.

Forestil dig noget C++ kode her
Char myarray[10] = \"Hejsa badedyr\";

Så vil du gerne lave noget asm:
asm {

mov    dx,offset message
mov    ah,9
int    21h
mov    ax,4c00h
int    21h

}//slut på asm

Her vil du så fortsætte med alm. C++ kode

Dette skriver det der står i message ud.
Som du kan se er det nogle simple instruktioner der flytter nogen værdier ind i registrene dx og ax via mov og kalder interrupt 21h et par gange via int.

Disse simple instruktioner er nemme og slå op på nettet, men det bedste er nok at købe en begynderbog i C++ og en i Assembler.

Avatar billede soepro Nybegynder
13. marts 2001 - 09:33 #5
Vi har omtalt ligepræcis dette en gang tidligere her på eksperten:

http://www.eksperten.dk/spm/2736

Iøvrigt med samme resultat - nemlig at man skal via assembler.

\"Normal\" hardware (dvs. driver) programmering har jeg imellemtiden fundet ud af sker vha. såkaldte DDI (Device Driver Interfaces) som Windows \"forstår\". Drivers er en slags DLL\'er med nogle faste entrypoints (hvilke afhænger af typen af hardware) hcvor den underliggende kode normalt er lavet i C eller direkte i assembler. DDI\'er har under Windows \"lov\" til at adressere memory direkte, som man eller kun kan i DOS programmer - og der endda alligevel ikke altid. DDI er en videnskab for sig selv (som jeg ikke mestrer), og ikke noget man bare lige giver sig i kast med. (Jeg opgav, og købte et I/O kort der kan skrive til direkte vha. outp og inp ASM instruktionerne - og det er til at finde ud af.
Avatar billede soepro Nybegynder
13. marts 2001 - 09:43 #6
Jeg har selv lavet en version (i C++ Builder) til at arbejde på LPT1/LPT2 portene. Den kan hentes på

http://hjem.get2net.dk/soepro/download

og hedder lptio.zip
Avatar billede tuxen Nybegynder
13. marts 2001 - 10:53 #7
Korrekt, men man kan sagtens få lov at adressere windows hukommelsessegmenter uden for ens eget prg. hvis man bruger Win 95 / 98, men win2000 og NT beskytter memorysegmenter, så der fås Access violations.
Med mindre man som du siger får fat i DDK´et (device driver kit) og skriver en filter driver selv.
Thue
Avatar billede reficul Nybegynder
12. september 2001 - 21:37 #8
Hvis du bruger Windows NT/2k/XP kan du åbne serial-porten som en fil og bruge ReadFile og WriteFile til at sende og modtage.

CreateFile(\"\\\\\\\\.\\\\COM1\",GENERIC_READ|GENERIC_WRITE,0,OPEN_EXISTING,0,NULL);

I Win9x kan man åbne \"\\\\\\\\.\\\\VXD32\" eller sådan noget. Ikke lige noget, jeg har erfaringer med!
Avatar billede soepro Nybegynder
12. november 2002 - 12:26 #9
reficul >> Ifølge andre eksempler her på eksperten, skulle du da også kunne bruge CreateFile på Win9X/ME ?!?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester