INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

GPIB Gerätetreiber aus älterer C-Datei erstellen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

14.06.2006, 09:23 (Dieser Beitrag wurde zuletzt bearbeitet: 14.06.2006 09:25 von killissa.)
Beitrag #1

killissa Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jun 2006

7.00
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Hallo!

Ich stehe vor folgendem Problem: Ein uralter Messplatz-Computer hat seinen Geist aufgegeben, Ersatz gibt´s nicht. Auf dem Rechner lief ein LabWindows-Programm, das 4 Schrittmotoren und ein Zählrohr über GPIB steuerte. Ich möchte einen neuen, aktuellen GPIB Geräte-Treiber erstellen, habe aber nur die alten Dateien, insbesondere die C-Datei zur Verfügung.
Mit MAX finde ich das Gerät (Adresse 6), die Kommunikation scheint aber nicht so ganz zu klappen, weil ich eventuell das Gerät nicht richtig initialisiere. Ich habe die kurze und eigentlich recht simple C-Datei (mit C kenne ich mich aber kaum aus) hochgeladen, wäre schön, wenn mir jemand helfen könnte, was ich zuerst über GPIB schicken muss, damit ich das Gerät ansteuern kann.

Danke im Vorraus und beste Grüße!

Simon
Sonstige .zip  MINICAM.zip (Größe: 2,22 KB / Downloads: 344)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2006, 10:35
Beitrag #2

tobey Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2006

LabVIEW 7.1 Englisch
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Hi, aus der C Datei kann ich leider keine konkreten Befehle herauslesen. Dies muss anscheinend noch auf einer anderen Ebene geschehen, zumindest hab ich es so noch nie gesehen ;-)
Aber meines Wissen, muss man das Gerät nicht großartig initialisieren um mit ihm zu kommunizieren. Du musst nur die richtigen Befehle kennen und gut ist.
' schrieb:Hallo!

Ich stehe vor folgendem Problem: Ein uralter Messplatz-Computer hat seinen Geist aufgegeben, Ersatz gibt´s nicht. Auf dem Rechner lief ein LabWindows-Programm, das 4 Schrittmotoren und ein Zählrohr über GPIB steuerte. Ich möchte einen neuen, aktuellen GPIB Geräte-Treiber erstellen, habe aber nur die alten Dateien, insbesondere die C-Datei zur Verfügung.
Mit MAX finde ich das Gerät (Adresse 6), die Kommunikation scheint aber nicht so ganz zu klappen, weil ich eventuell das Gerät nicht richtig initialisiere. Ich habe die kurze und eigentlich recht simple C-Datei (mit C kenne ich mich aber kaum aus) hochgeladen, wäre schön, wenn mir jemand helfen könnte, was ich zuerst über GPIB schicken muss, damit ich das Gerät ansteuern kann.

Danke im Vorraus und beste Grüße!

Simon[attachment=28215:attachment]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2006, 13:07
Beitrag #3

killissa Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jun 2006

7.00
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Hi!

Also wenn ich mich im Inhalt der C-Datei nicht irre, sind die Steuerschritte beschrieben:

/*=========================================================================*/
/* Funktion mc_move. mc_move bewegt die Achse eines Schrittmotors. */
/*=========================================================================*/

void mc_move(Adresse,Schrittzahl,Schrittfrequenz)
int Adresse,Schrittzahl,Schrittfrequenz;
{
int schritte_hibyte,schritte_lobyte;
if (mc_device_closed())
return;
if (mc_invalid_integer_range(Schrittfrequenz,1,256,-1) != 0)
return;
if (mc_invalid_integer_range(Adresse,32,39,-1) != 0)
return;

schritte_hibyte=Schrittzahl>>8;
schritte_lobyte=Schrittzahl-(schritte_hibyte*256);

sende[0]=1;
sende[1]=Adresse;
sende[2]=0;
sende[3]=schritte_lobyte;
sende[4]=schritte_hibyte;
sende[5]=Schrittfrequenz;
sende[6]=0;

mc_write_data(sende,7);
mc_read_data(antwort,3);
}


Es sind wohl 7 byte, die man dem Gerät schicken muss. Hab ich auch gemacht, nur passiert leider nichts. Davor kommt aber in der C-Datei die Öffnungsroutine, die wohl nur hieraus besteht:

if (bd <= 0)
{ CloseInstrDevs("mc");
bd = OpenDev ("", "mc");
if (bd <= 0) {
mc_err = 220;
return;


Die checke ich aber mangels genügender C-Kenntnisse nicht. Wenn ich dem Gerät zuerst ein Null-Byte und dann mc schicke, kommt zumindest keine Fehlermeldung bei LabVIEW. Die Steuerbefehle nimmt er aber trotzdem nicht an.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2006, 14:13 (Dieser Beitrag wurde zuletzt bearbeitet: 14.06.2006 14:15 von tobey.)
Beitrag #4

tobey Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2006

LabVIEW 7.1 Englisch
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Das mit den 7 byte's hätte ich auch so verstanden. Aber komischer weise bestehen diese eigentlich nur aus Intiger Werten. Und ein SCPI Befehl ist normalerweise anders aufgebaut. z.B. ERR? (Fragezeichen steht für auslesen)
Hast du dazu keine Anleitung in der die Befehle und die Syntax definiert sind?
Wie ist denn dein VI aufgebaut? Ich hab mal ein kleines Bsp. angeheftet.
' schrieb:Hi!

Also wenn ich mich im Inhalt der C-Datei nicht irre, sind die Steuerschritte beschrieben:

/*=========================================================================*/
/* Funktion mc_move. mc_move bewegt die Achse eines Schrittmotors. */
/*=========================================================================*/

void mc_move(Adresse,Schrittzahl,Schrittfrequenz)
int Adresse,Schrittzahl,Schrittfrequenz;
{
int schritte_hibyte,schritte_lobyte;
if (mc_device_closed())
return;
if (mc_invalid_integer_range(Schrittfrequenz,1,256,-1) != 0)
return;
if (mc_invalid_integer_range(Adresse,32,39,-1) != 0)
return;

schritte_hibyte=Schrittzahl>>8;
schritte_lobyte=Schrittzahl-(schritte_hibyte*256);

sende[0]=1;
sende[1]=Adresse;
sende[2]=0;
sende[3]=schritte_lobyte;
sende[4]=schritte_hibyte;
sende[5]=Schrittfrequenz;
sende[6]=0;

mc_write_data(sende,7);
mc_read_data(antwort,3);
}


Es sind wohl 7 byte, die man dem Gerät schicken muss. Hab ich auch gemacht, nur passiert leider nichts. Davor kommt aber in der C-Datei die Öffnungsroutine, die wohl nur hieraus besteht:

if (bd <= 0)
{ CloseInstrDevs("mc");
bd = OpenDev ("", "mc");
if (bd <= 0) {
mc_err = 220;
return;


Die checke ich aber mangels genügender C-Kenntnisse nicht. Wenn ich dem Gerät zuerst ein Null-Byte und dann mc schicke, kommt zumindest keine Fehlermeldung bei LabVIEW. Die Steuerbefehle nimmt er aber trotzdem nicht an.


Angehängte Datei(en)
Sonstige .vi  bsp_gpib.vi (Größe: 24,02 KB / Downloads: 196)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2006, 15:36
Beitrag #5

killissa Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jun 2006

7.00
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Danke für das Test-VI! Ich werde es gleich Freitag ausprobieren (heut schaff ich´s nicht mehr und morgen is ja frei). Es sieht in etwa aus wie meins, aber doch etwas anders und mal sehen, was passiert.
An mein VI komme ich auch erst Freitag wieder ran und poste es dann.

Eine wirkliche Dokumentation habe ich leider nicht (nur ein Produkt-Prospekt), dazu kommt, dass das Gerät aus Anfang der 70er ist und die Firma schon längst nicht mehr existiert, also keine Doku auftreibar ist.

Ich habe es sowohl mit Integer-Werten als auch mit einem String in dem die Zahlen aus dem Quellcode in ASCI-Zeichen umgewandelt werden probiert, ging aber beides nicht. Letzteres sollte aber eigentlich stimmen, da im uralt-Prospekt für dieses Teil steht, dass eine word-Datei aus 7 byte als GPIB-Steuersequenz benutzt wird.

Danke und bis Freitag!


Simon
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2006, 12:25
Beitrag #6

killissa Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jun 2006

7.00
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Sorry für die späte ERFOLGSMELDUNG!
Mit Deinem VI habe ich meins modifiziert (GPIB Initialisierung rausgenommen und Mode=0 eingebaut) -und siehe da, es geht!
Super, jetzt kann ich den Treiber schreiben und wir können das Gerät wieder in Betrieb nehmen.

Vielen Dank!!!!
ciao!

simon


Angehängte Datei(en)
Sonstige .vi  GPIB_Rock_0.03.vi (Größe: 68,74 KB / Downloads: 224)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.07.2006, 07:43
Beitrag #7

tobey Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2006

LabVIEW 7.1 Englisch
2006
kA


Deutschland
GPIB Gerätetreiber aus älterer C-Datei erstellen
Naja lieber spät als nie...

Und kein Problem, ich helfe gerne weiter (wenn ich kann)

mfg
tobi

' schrieb:Sorry für die späte ERFOLGSMELDUNG!
Mit Deinem VI habe ich meins modifiziert (GPIB Initialisierung rausgenommen und Mode=0 eingebaut) -und siehe da, es geht!
Super, jetzt kann ich den Treiber schreiben und wir können das Gerät wieder in Betrieb nehmen.

Vielen Dank!!!!
ciao!

simon
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehler beim Erstellen einer Datei, durch VISA ausgelöst? Klausenwirt 5 6.778 14.03.2014 10:39
Letzter Beitrag: Klausenwirt
  Visa blockiert Gerätetreiber und umgekehrt T_T 2 3.645 14.02.2014 12:25
Letzter Beitrag: T_T
  Datei über GPIB Schnittstelle empfangen und speichern mrstrom 3 7.719 10.08.2011 13:24
Letzter Beitrag: mrstrom
  Gerätetreiber von 8.2 auf 8.6 Klauza 3 4.514 04.04.2011 17:13
Letzter Beitrag: Asche
  Versionskonflikt Gerätetreiber Stefan_ 2 3.231 20.01.2010 09:54
Letzter Beitrag: Stefan_
  Gerätetreiber runter speichern auf LV7.1.1 Cardinal1664 6 4.641 10.06.2009 07:17
Letzter Beitrag: Cardinal1664

Gehe zu: