c++/lpt-signal-generator/lpt.cpp
author František Kučera <franta-hg@frantovo.cz>
Sun, 04 Jun 2017 14:57:42 +0200
changeset 44 896eca3d40d8
child 45 ea8642c17495
permissions -rw-r--r--
lpt-signal-generator: první verze
     1 /**
     2  * LPT signal generator
     3  * Copyright © 2017 František Kučera (frantovo.cz)
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, either version 3 of the License, or
     8  * (at your option) any later version.
     9  *
    10  * This program is distributed in the hope that it will be useful,
    11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    13  * GNU General Public License for more details.
    14  *
    15  * You should have received a copy of the GNU General Public License
    16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
    17  */
    18 
    19 #include <stdlib.h>
    20 #include <iostream>
    21 #include <stdio.h>
    22 #include <math.h>
    23 #include <sys/io.h>
    24 #include <unistd.h>
    25 
    26 using namespace std;
    27 
    28 // g++ lpt.cpp && ./a.out
    29 
    30 int main() {
    31   cout << "LPT!" << endl;
    32 
    33   //int addr = 0x378; // parport0
    34 
    35   int addr = 0xe400; // parport1
    36 
    37   //int addr = 0x278;
    38 
    39   //int addr = 0xc800;
    40 
    41 
    42   if (ioperm(addr,1,1)) { fprintf(stderr, "Access denied to %x\n", addr), exit(1); }
    43 
    44 
    45   for (int i = 0; i < 30; i++) {
    46     cout << "cyklus" << endl;
    47     usleep(100*1000);
    48     outb(0b11111111, addr);
    49     usleep(10*1000);
    50     outb(0b00000000, addr);
    51   }
    52 
    53 
    54   cout << "hotovo" << endl;
    55 
    56 
    57 }