Forum: Mikrocontroller und Digitale Elektronik Erfahrungen im Ansprechen von MACH3 Steuerkarte mit libusb


von Timo_R (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,


ich versuche derzeit eine MACH3-Steuerkarte (rote Platine) mittels 
libusb anzusprechen, das klappt soweit. Ich versuche mit einem 
synchronen Bulk-Transfer nun Daten auf diese Karte zu senden, aber auch 
welche zu empfangen. Nun bin ich mir aber unsicher bei der 
Busadressierung und beim Deuten der gesendeten und empfangenen Daten. Am 
liebsten wäre es mir die Daten in binärer Form auszulesen und so auch 
auf die Karte zu senden. Leider habe ich derzeit keine Informationen zum 
Signalaufbau.

Das Auslesen der Daten mache ich mit folgender frei im Internet 
erhältlichen Routine:

#define BULK_EP_OUT     0x0081
#define BULK_EP_IN      0x0001

...
1
    printf("\nTo be sent: %s", my_string);
2
3
    e = libusb_bulk_transfer(handle, BULK_EP_IN, my_string, length, &transferred, 0);
4
    if(e == 0 && transferred == length)
5
    {
6
        printf("\nWrite successful!");
7
        printf("\nSent %d bytes with string: %s\n", transferred, my_string);
8
    }
9
    else
10
        printf("\nError in write! e = %d and transferred = %d\n", e, transferred);
11
12
    sleep(3);
13
    i = 0;
14
15
    for(i = 0; i < length; i++)
16
    {
17
        e = libusb_bulk_transfer(handle, BULK_EP_OUT, my_string1, 64, &received, 0);  //64: Max Packet Length
18
        if(e == 0)
19
        {
20
            printf("\nReceived: ");
21
            printf("%i", my_string1[i]); //Will read a string from MACH3
22
            sleep(1);
23
        }
24
        else
25
        {
26
            printf("\nError in read! e = %d and received = %d\n", e, received);
27
            return -1;
28
        }
...

Nun meine Fragen:

(1) Nun dachte ich, dass in my_string und my_string1 die Daten schon in 
binärer Form vorliegen, bin ich da richtig?

(2) Die Terminalausgabe zeigt mir aber für die empfangenen Daten das 
angehangene Bild an. Wie kommt es da zu einem Wert von -1? Hat da jemand 
einen Ratschlag?

(3) Wie kann ich sicher gehen, dass ich die Daten an die richtige 
Adresse sende?

(4) Wie komme ich an Informationen zum Signalbild, ich möchte damit 
mindestens einen Schrittmotor ansteuern mit binären Werten die ich auf 
die Steuerkarte sende. Ich kenne aus dem Prozess schon Signalbilder, die 
ich gerne nochmals auf die Karte senden würde. Hat jemand Erfahrungen 
hinsichtlich der Adressierung und des Signalaufbaus von MACH3 Karten?


Es werden sich mit Sicherheit unserer Kommunikation hier noch weitere 
Fragen stellen hierzu - dank für fundierte Antworten im Vorhinein.


Mit besten Grüßen

von Thomas Z. (usbman)


Lesenswert?

Zu dem was du zeigst kann man nur sagen:
Das wird ein sehr steiniger Weg....

Ich behaupte jetzt einfach dass die Mach3 Karte ein HID Device ist. Das 
kann man Libusb ansteuern aber sicher nicht so.
Wie kommst du darauf mit printf binäre Daten auszugeben?
Deine Defines sind falsch Out ist 0x01 IN ist 0x81 Ich sehe aber nur 
einen Endpoints.
Zeig Mal den vollständigen Deskriptor Satz

von Timo_R (Gast)


Lesenswert?

(1) "...aber sicher nicht so..." - war das Ihr Ernst?


(2) Was meinen Sie mit Deskriptorsatz?



Danke für Ihren Unterstützungs - wohlgemerkt - Versuch ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.