Picproje Elektronik Sitesi

BİLGİSAYAR => Donanım ve Yazılım => Konuyu başlatan: dalavi - 18 Şubat 2004, 02:12:27

Başlık: --portlar--
Gönderen: dalavi - 18 Şubat 2004, 02:12:27
Merhaba arkadaslar bu soruyla cok karsilastniz belki ama banada bukonuda yardimci olursaniz sevinirim: c++ 6.0 kullaniyorum. Portlari kullanmak icin gerekli komut ve incl. dosyalarina ichtiyacim var yada en azindan bir örnek program..
Tesekkuürler..  :?:
Başlık: --portlar--
Gönderen: ground - 18 Şubat 2004, 11:38:43
sanırım dos.h veya conio.h dosyalarından birinde bu macro vardı..

outp(0x378,X);
veya
outportb(0x378,X);

not:  X göndermek istediğin bilgi
Başlık: --portlar--
Gönderen: ground - 18 Şubat 2004, 11:56:38
Güzel bi c uygulaması
/* PC deki paralel porta erişim
oku     : paralel portu okur. Eski tip portlar çift yönlü olmadığı için
         durum uçları giriş amaçlı kullanıldı
         ( 4-bit , bi-directiona, EPP, ECP )

yaz     : paralel port data uçlarına bilgi gönderir

oku_yaz : durum uçlarından okuduğunu veri uçlarına gönderir
*/


#include <stdio.h>
#include <dos.h>
#include <conio.h>

typedef unsigned word;

void binary_yaz(word);
void oku(void);
void yaz(void);
void oku_yaz(void);
word pdata=0x378;
word pstat=0x379;
word bout, bin;
char c;

main()

{
 do {

    clrscr();

    printf("1 - Oku\n");

    printf("2 - Yaz\n");

    printf("3 - Okuduğunu Yaz\n");

    printf("4 - Çık\n");

    c = getch();

    switch(c) {

        case '1' : oku(); break;

        case '2' : yaz(); break;

        case '3' : oku_yaz(); break;

        case '4' : exit(0);

    }

 } while (1);

}


void yaz(void)

{

 clrscr();

 printf("Gönderilecek veri :");

 scanf("%d", &bout);

 binary_yaz(bout); printf("\n");

 outport(pdata, bout);

 c = getch();

}

void oku(void)

{

 clrscr();

 do {

    bin = inportb(pstat);

    binary_yaz(bin);

    printf("   %d\n", bin);

    c = getch();

 } while (c != 'q');

}



void oku_yaz(void)

{

 clrscr();

 do {

    bin = inportb(pstat);

    gotoxy(1,8) ; printf("Okunan  = ");

    binary_yaz(bin);

    outport(pdata, bin);

    gotoxy(1,9) ; printf("Yazılan = ");

    binary_yaz(bin);



    printf("   %d\n", bin);

    c = getch();

 } while (c != 'q');

}



void binary_yaz(word x)

{

 word i;

 word m;



 m = 0x8000;

 for (i = 0; i<16; i++) {

     if (x & m)

        printf("1");

     else

        printf("0");

     m = m >> 1;

 }

 printf(" ");

}
Başlık: --portlar--
Gönderen: Eugene - 18 Şubat 2004, 15:32:30
Selam,

Windows NT tabanlı işletim sistemleri portlara direkt erişimi kısıtladığı için yukarıdaki kodlar Win NT,2000 ve XP'de çalışmaz ne yazık ki.Eğer bahsettiğiniz c++ 6.0, Visual C++ 6.0 ise portları direkt binary dosya açar gibi açıp byte olarak bilgi yazmalısınız. Pseudo kod vermek icap ederse :

FILE *F;
void *buf;

strcpy((char *)buf,"atz");
F = fopen("COM3","wb");
fwrite(F,buf,buf.length(),1);
fclose(F);

gibi... Borland C++ Builder'da hazır komponentler var yüklüyorsunuz ve çalışıyor.

Eugene.
Başlık: --portlar--
Gönderen: es-es - 18 Şubat 2004, 23:39:31
Eğer borland C++ kullanıyorsan aşağıdaki adresteki kodlar Win98,2000,XP de sorunsuz Çalışıyor:

Serial Communication with Borland C++:
http://www.traverse.com/people/poinsett/bcbcomm.html
Başlık: --portlar--
Gönderen: haciman - 07 Şubat 2005, 20:06:40
arkadaşlar iyi günler. Benim bir sorum olacaktı. bitirme projesi olarak bir sistem üzerinde çalışıyorum. Bu amaçla paralel portun D0 D1 D2 D3 D4 D5 data çıkışlarına sinyal gönderecek bir yazılıma ihtiyacım var. Bu yazılım benim istediğim çıkışlara istediğim süreyle sinyal göndermeli. Fakat borland c kullanarak böyle bir yazılım yazdığımızda portları istediğim süre açık tutamayacağım hakkında bir bilgi aldım. Benim sorum borland c kullanarak paralel portun data çıkışlarını istediğim süre açık tutabilirmiyim?eğer bu mümkünse bunun için basit bir c kodu önerebilirmisiniz. Şimdiden ilginiz için teşekkürler