C Kysymykset

L

Lucifre

Guest
Olen Windws XP: n ja i-kirjain haluta jotta pääsy minun rinnakkaisporttiin käyttäen C .Olen kuullut, että on vaikea tehdä se tämän käyttöjärjestelmän.Onko tutorials minne tahansa verkossa, joka opettaa minulle, miten päästä rinnakkaisporttiin erityisesti Windows XP: ssä käyttäen pelkkää vanhojen dev C ?

Olen kuullut, että se ei ole ongelma, Visual C tai Borland C on se totta?

thanx foe auttaa

 
Hei,
Tarvitset tätä inpout32.dll Windows-järjestelmän hakemistoon ja teidän pitäisi olla kunnossa XP ainakin olen käyttänyt sitä tämän OS ajaa hieman pakkia ja lukea anturit jne. että en bult.I käyttää Visual C , mutta se toimii OK kanssa Borland ja Python jne.

http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html

En ole käyttänyt sitä virtuaalinen rinnakkaisportti, mutta se on OK, että standardin mukainen rinnakkaisporttiin.Luultavasti työn OK vaikka samanlaisia DLL työn OK kanssa sarjaporttia.

Tämä URL-osoite on hyödyllistä myös.
http://www.lvr.com/parport.htm

Bob.

 
pitää ...All I tarvitsee vain laittaa inpout31.dll minun ikkunat, sekä ohjelman jos olin voittaa 98?onko se niin yksinkertaista?tai minun täytyy soittaa tämän dll jonnekin minun koodin?

pahoillani im uutta ohjelmointia.

ja mistä saan tämän inpout31.dll?

thanx vastaamiselleLisätty jälkeen 12 minuuttia:ja missä voin esittää tämän dll?

 
Hei,
Voit ladata sen logix4u linkkiä sivun alalaidassa, että annoin teille edellinen postitse.Kopioi se C: \ Windows \ System-hakemistoon, että löydät kuten osalaitteistot kohdasta Windowsin C-asema.

Minulla on lähetetty joitakin C -koodia, että käytän ajaa minä kutsun minun CNC piispanhiippa laatikko, jota käytetään leikata tuskailla lanka lähtö vuonna kitara fretboards, jotta voit saada käsityksen siitä, miten käyttää dll, mielestäni on riittävästi kommentit on yksinkertainen console näyttö esimerkiksi koodi painettu alle sinua ymmärtämään bittinen, joka käsittelee saatavuuden inpout32.dll.

En tiedä, mikä ohjelmointikieli olet tyytyväinen, mutta alla oleva koodi laatii OK Visual C 6, se ei tarvitse inpout32.lib sisälly hankkeen yhdistää OK mutta se on zip-tiedosto, että te lataa kanssa dll.
Onnea
Bob.

Code:/ * Fret Cutting System Control ProgramVersion 1.0.Kirjoittanut RA Currell (Roseland Audio) October 2005.Array sijainti addr [3] on käytetty "Scratchpad kuvastaa rinnakkaista ulostuloportti

Array sijainti addr [4] on käytetty "Scratchpad kuvastaa anturi array

* /# include <iostream>

# include <math.h>

# include <conio.h>

# include <stdio.h>

# include <stdlib.h>

# include <string.h>

# include <malloc.h># include "stdafx.h"/ * ---- Prototyypit Inp ja mä --- * /lyhyt _stdcall Inp32 (lyhyt PortAddress);

mitätön _stdcall Out32 (lyhyt PortAddress, lyhyt tiedot);/ * Huomaa: Tämä toiminto vaatii InpOut32.dll on ladattu Windows System Directory.

