Jump to content

VB 6.0 und Freigaben im Netz


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Ich weis nicht ob das hier richtig eingeordnent ist ich stell einfach mal die Frage.

 

Wie kann ich mit Visual Basic 6.0 eine freigabe auf existenz pruefen ohne das mein Programm fuer laengere Zeit offline geht. Habe angefangen mit einem Ping auf die Maschiene ist dieser erfolgreich dann geprueft ob das File vorhanden ist und erst danach Zugriff auf das File in der Freigabe. Wenn jetzt aber aus welchen Gruenden auch immer die Freigabe verlorengegangen ist taucht mein Programm in die Unterwelt der Rechnermysterien ab bis das timeout abgelaufen ist und beim naechsten Zyklus passiert das gleiche. Darraus folgt bei einem Zykluszugriff von einmal die Sekunde das mein Programm haengt. Dies wiederum ist unakzeptabel weil das Programm eine Automatsierung steuern soll. Irgendjemand ein vorschlag wie oder wo ich dazu nachlesen kann.

 

Gruss Joee Dancer :confused:

Link zu diesem Kommentar

Hallo Joee,

 

was macht Dein Programm genau und wieso mußt Du auf das Verhandensein von

Rechnern und Freigaben prüfen? Kannst Du eine Datei nicht öffnen, dann ist auch

die jeweilig Freigabe und / oder Rechner nicht vorhanden, also wieso so kompliziert?

 

Mußt Du in die jeweilige Datei dann speichern, oder was soll mit der/den Datei(en)

geschehen? Sind es mehrere Dateien, die geöffnet werden müssen? Haben sie

unterschiedliche, oder gleiche Dateinamen? Schildere das Szenario also viel

genauer, Pflichtenhefte haben i. d. R. auch mehr Inhalt als 7 Zeilen. ...grins...

 

Was verstehst Du bitte unter steuern einer Automatisierung? Kannst Dich

ruhig auch wie ein Programmierer ausdrücken - man versteht Dich hier. :D

 

Wäre schön, wenn Du mal ein wenig Licht ins Dunkel bringst. ;)

 

LG

Marco

Link zu diesem Kommentar

Also dann mal los:

 

Die Datei enthaelt Soll und Istwerte eines Haerteofens sprich Solltemp;Isttemp.,Restlaufzeiten der geladenen Programme,Sowie Digitale Signale wie Lade/Entladefreigaben,usw. Diese Datei namendlich SetactCPx.bin muss ich einlesen um diese Werte in meiner Visualisierung darstellen zu koennen.Da diese Datei allerdings von 11 verschiedenen Oefen(Steuerungs PC's) geschrieben werden, liegen diese Dateien in 11 verschiedenen Freigaben im Netz. Wenn ich auf einen Datei zugreife und der Rechner ist aus fuehrt das zu einer sehr langen Zugriffszeit bevor eine Fehlermeldung zurueckommt. Da ich aber jede Sekunde versuche die Datei zu lesen fuehrt das wiederum dazu das mein Programm haengt. Jetzt pinge ich den Rechner an bevor ich auf die Datei zugreife das stellt sicher das wenigstens der Rechner lebt. Sollte jetzt was schon voegekommen ist der Steureungspc diese Freigabe verlieren stellt sich das gleich Problem allerdings antwortet dann der Pc auf den vorherigen Ping. Deshalb moechte ich eine Function bauen die vorher eine abfrage auf die Freigabe im Netz macht damit ich nur dann auf die Datei zugreife wenn diese ein positives ergebnis liefert.

 

Automatiserte Steuerung von Be und Entladen der Haerteoefen sowie derer Visualisierung auf eienem PC

 

Gruss Joee Dancer

 

P.S.: Entschuldige die Verzoegerung ich befinde mich gerade in den USA zwecks Inbetriebnahmen einer solchen Anlage. Dabei bin ich auf dieses Problem gestossen.

Link zu diesem Kommentar

Ein Hallo dem Joee.

 

Nun, als alter Programmierer für BDE / PDE / MDE - Applikationen kenne ich das Problem

mit dem Timing. Habe selber Programme für Härtelinien, Schneidanlagen, Arrondier-Maschinen

aus dem Bandstahl-bearbeitenden Bereich geschrieben.

 

Du willst also eine Art Leitrechner in Betrieb nehmen, der Dir die aktuellen Daten der

Härteöfen anzeigt. Bei einer Aktualisierungsfrequenz von 1s bei 11 Öfen hat man da

schon schnell ein Problem mit dem Timing und ich befürchte fast, dass man das auch

so nicht in den Griff bekommt.

 

Können die jeweiligen Steuerrechner Ihre Dateien nicht in eine "permanente" Freigabe

eines Servers ablegen?

 

Wenn Dein Programm aus zeitl. Gründen nicht prüfen kann, ob die Steuerechner laufen,

können sie es Deinem Programm nicht sagen? Soll heißen, kann man auf den jeweiligen

Rechnern noch andere Programme laufen lassen, die Dir dann ein "Heartbeat" schicken,

oder zumindest beim Hoch- u. Runterfahren eine Datei erzeugen und löschen, die Dir

das Vorhandensein der jeweiligen Rechner anzeigt?

 

Ich nehme an, die Steuerrechner laufen auch nur dann, wenn die Öfen belegt, also

somit aktiv sind. Die Rechner erfaßen dann über digitale IO-Karten die Impulse, die

von irgendwelchen Sensoren auf die Leitung gelegt werden. Besteht die Möglichkeit,

daß Du selber eine IO-Karte einbaust und diese abprüfst? Somit wüßtest Du indirekt,

dass die Steuerrechner wohl aktiv sein müßen - was dann nur einmal zu prüfen wäre.

 

Hmm - muß ich mir noch ein paar Gedanken zu machen, aber jetzt gehe ich erst einmal

in die Kiste. Hier ist es nämlich schon recht spät. ;)

 

Melde mich

Marco

Link zu diesem Kommentar

Ja fast genau so nur das die Signale nicht ueber I/O Karten sondern aus der Allen Bradley Steuerung(amerikanische S7) kommen via Industrial Ethernet, die Steuerungspc fuer die Haerteoefen laufen immer da diese die Oefen Realtime steuern. Mit jede Sekunde natuerlich nur eine Datei auslesen nicht alle 11 zusammen und dies dann aus einer Programmhauptschleife herraus.Aus Integrietaetsgruenden keine direkte Kommunikation zu der Ofensteuerung (Firmenpolitik) mein Rechner hat eh genug mit der Automatisierung sprich Ladersteuerung, Chargenverfolgung,Ein/Ausschleusevorgaenge, Visualisierung und Planung der Ladeabfolgung zu tun eben deshalb ist es unschoen (und ziemlich gefaehrlich) wenn der Automatiesierungsrechner steht/haengt.Die Anlage ansich laeuft schon rund ich mache nur noch Schoenheitskorrekturen darunter faellt eben auch mein Problem, solange alle Freigaben da sind, keine Probleme, allerdings kennst bestimmt auch du den Herrn Murphy. Kern der Sache bleibt, kann ich eine Function programmieren(VB 6.0) die wie nach folgende arbeitet nur eben Freigaben abfragt ohne ins timeout zu laufen wenn diese nicht da ist.

 

Programmcode VB.6.0:

*********************************************

**Public Function FileExists(sFile As String) As Boolean

**On Error Resume Next

** FileExists = False

** If (Trim(sFile) = "") Then Exit Function

** FileExists = (Dir(sFile) <> "")

**End Function

*********************************************

Habe auch schon bei VBArchiv gesucht aber nichts gefunden was mir weiter hilft.

 

 

Gruss Joee

Link zu diesem Kommentar

Hi Joee.

 

Vorab, ich bin leider nur C/CPP/C# - Programmierer und habe mit VB eigentlich nicht

viel am Hut, aber ich weiß wie man funky Programme schreibt. ;)

 

Ich würde garnicht auf Anwesenheit der Rechner, oder der Freigaben prüfen, denn

wenn ich versuche eine Datei via Open zu öffnen, dann bekomme ich einen Laufzeitfehler

wenn sie nicht zu öffnen ist und diesen Fehler kann ich behandeln. Somit hätte ich mir

schon mal die Prüfung auf Existenz der Datei gespart - zumal Dateinamen und Pfade

bekannt sind.

 

Wenn man jedoch trotzdem prüfen möchte, so gibt es effektivere, sprich etwas

performantere Lösungen als Deine function.

 

Du siehst mich demzufolge etwas irritiert, denn Du erfindest das Rad mal wieder neu,

wie es vielen Programmierern so geht.

 

Ich würde zum einen mal das FileSystemObject aus der scrrun.dll nutzen,

welches Dir u.a. schon die folgenden Methoden zur Verfügung stellt ...

 

  • DriveExist
  • FileExist
  • FolderExist

 

... und viele weitere nützliche Methoden und Eigenschaften, wie z. B.

 

  • isReady ( Eigenschaft, ob ein Laufwerk bereit ist )

 

Einbinden kannst Du es über das Menu. Siehe dazu: Projekt->Verweise->Windows

Scripting Runtime -> ggf. Durchsuchen -> C:\WINDOWS\System32\scrrun.dll

 

So, mache mir jetzt mal meine Gedanken, vielleicht küßt mich ja die Muse

und mir fällt noch was erleuchtendes zu dem Problem ein. Hmmm ...

 

Marco

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...