folder Tahribat.com Forumları
linefolder C - C++
linefolder C/C++ İle Port Kontrolu - Ornek Kod İçeride -



C/C++ İle Port Kontrolu - Ornek Kod İçeride -

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    blue_dream
    blue_dream's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Mrb hocalar,

    gecenlerde c kullanaraktan port kontrolunu soran arkadaslar vardı. bi kitapta konuyla ilgili kaynak koda rastladım. fazla uzun bişe degil: muritlerin işine yarar belki die yaziim dedim. d0 d1 d2 ve d3 pinlerini kontrol edebiliosunuz. program "enter data" dedikten sora ondalık şekilde sayıyı girin o kadar :) bide "DATA" ya aktarılan deger paralel portunuzun base adresi.. onun da kendi bilgisayarınızla uyustugundan emin olun :) zaten cogu pc de 0378 dir ama belki sizin ki degişik fln olabilir.

    --- port adresime nası bakılır : winxp/2000 vs için bilgisayarıma sag tıklayıp ozellikler diin, donanıma gelip aygıt yoneticisini secin, baglantı noktalarına tıklayın, sora asagıda yazıcı baglkantı noktasına çift tıklayın. sekmelerden kaynakları secin. orda yazan ilk adres base adres...

    ahanda kodlar:

    #include <stdio.h>
    #include <string.h>
    #include <sys/io.h>

    /* kütüphaneler tanımlandı */

    #define DATA 0x378
    #define STATUS DATA+1
    #define CONTROL DATA+2

    /* burda port adreslerini tanımladık */

    int main()
    {
    int test;
    int again=1;
    int datatoport;
    int datafromport;
    printf("\n*******Parallel Port Control*******\n\n");

    /*ana fonksiyonlar, degiskenler vs */

    while (again)
    {
    printf("\nenter data\n");
    printf("(orn.255): ");
    scanf("%d", &datatoport);

    test=ioperm(DATA, 3. 1);
    /*port, num, turn on*/
    if (test)
    {
    printf("\nparallel port is not accessable\n");
    exit (-1);
    }
    else
    printf("naccessed to parallel port\n");

    outb(0000, DATA
    ioperm(DATA, 3, 0);
    exit (0);
    }

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tabela Fatihi
    kaygusuz
    kaygusuz's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    uğraşın için saoll....

    visul basicde de olsa bi de 


    Türkiye’deki emekli yaşlı insanları sevmiyorum. Ailemde emekli olanlarda dahil. Geleceğimizin çalınmasına izin verdiler. Umarım ızdırap dolu bir çileli hayat çekip elveda deyip bu dünyadan gidersiniz. Siz gençleri zırnık düşünmediniz hayallerini mahvettiniz.14.500TL ile hiçbirşey almadan karnınızı doyurun gelecek nesili düşünmeden yaşadığınızı sanıp gidin bu dünyadan.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    blue_dream
    blue_dream's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    sagol hocam, basicte cok daha kolay.. kod soyle:

    OUT <Portun adresi>, <Gonderilecek veri>

    orn: OUT &h378, 25

    baska sorular olursa aksama cvplamaya calşısırım bildigim kadarıyla hocalar.. şimdi yemek yapmam lazım :D

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ByCodeC
    ByCodeC's avatar
    Kayıt Tarihi: 18/Ağustos/2007
    Erkek

    o cod lar eski sistemlerde çalışıyor.malesef xp de sorun yaratır onun için en temiz çözüm win32 tabanlı serial port kullanımıdır...

     

     

    #include <windows.h>
    #include <iostream>
    #include <stdio.h>
    #include <fcntl.h>



    static HANDLE hSerial;
    static DCB dcbSerialParams = {0};
    static COMMTIMEOUTS timeouts = {0};
    HANDLE hThread;
    DWORD dwThreadID;

    int serialport(void);
    DWORD WINAPI ThreadProc(PVOID param);



    DWORD cBytes_out;

    BYTE s;

    char ch;

    int main()
    {
        std::cout << "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-" << std::endl;
      std::cout << "-------------- ByCodeC terminal -------------\n" << std::endl;
       std::cout <<  ".'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'." << std::endl;
        std::cout << "'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'" << std::endl;

      //  hThread = CreateThread(NULL,0,ThreadProc,NULL,0,&dwThreadID);

      serialport();

      return 0;
    }



    int serialport(void)
    {
      char szBuff[10] = {0};
      DWORD dwBytesRead = 0;


      hSerial = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,
                0,
                0,
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL,
                0);
      if(hSerial == INVALID_HANDLE_VALUE){
        if(GetLastError() == ERROR_FILE_NOT_FOUND){
          MessageBox(NULL,"error","error serial port",MB_OK);
        }
      }

      printf("com1\n"); //********

      dcbSerialParams.DCBlength = sizeof(dcbSerialParams);

      if(!GetCommState(hSerial,&dcbSerialParams)){
        MessageBox(NULL,"error","comstate",MB_OK);
      }

      dcbSerialParams.BaudRate = CBR_9600;
      dcbSerialParams.ByteSize = 8;
      dcbSerialParams.StopBits = ONESTOPBIT;
      dcbSerialParams.Parity    = NOPARITY;

      printf("BauD RaTe : 9600\n");
      printf("8N1\n\n\n");

      if(!GetCommState(hSerial,&dcbSerialParams)){
        MessageBox(NULL,"serial port yaratılamadı","serial port yaratılamadı",MB_OK);
      }
      MessageBox(NULL,"Serial Port OK\n9600 BauD RaTe\n8N1","ByCodeC SmarT TerminaL\n\n",MB_OK);


      timeouts.ReadIntervalTimeout     = 50;
      timeouts.ReadTotalTimeoutConstant   = 50;
      timeouts.ReadTotalTimeoutMultiplier = 10;
      timeouts.WriteTotalTimeoutConstant  = 50;
      timeouts.WriteTotalTimeoutMultiplier= 10;


      if(!SetCommTimeouts(hSerial,&timeouts)){
          MessageBox(NULL,"time error","time error",MB_OK);
      }

        EscapeCommFunction(hSerial,CLRDTR);
        // ReadFile(hSerial,&s,1,&dwBytesRead,NULL)
    ch = 0x00;

    WriteFile(hSerial,&ch,1, &cBytes_out, NULL);Sleep(500); //data yazma

    ReadFile(hSerial,&s,1,&dwBytesRead,NULL);printf(" %x ",s);//data okuma








        CloseHandle(hSerial);
        return 0;
    }




    //}
     


    Game Developer
Toplam Hit: 3767 Toplam Mesaj: 4