seriële poort en ppi in Windows XP of 2000

M

MC & FPGA

Guest
Ik wil het gebruik van seriële poort parallelle poort in Windows 2000 of XP hoe kan ik ze gebruiken met VC
enig idee of ervaring over die?

 
Hoi
Een van mijn vrienden hebben geplaatst een antwoord op de seriële interface poort, dit als het kan werken voor jou.

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
Ik kan laten zien hoe je je dat hier doen.Ik
heb alleen gebruikt het een keer, en ik kan niet distribueren code die al voor de vergunningen.

Het creëren van het project

Maak een eenvoudige Dialog werkruimte in MSVC via het MFC
Toep.downloads wizard.De opties niet echt belangrijk, maar zorg ervoor dat u het selectievakje 'ActiveX-besturingselementen' optie in wanneer de wizard vraagt u in stap 2.

CMSComm voegen aan uw project

Open uw resource editor, zodat u kunt de belangrijkste dialoogvenster.Kijk op de werkbalk en controleert u of u niet al over de MSComm controle er (iemand anders kan zijn bewerkt de standaard werkruimte).Het lijkt een beetje telefoon.

Voeg de controle op uw project.Klik op het project>> toevoegen aan het project>> Onderdelen en bedieningselementen commando uit het menu.Dit commando zal een tijdje duren als MSVC scans van het register voor geregistreerde controles.Selecteer 'Geregistreerd ActiveX-besturingselementen' en klik op Invoegen.Vind het object 'Microsoft Communications Control, versie 6.0. "(of een andere versie), selecteer het en klik op Invoegen, klik op OK.Op dit punt MSVC zal prompt u voor welke delen van het ActiveX-besturingselement dat u wilt toevoegen.Er mag slechts een lijst staat, CMSComm,
keep it gecontroleerd.MSVC zal genereren een wrapper klasse voor het object, zodat je kunt gebruiken.U kunt de bestandsnamen en klasse naam als je wilt, maar voor dit doel, ik neem aan dat je links als zij.

Sluit het toevoegen van componenten dialoogvenster.

Nu, kijk naar uw dialoogvenster werkbalk bevat, moet u een nieuw icoon voor de CMSComm object.Selecteren, en trek een van deze op uw belangrijkste vorm.Een pictogram zal verschijnen, maar maak je geen zorgen, de controle zelf is onzichtbaar tijdens runtime.

Initialiseren van de CMSComm controle

Dit alles kan gedaan worden tijdens het uitvoeren, maar voor nu, laten we gewoon de eigenschappen op het ontwerp tijd.Klik met de rechtermuisknop op het pictogram voor de comm controle in uw dialoogvenster hulpbronnen en trek het dialoogvenster Eigenschappen.Onder controle, buffers, en Hardware tabbladen, die de eigenschappen die u wenst, zoals buad rate, pariteit, haven, enz.

Voeg een lid voor de controle

Om gebruik te maken van de controle, moet je een klasse lid.Open de Class Wizard, en van de Lid-Variabelen tab, selecteer het comm control (standaard zal worden opgeroepen IDC_MSCOMM1) en klik vervolgens op de 'Add Variabele ...'knop.Maak een naam, ik heb gebruikt m_comm.Controleer dat de variabele is een controle variabele, en dat het van het recht klasse (CMSComm).U kunt nu gebruik maken van dit lid variabele communitcate met uw com-poort.

Gebruik van de CMSComm controle

Hier
is een kort voorbeeld van hoe gebruik te maken van de controle.Het
is belangrijk om te wachten totdat uw OnInitDialog () aanroep (of elke keer na) alvorens te proberen om het te gebruiken, want niet alles zal worden gecreëerd / geïnitialiseerd voordat dit.

Code:
CMSComm m_comm / / MFC lid gegenereerd in de. H bestand

#
include "atlbase.h" / / CComVariant ondersteuning
# define COM_MS_TIMEOUT 5000 / / COM1 time-out in milliseconden

/ / Genereer een uitgang.
CString zuid;
/ / Bouw uw uitgang ...
zuid = _T ( "Hello world");
/ / Genereer een variant voor de output.
CComVariant vOut (zuid);
/ / Stuur de opdracht.
m_comm.SetOutput (vOut);

/ / Wacht op een antwoord.
/ / Dit is NIET een verwerker efficiënte manier van doen,
/ / Maar het krijgt het idee over te brengen.
DWORD dwNow, dwTimeOut, dwStart;
dwStart = GetTickCount ();
dwTimeOut = COM_MS_TIMEOUT;
CString zonde, sInBuffer;
CComVariant vin;
for (;

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />(
dwNow = GetTickCount ();
if (((dwNow - dwStart)> dwTimeOut) / / Timeout verstreken
| | (DwNow <dwStart)) / / Happens als aankruisen tellen wraps afgelopen 2 ^ 32
break;
vIn.Clear ();
vin = m_comm.GetInput ();
sin = vIn.bstrVal;
sInBuffer = sin;
/ / Check voor de beëindiging van een \ r karakter.
/ / Als we er een vinden, breken de lus anders
/ / Meer gegevens komt.
/ / De hardware wordt u interfacing met wellicht een
/ / Een andere terminatorsequenties sequentie.
if (sIn.Right (1) == _T ( "\ r"))
break;
)

Dit is de eenvoudige manier van doen.Als u geen gebruik maakt van een dialoog op alle, zal het lastiger het creëren van het object, want het zal niet automatisch door uw dialoogvenster's ActveX behandelaars.

 

Welcome to EDABoard.com

Sponsor

Back
Top