(Katso Logix4u verkkosivuilla varten dll, sen koodaus ja käyttö * /

/*--------------------------------*// / Protopajapalvelut toiminto määritelmät.float GetScaleLength (void);

int GetFretNumber (void);

mitätön CalcFretPosition (int, float, float []);

mitätön GoToZeroFret (int []);

mitätön CalcLeadscrewRotations (float, float, int, int, float [], int []);

mitätön ClockParallelPort (pitkä, int, int, int []);

mitätön MoveSawToFretPos (int, int [], int []);

mitätön Delay (int);

BOOL Sensor (int []);

int ReadSensors (int []);

float GetLeadScrewPitch (void);main ()(

float Pituus, Fret [50], StepsPerRev;

int FretNum, toimenpiteet [50], addr [4], GearRatio;

kaksinkertaisen LeadscrewPitch;addr [0] = 0x378, addr [1] = 0x379, addr [2] = 0x37a, addr [3] = 0x62, addr [4] = 0;/ / LeadscrewPitch = 0,9170; / / mitattu sävelkorkeutta M6 kierteitetyt Studding käytetty prototyyppi leadscrew.

StepsPerRev = 44; / / päätöslauselmassa RS Stepper Motor tyyppi 351-4580.

GearRatio = 8; / / Gear Ratio sisäänrakennettu yksikkö.LeadscrewPitch = GetLeadScrewPitch (); / / Lue leadscrew piki alkaen kalibrointi tiedoston.

Pituus = GetScaleLength ();

FretNum = GetFretNumber ();

CalcFretPosition (FretNum, Pituus, Fret); / / arvot välimatkat laskettu ovat mm:

CalcLeadscrewRotations (LeadscrewPitch, StepsPerRev, GearRatio, FretNum, Fret, Steps); / * Lasketaan numero

/ / Toimia ensi tuskailla * /

GoToZeroFret (addr);

MoveSawToFretPos (FretNum, vaiheet, addr); / / Asema Saw opas ensi tuskailla kantaan.return 0;

)float GetScaleLength (void)(

char yksikköä;

float ScaleLength;printf ( "\ nDo haluat käyttää Metrinen tai englanninmittayksiköitä (m tai i)?");

yksikköä = (tolower (getche ()));jos (yksikköä == "m")

(

printf ( "\ n \ nOta syöttää mittakaavassa pituus saa käyttää millimetriä?");scanf ( "% f", & ScaleLength);

)

muuten

(

printf ( "\ n \ nOta syöttää mittakaavassa pituus saa käyttää tuumaa?");

scanf ( "% f", & ScaleLength);

ScaleLength = ScaleLength * 25,4; / / Muunna Englanninyksiköillä mittakaavassa pituus tuumaa, että mm.

)palata ScaleLength;)int GetFretNumber (void)(

int fretNumber;printf ( "\ nOta määrää Frets saa käyttää laajuuden?");

scanf ( "% u", & fretNumber);palata fretNumber;

)mitätön CalcFretPosition (int Fretnum, float Scale, float Fret [])

(

kaksinkertaisen FretConst;

int i;Fret [0] = 0;FretConst = (1 / (exp (log (2) / 12) -1)) 1;for (i = 1, i <Fretnum 1; i ) Fret = Scale / FretConst;for (i = 1, i <Fretnum 1; i ) Fret = ((Scale-Fret [i-1]) / FretConst) Fret [i-1];

return;

)mitätön CalcLeadscrewRotations (float Piki, float StepperRes, int Gear, int FretNum, float Fret [], int vaiheet [])(

float StepsPer_mm;

int i;

Toimenpiteet [0] = 0;StepsPer_mm = StepperRes * Gear / Piki;for (i = 1, i <FretNum, i )

(

Toimenpiteet = int (float ((Fret -Fret [i-1]) * StepsPer_mm));

)

return;

)mitätön ClockParallelPort (pitkä clocknum, int del, int dir, int addr [])

/ / Luo kellon Bits 1 ja 2 rinnakkaisporttiin ja aseta suuntaan kuin määritelty.(

int kello = 0x03, drivemotor = 0x20, i;addr [3] = ((addr [3] ^ drivemotor) & 0x7f) | dir;for (i = 0, i <clocknum, i )

(

addr [3] = addr [3] ^ kello;

Out32 (addr [0], addr [3]);

Viive (del);

if (kbhit ()) break;

)

addr [3] = addr [3] | 0x30;

Out32 (addr [0], addr [3]); / / Sammuta moottori teho (Bits D5 & D6 molemmat asetettu 1)

return;

)mitätön MoveSawToFretPos (int fretnum, int vaiheet [], int addr [])

(

int i, j, del, dir;del = 3, dir = 0x00;

printf ( "\ n \ nThe näki kuljetussopimusta nyt sijaittava Fret 0 (tai pähkinä, jos ei ole nolla tuskailla ).");

printf ( "\ n \ nOta perustaa sormi-aluksella ja korjata sen valmis sahaus ja tuskailla lähtö. \ n \ n");

for (i = 1, i <fretnum, i )

(

j = vaiheet ;

printf ( "\ nOta painat näppäintä liikkua näki toiseen tuskailla kantaan. Seuraava tuskailla määrä on% u", i);

while (! kbhit ());

if (getch ()==' \ x1b ') break;

ClockParallelPort (j, del, dir, addr);

)

printf ( "\ n \ n");

return;

)mitätön Delay (int del)/ / Delay rutiinia.
Arvioitu Delay = del kertaa 1 millisekunnin.

(

int i, kesto;

kesto = del * 400000;for (i = 0; i <kesto; i );

return;

)mitätön GoToZeroFret (int addr [])

/ / Etsi nollapiste mistä tahansa kuin nolla (at Sensor 1)!

(

int dir, alkaa;/ / Tarkista jos anturi ja siirtää asianmukaisesti, jos kylmä boot arvata suuntaan kuin eteenpäin.ReadSensors (addr);

if (addr [4] == 1)

(

dir = 0x00; / / Valitse eteenpäin.

start = 0;

)

muuten

(

dir = 0x80;

start = 1; / / Valitse päinvastoin.

)/ / Etsi lähin anturi ja päättää, minne mennä sieltä.printf ( "\ n \ nMoving näki kuljetuksen nollapiste, Odota! \ n \ n");while (! Sensor (addr)) (ClockParallelPort (4,1, dir, addr)); / / Mene lähimpään saatavilla anturi.

if (addr [4]> 2) dir = 0x80; / / Valitse päinvastoin.

muu dir = 0x00; / / Valitse eteenpäin jos alle alkaa kohta (Sensor 2).kun taas ((! Sensor (addr)) | (addr [4]! = 2)) (ClockParallelPort (4,1, dir, addr)); / / Siirry Sensor 2./ / Aina varmistettava, että kuljetukseen pysähtyy korkean puolella nollapiste anturi.while (Sensor (addr)) (ClockParallelPort (4,1,0 x00, addr));

ClockParallelPort (440,1,0 x00, addr); / / Siirrä noin 1mm selkeä ja sitten tökätä takaisin anturi.

while (! Sensor (addr)) (ClockParallelPort (4,3,0 x80, addr));return;

)BOOL Sensor (int addr [])/ / Lue anturi tavu ja asettaa lipun, jos anturi on aktiivinen

(

BOOL True = 1, Väärin = 0, Sens1 = FALSE;

int sens;sens = ReadSensors (addr);if (sens> 0)

(

Sens1 = True;

)

muuten

Sens1 = FALSE;palata Sens1;

)int ReadSensors (int addr [])/ * Lue tilan optisten asentoantureita kautta rinnakkaisporttiin asema rekisteriin.

Huomaa, anturit 4 ja 5 ovat Multipleksoituja osaksi bittinen S7 (joka on käännetty, että PC: lle), koska vain 5 panos

bittiä ovat käytettävissä, nämä kaksi anturit ovat demultiplexed käyttäen bittinen D4 on ulostuloportti

Hi = Sensor 4, Lo = Sensor 5.

* /

(

int Sens, Sens1, SelSens4;SelSens4 = 0x10;addr [3] = addr [3] | SelSens4;Out32 (addr [0], addr [3]);

Sens = Inp32 (addr [1]);/ * Käännä, naamio pois roskapostina bittiä sitten 3 oikeus siirtyy siirtää anturit niiden oikea binary kantaan.

Huom.
Myös oikea bittinen 7, joka on käänteinen, että tietokoneeseen.

* /Sens = Sens ^ 0x7f; / / Käännä kaikki bittiä paitsi bittinen 7, joka on käänteinen, että tietokoneen anturi tuotantopanokset ovat aktiivisia Lo.

Sens = Sens>> 3; / / Oikea muutos tarvitaan info osaksi oikea binary paikkaan./ / Nyt lukea anturi 5addr [3] = addr [3] ^ SelSens4;

Out32 (addr [0], addr [3]);

Sens1 = Inp32 (addr [1]);Sens1 = Sens1 &0x80; / / Huomautus Bit S7 on jo käännetty

Sens1 = Sens1>> 2; / / Put vaaditut bittinen osaksi bittinen 5 Sens muuttuja.

Sens = Sens | Sens1; / / Yhdistä se muun bittiä.

if (Sens> 0) addr [4] = Sens; / / Store viimeksi havaittu anturi asemaa yhteismarkkinoilla array.palata Sens;

)float GetLeadScrewPitch ()

/ / Lue kalibrointinsa tiedoston tietoja.

(

float piki;

int pnter = 0;

char kirjain, * string;

FILE * fptr;string = (char *) malloc (10);

strset (merkkijono,'0 ');jos ((fptr = fopen ( "FretCalFile.cal", "r")) == NULL)

(

printf ( "Kalibrointi Tiedostoa ei voi avata \ n"); / / oho!

while (! kbhit ());

exit (1);

)kun taas ((kirje! = EOF) & & (kirje! = '\ n'))

(

kirjain = GETC (fptr);jos (kirje! = '\ n')

(

String [pnter] = kirjain;

pnter = pnter 1;

)

)fclose (fptr);

Pitch = atof (string);palata piki;

)

 
Kiitos kaikille apuasi DrBob.Olen inpout32.dll minun windows/system32 hakemistoon, mutta olen kuullut, että minun on rekisteröi tämän dll.
Kun minä, että regsvr32 se antaa minulle virhe DllRegisterServer ei saapumispisteet todettiin,
enkä voi löytää vahvistaa sen ...joten luulisin i ei rajapinnat sataman afterall.
Olen myös kuullut päästä rinnakkaisporttiin Windows API-toimintoja, ei kellään tietoa siitä?

 
Hei,
En ole katsonut, että minun tarvitsi rekisteröidä dll kuten sanoitte, ja se toimi hyvin, kaikki löysin tarvittavat oli myös radoilla koodi esitetty lainaus osoittaa ohjelman että dll olemassa, se on sitten soittaa sitä paljon soittaa, kun se tarvitsee sitä saada tai lopettamaan tietoja.Lähetä tiedot Out32 (rinnakkaisporttiin osoite, "tietosi") tai lukea "tietosi" = Inp32 (rinnakkaisporttiin osoite).standardin käyttämä osoite PC varten rinnakkaisporttiin LPT1 on 0378h, v joka toimitetaan dll kuin 0x0378.

Quote:

/ * ---- Prototyypit Inp ja mä --- * /lyhyt _stdcall Inp32 (lyhyt PortAddress);

mitätön _stdcall Out32 (lyhyt PortAddress, lyhyt tiedot);/ * Huomaa: Tämä toiminto vaatii InpOut32.dll on ladattu Windows System Directory.

(Katso Logix4u verkkosivuilla varten dll, sen koodaus ja käyttö * /

/*--------------------------------*/
 
Thanx paljon ...That's all i tarpeen tietää.Lisää En online Tutkimus enemmän crap i törmännyt.

 

Welcome to EDABoard.com

Sponsor

Back
Top