logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak programować port LPT w WinIO.h do sterowania silnikami krokowymi?

saturn75 11 Sty 2005 08:55 5799 7
REKLAMA
  • #1 1128164
    saturn75
    Poziom 1  
    Posty: 1
    Ocena: 1
    Niedawno zbudowałem układ sterowania do silników krokowych.
    Rysunek poniżej przedstawia ten układ sterowania.
    Jak programować port LPT w WinIO.h do sterowania silnikami krokowymi?

    W linuksie napisania prostego programu do sterowania silnika krokowego nie sprawiło mi większego problemu.
    Zamieszczam przykładowy kod źródłowy napisanego przeze mnie w linuksie

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

    static const int base_addr = 0x378;


    int main(int argc, char **argv)
    {
    int i, steps, usec;

    if (argc != 3) {
    printf ("Za mala liczba argumentow\n");
    exit (1);
    }

    steps = atoi(argv[1]);
    usec = atoi(argv[2]);

    if (ioperm (base_addr, 3, 1)) {
    perror ("ioporm");
    exit (1);
    }

    outb (0, 0x378);

    for (i = 0 ; i < steps; i++ ) {
    outb(8, 0x378);
    usleep(usec);
    outb(4, 0x378);
    usleep(usec);
    outb(2, 0x378);
    usleep(usec);
    outb(1, 0x378);
    usleep(usec);
    }

    if (ioperm (base_addr, 3, 0)) {
    perror ("ioporm");
    exit (1);
    }

    return 0;
    }

    Może jest ktoś mi w stanie pomóż napisać prosty program do sterowania silniczkami krokowymi pod Windowsem. W Windowsie programuje w C++Builder 6 z wykorzystaniem biblioteki WinIO.h
  • REKLAMA
  • #2 1128257
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 1128464
    fantom
    Poziom 31  
    Posty: 1649
    Pomógł: 108
    Ocena: 41
    Skorzystaj z dos.h i uzywaj dokladnie tych samych funkcji (oczywiscie oprocz ioperm).Do 98 nie bedziesz mial problemow a dla NT-kow skorzystaj z GiveIO.Z bibliotek oferujacych dostep w postaci dll-ek polecam DLPortIO, ktory laduje swoj sterownik a korzystanie z portow umozliwiaja funkcje wyciagane z dll-ki.

    PS. z tymi mikrosekundami to sa pobozne zyczenia nawet w linuksie.Jesli chcesz zeby chodzilo to w czasie rzeczywistym to napisz swoj sterownik i wkompiluj go w jadro.
  • Pomocny post
    #4 1128940
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    tu masz prosty przykład dla borlanda 6 - oparty na WinIO 2.0
    Załączniki:
    • przyklad.rar (222.22 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #5 1265143
    mufi
    Poziom 12  
    Posty: 99
    Pomógł: 2
    Ocena: 3
    mogłby ktos do tego programu dopisać co robi kolejna linijka chciałbym sie tego nauczyć, własnie opanowuje C++ nie bardzi sie połapałem ;/ PROSze! jestem zapalonym elektronikiem ale z C++ troche mi cięzko a chetnie bym sie pobawił LPT i napisał kilka ciekawych programow :)
  • REKLAMA
  • #7 2596921
    Demiurq
    Poziom 2  
    Posty: 2
    Postaram sie niedlugo umiescic zdjecie swojego robota sterowanego dzieki temu programikowi - bardzo fajny i prosty!!!

Podsumowanie tematu

✨ Dyskusja dotyczy programowania portu LPT w systemie Windows przy użyciu biblioteki WinIO.h do sterowania silnikami krokowymi. Autor przedstawił działający kod w Linuksie wykorzystujący bezpośredni dostęp do portu równoległego (0x378) za pomocą funkcji ioperm i outb. W odpowiedziach wskazano, że w Windows należy załadować odpowiedni sterownik (WinIO.sys dla Windows 2000/XP lub WinIO.vxd dla Windows 9x/ME) oraz mieć w katalogu plik WinIO.dll. Funkcje do zapisu na port są podobne, jednak konieczne jest wywołanie funkcji inicjującej sterownik i jego zwolnienie po zakończeniu programu. Alternatywnie polecono użycie bibliotek DLPortIO lub GiveIO, które umożliwiają dostęp do portów LPT w systemach NT. Zwrócono uwagę, że precyzyjne opóźnienia mikrosekundowe są trudne do osiągnięcia w trybie użytkownika i wymagają sterownika jądra. Podano także linki do bibliotek i przykładów kodu, a także sugestie dotyczące nauki programowania portu LPT w C++. Dyskusja zawierała także prośby o wyjaśnienie działania poszczególnych linii kodu oraz linki do zasobów z przykładami i sterownikami.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA