Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lpt port vilket kommando?

Postades av 2003-11-05 23:45:14 - johan gustafsson, i forum c++, Tråden har 5 Kommentarer och lästs av 913 personer

Jag ska lägga ut ett tal på Lpt porten eller någon annan port.
har försökt med dessa kommandon:
outportb(port,tal);
outport(port,tal);
outp(port,tal);
min kompilator känner inte igen dessa kommandon trots att alla finns i hjälpen.
Vad är fel?
använder borland c++ 5.02 och builder 6 och msvisuell c++ 6.0
min kod ser ut så här för tillfället:

//Ska kunna styra pinnarna på LPT porten via tangentbordet
//börjar prog med en häftig meny
#include <iostream.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>

void meny(int);
int kommando(int);
void manuell();

int main()
{

int tal=1;
char tangent=28;
meny(tal);
while(tangent!=27)
{
tangent=getch();
if (tangent==0)
{
tangent=getch();
if (tangent==80)
tal++;
if (tangent==72)
tal--;
if (tal==5)
tal=1;
if (tal==0)
tal=4;
meny(tal);
}
if (tangent==13)
if(kommando(tal)==1)
return 0;
}
return 0;
}
//-------------------------------------------------------------------------
int kommando(int tal)
{
switch(tal)
{
case 1:
manuell();
break;
case 2:
window(1,1,80,25);
textbackground(3);
clrscr();
cout << "Har inte kommit än\n";
cout << "Tryck valfri tangent tilbaka för att komma tillbaka";
getch();
break;
case 3:
window(1,1,80,25);
textbackground(3);
clrscr();
cout << "Har inte kommit än\n";
cout << "Tryck valfri tangent tilbaka för att komma tillbaka";
getch();
break;
case 4:
return 1;
}

meny(tal);
return 0;
}

void meny(int tal)
{
textbackground(3);
clrscr();
const int a=27,b=8;
textbackground(4);
window(20,5,50,15);//vänster,top,höger,botten fönser dimmensioner 80*25
clrscr();
if(tal==1)
textbackground(5);
else
textbackground(6);
window(a,b,70,b+1); cprintf("Manuell körning");
if(tal==2)
textbackground(5);
else
textbackground(6);
window(a,b+1,70,b+2); cprintf( "Automatisk körning");
if(tal==3)
textbackground(5);
else
textbackground(6);
window(a,b+2,70,b+3); cprintf( "Inställningar");
if(tal==4)
textbackground(5);
else
textbackground(6);
window(a,b+3,70,b+4);cprintf( "Avsluta(Esc)");

}
//-------------------------------------------------------------------------------
//allt ovan är meny programet nedan kommer det som komunicerar med lpt porten

void manuell()
{
int tal=0;
char tangent=28;
bool pinne[7];
unsigned port = 378;//tror detta är LPT porten

for(int i=0;i<=6;i++)
pinne[i]=false;
window(1,1,80,25);
textbackground(3);
clrscr();
cout <<"(Esc) gör att du återvänder" << endl;
while(tangent!=27)
{

tangent=getch();
clrscr();
if (tangent<56 && tangent>47)
{
if (pinne[tangent-48]== true)
pinne[tangent-48]= false;
else
pinne[tangent-48]= true;
}
cout << "pinne2=" << pinne[0] << endl;
cout << "pinne3=" << pinne[1] << endl;
cout << "pinne4=" << pinne[2] << endl;
cout << "pinne5=" << pinne[3] << endl;
cout << "pinne6=" << pinne[4] << endl;
cout << "pinne7=" << pinne[5] << endl;
cout << "pinne8=" << pinne[6] << endl;
cout << "pinne9=" << pinne[7] << endl;
}
if(pinne[0]==true)
tal=tal +1;
if(pinne[1]==true)
tal=tal +2;
if(pinne[2]==true)
tal=tal +4;
if(pinne[3]==true)
tal=tal +8;
if(pinne[4]==true)
tal=tal +16;
if(pinne[5]==true)
tal=tal +32;
if(pinne[6]==true)
tal=tal +64;
if(pinne[7]==true)
tal=tal +128;

outportb(port,tal);
cout << "Talet = " << tal;
getch();
}


Svara

Sv: Lpt port vilket kommando?

Postades av 2003-11-06 13:36:40 - Niklas Jansson

Till att börja med bör du göra om alla <xxx.h> till <xxx>, och använda namespaces istället. Det finns flera gamla trådar om detta.

Sen skulle jag föreslå att du skippar alla "setcolor", osv. Allt som har med hur menyn fungerar tenderar att gå åt helvete så fort du byter kompilator. Kolla den tråden nedan för att se varför.

Menyns uppbyggnad är i mitt tycke onödigt krånglig och kan mycket lätt krångla. Skulle skrivit den mer i stil med (jag vet att det är lite "fulare", men det funkar mycket bättre i längden):

