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