Publicada por tarcio em 17/07/2007 - 09:19h:
* tarcio usa Ubuntu

[ C de DOS para C de LINUX ]

Olá galera,

Gostaria que extamente esse código com as mesmas funcionalidades funcionasse no Linux, Alguém poderia me dar uma força?

O código liga LEDs conectados na porta LPT/lp.

//www.rogercom.com
//rogercom@rogercom.com
//-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define LPT1 0x378
int main(void)
{
unsigned char Valor=128; //Em binário: 10000000
while( Valor > 0 )
{
outportb(LPT1, Valor); // Envia para a Porta LPT1
printf("nPressione uma tecla para ascender o próximo LED...");
getch( );
Valor = Valor >> 1; //A cada passagem, o bit 1 é movido para a direita
}
}


Um grande abraço a todos

  
 
Resposta de mrazec em 17/07/2007 - 10:45h:
* mrazec usa Slackware
* mrazec tem conceito: nenhum voto.
 


I ai blz,
Bom o linux trabalha com arquivos. enviaremos no /dev/lp0 supondo que sua entrada lpt1 seja esta.Não tenho como testar o code que mexi aqui mas testa ele ai.
No linux nao utilizamos a biblioteca DOS.H e nem o CONIO.H.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
unsigned char Valor=128; //Em binário: 10000000
FILE *fp;
int flag = 1;
fp = fopen("/dev/lp0", "rb"); ///dev/lp0 caminho completo do arquivo.
while(flag){
printf("Enviando dados para impressora.");
printf("\nPressione uma tecla para ascender o próximo LED ou 0 para sair...");
scanf("%d", flag);
Valor = Valor >> 1; //A cada passagem, o bit 1 é movido para a direita
}
}

[]'s
Razec ->razec@linuxmail.org


 
Resposta de antonioclj em 17/07/2007 - 11:02h:
* antonioclj usa Fedora
* antonioclj tem conceito: 9.2
 


Faltou um & comercial no comando scanf("%d", &flag); no mais deve ta blz. Boa sorte.

 
Resposta de tarcio em 17/07/2007 - 13:29h:
* tarcio usa Ubuntu
* tarcio tem conceito: 8.5
 


Acabei conseguindo achar algo semelhante e que não necessita da biblioteca dos.h e etc.....


encrontrei esse código em http://www.tkk.fi/Misc/Electronics/circuits/lptout.c

/*
* Simple parallel port output control program for Linux
* Written and copyright by Tomi Engdahl 1998
* (e-mail: tomi.engdahl@hut.fi)
*
* The program output the data value to PC parallel port data pins
* (default lpt1 I/O address 0x378). The data values are given as the
* command line parameter to the program. The number can be
* in decimal (0..255) or hexadecimal format (0x00..0xFF).
*
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/io.h>

#define base 0x378 /* printer port base address */

main(int argc, char **argv)
{
int value;

if (argc!=2)
fprintf(stderr, "Error: Wrong number of arguments. This program needs one argument which is number between 0 and 255.\n"), exit(1);
if (sscanf(argv[1],"%i",&value)!=1)
fprintf(stderr, "Error: Parameter is not a number.\n"), exit(1);
if ((value<0) || (value>255))
fprintf(stderr, "Error: Invalid numeric value. The parameter number must be between 0 and 255\n"), exit(1);
if (ioperm(base,1,1))
fprintf(stderr, "Error: Couldn't get the port at %x\n", base), exit(1);

outb((unsigned char)value, base);
}

 
Resposta de mmilton62 em 29/08/2007 - 09:35h:
* mmilton62 usa Kurumin
* mmilton62 tem conceito: nenhum voto.
 


E quanto a porta serial, vc poderia me ajudar enviando um codigo que possa ler e escrever na serial? Algo do tipo colocar a serial em loop, digitar um char e echoar na tela.
Agradeço qq ajuda.


  


ATENÇÃO: Antes de contribuir com uma resposta, leia o artigo Qualidade de respostas e certifique-se de que esteja realmente contribuindo com a comunidade. Muitas vezes o ímpeto de contribuir nos leva a atrapalhar ao invés de ajudar.

Contribuir com resposta



CAPTCHA
[ Recarregar imagem ]

Digite o código acima:

  
* Nota: só é possível enviar respostas usuário que possui conta e esteja logado com ela, caso contrário sua mensagem será perdida.



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts