--portlar--

Başlatan dalavi, 18 Şubat 2004, 02:12:27

dalavi

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..  :?:

ground

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
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

ground

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(" ");

}
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

Eugene

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.

es-es

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

haciman

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
“Buna karşılık sizden hiçbir ücret istemiyorum. Benim ücretim ancak âlemlerin Rabbi olan Allah’a aittir.”  (Şu’arâ Sûresi 109)