int meny();

int main()
{
//...
bool bCont=true;
while(bCont){
switch(meny){
case(1): //gör första grejen
case // ...
//...
case default:
bcont=false; break;
}
}
}

int meny()
{
int svar;
//skriv ut meny med ett antal alternativ, 1-X
std::cin << svar;
//här kanske du eventuellt måste göra en koll
}

Så slipper du bekymmer med det i onödan. Det SKULLE kunna vara lösningen, men det verkar inte vara fallet nu.

Du skriver inte vad du får för felmeddelanden, vilket gör det omöjligt att veta vad som är fel. Du får se till att du importerar rätt headers, och du måste använda rätt namespace.


Svara

Sv: Lpt port vilket kommando?

Postades av 2003-11-06 14:29:12 - johan gustafsson

I borland c++ får jag följande fel
Unit1.cpp(154,10):call to undefined function 'outp'
i hjälp filen till borland står det:
Syntax

#include <conio.h>
unsigned outpw(unsigned portid, unsigned value);

Description

Outputs a word to a hardware port.
outpw is a macro that writes the 16-bit word given by value to the output port specified by portid. It writes the low byte of value to portid, and the high byte of the word to portid +1, using a single 16-bit OUT instruction.
If outpw is called when conio.h has been included, it will be treated as a macro that expands to inline code. If you don't include conio.h, or if you do include conio.h and #undef the macro outpw, you'll get the outpw function.

Return Value

outpw returns value.
-----------------------------------
Skulle det kunna vara att jag kör XP som fukar till det?
Ändrar jag alla <xxx.h> till <xxx> så inkluderar borland ändå <xxx.h>
använder jag: using namespace std; får jag följande fel "Namespace name expected"
Har du någon bra compilers att rekomendera tror att allt hänger på den?


Svara

Sv: Lpt port vilket kommando?

Postades av 2003-11-06 16:33:31 - Niklas Jansson

<b>>Skulle det kunna vara att jag kör XP som fukar till det?</b>
Nej, det ger andra problem. Det felet säger är att det inte finns någon sådan funktion, vilket skulle innebära att du inte har includat rätt...

<b>>Ändrar jag alla <xxx.> till <xxx> så inkluderar borland ändå <xxx.h> </b>
Vad du menar med detta hajar jag inte. Du ska använda <xxx>-varianten tillsammans med using namespace (eller hellre typ "std::cout <<" eller "using std::cout")

<b>>Syntax
>#include <conio.h>
>unsigned outpw(unsigned portid, unsigned value);</b>

Där är en del av förklaringen: om du använder conio kan du vara säker på att det krånglar. Var ganska säker på att det inte fanns såna portoperationer i standard C++.

En bra kompilator är MinGW, som du får tillsammans med DevCpp, det är helt gratis.

Skulle rekommendera att du letar efter ett fristående bibliotek för att få tillgång till portarna. Om du kör windows borde det t.ex. finnas något i WinAPI.


Svara

Sv: Lpt port vilket kommando?

Postades av 2003-11-06 17:58:35 - johan gustafsson

Ändrar jag alla <xxx.h> till <xxx> så inkluderar borland ändå <xxx.h>
använder jag: using namespace std; får jag följande fel "Namespace name expected"
det jag menade med det va att denna kod
#include <iostream>
#include <dos>
#include <stdio>
#include <conio>
using namespace std;
ger dett felet
"Namespace name expected"
däremot om jag tar bort "using namespace std;" funkar det fint
Vilket kommando skulle du rekomendera för att lägga ut ett tal på lpt porten?
Vart hittar man info om vilka WinAPi:n som finns?
Denna kod är hämtad ur hjälpen till borland c++ varför får jag felet att
calling to undefiend funktion 'outp'?
Har varit inne i conio.h och kollat och jag hittar ju kommandot outp
#include <stdio.h>
#include <conio.h>

int main(void)
{
unsigned port = 0;
int value;
value = outp(port, 'C');
printf("Value %c sent to port number %d\n", value, port);
return 0;
}


Svara

Sv: Lpt port vilket kommando?

Postades av 2003-11-06 18:09:44 - Niklas Jansson

Ja, det är Borland som inte följer standarden - vänj dig vid det, kompilatorer håller jämt på och krånglar...

Det skall krävas att man använder "using namespace", men det tycker visst inte Borland...

MSDN kan nog vara en bra startpunkt; www.msdn.com


Det bästa du kan göra om du fortsätter med borland är att börja med att testa den koden du fått från hjälpen rakt av. Om den fungerar bygger du långsamt ut den och testar nya grejer. Så fort det blir fel ser du då vad problemen är. Bättre att bygga en meny runt portkommunikation än tvärtom i det här fallet.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
5 497
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies