DLL richtig verwenden?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

DLL richtig verwenden?

Beitrag von The_Dark_Zim-.- »

Hey Ho ich hab hier gerade ein kleines Problemchen ^^

Ich soll eine DLL verwenden um eine SPS an zu sprechen aber ich versteh das mit der DLL nicht so richtig ..
Evtl könnt ihr mir helfen ^^

Also ich hab hier ein Beispiel gegeben, aber weiss nicht wie ich es umschreiben soll zu PB :?

Code: Alles auswählen

//Variablen
int ComNr=2; //Schnittstelle COM2
long BaudRate=115200; //Baudrate 115200
BYTE PGMPIAdresse=0; //Adresse der DLL-Aplikation = 0
BYTE HoechsteMPI=31; //Höchste erlaubte Adresse im Netz = 31
bool SchnittstelleWarSchonAllokiert=false; //true wenn die
//Schnittselle schon
//genutzt wird
WORD Error=0; //Error-Variable
char ErrorString[255];//Error-String zum Anzeigen des Fehlers
int MPIHandle=-1; //Handle der neuen Kommunikationsinstanz
//Verbindung aufbauen
if (!MPI6_OpenRS232(&MPIHandle, ComNr, BaudRate, PGMPIAdresse,
HoechsteMPI,
&SchnittstelleWarSchonAllokiert,
&Error)){
//Fehler anzeigen
MPI_A_GetDLLError(MPIHandle, ErrorString, Error);
MessageBox(AppHandle, ErrorString, "", MB_ICONEXCLAMATION);
return;
}//ende if
MessageBox(AppHandle, "Einleitung war erfolgreich.", "",
MB_ICONINFORMATION);
Leider kann ich die DLL auch nicht auslesen, also die befehle raus ziehen..

Ich hatte nun das hier getestet komme da aber iwie nicht weiter.

Code: Alles auswählen

If OpenLibrary(0,"C:\ComDrvS7V6_Net.dll") ; Name of DLL to browse. 
        CallFunction(0, "MPI6_OpenRS232" ,-1, 2, 115200, 0,31)
  CloseLibrary(0) 
Else
Debug Error
EndIf
Wäre dankbar für jede hilfe :P
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Re: DLL richtig verwenden?

Beitrag von iostream »

Leider kann ich die DLL auch nicht auslesen, also die befehle raus ziehen..
So kannst du alle Funktionen einer DLL ermitteln:

Code: Alles auswählen

If OpenLibrary(0, "C:\ComDrvS7V6_Net.dll")
	ExamineLibraryFunctions(0)
	While NextLibraryFunction()
		Debug LibraryFunctionName() + " at adress " + Str(LibraryFunctionAdress())
	Wend
EndIf
OS: Windows 8.1 Pro
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Re: DLL richtig verwenden?

Beitrag von The_Dark_Zim-.- »

Genau das geht halt nicht ;)
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: DLL richtig verwenden?

Beitrag von Kiffi »

The_Dark_Zim-.- hat geschrieben:Genau das geht halt nicht ;)
das ist eine .NET-Dll. Die kann man so nicht auslesen.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Re: DLL richtig verwenden?

Beitrag von The_Dark_Zim-.- »

Das ist auch nicht so das Problem. Nur halt das wie ich es umschreiben muss damit PB damit klar kommt. Die Befehle hab ich hier in einem *.pdf drin.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: DLL richtig verwenden?

Beitrag von Kiffi »

The_Dark_Zim-.- hat geschrieben:Das ist auch nicht so das Problem.
denkst Du :lol:
The_Dark_Zim-.- hat geschrieben:Die Befehle hab ich hier in einem *.pdf drin.
schön, dass Du das PDF hast. Wir haben das PDF nicht. Deshalb wird
es wohl keine wirkliche Hilfe für Dich geben, bis Du Dich
entschließt, uns mal ein paar relevante Informationen zu geben.

Dennoch habe ich mal recherchiert und nehme an, das hat mit
diesem hier was zu tun:

http://www.mhj-software.com/de/mpi.htm

Wenn ja: Da steht, dass die DLL ein Wrapper ist, um sie in .NET nutzen
zu können. Deine Aufgabe ist es jetzt herauszufinden, was der Wrapper
wrappt (Bei Bedarf vorher mal erkundigen, was ein Wrapper ist). Oder
guck noch mal, ob es in Deinem Dev-Paket nicht noch irgendeine
andere DLL gibt.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: DLL richtig verwenden?

Beitrag von mk-soft »

Sollte kein Problem sein. schau mal in den ...\VB ordner rein. Die ComDrvS7V6_Declare_VB6.bas umschreiben nach Purebasic und schon sollte es gehen.

FF :wink:

P.S. Wenn diese mit VB6 zu verwenden geht dann hat die DLL nicht mit dotnet zu tun.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Re: DLL richtig verwenden?

Beitrag von The_Dark_Zim-.- »

Also ich hab da mal angerufen und die meinen das ich referenc parameter übermittle. Nun weiss ich aber nicht wie ich die wieder abfrage, Sprich wie verarbeite ich die Antwort der DLL ?

hier weitere Infos zu dem Befehl den ich benutzen will ^^
Declare Function MPI6_OpenRS232 _
Lib "mpia32_v60_vb.dll" (ByRef Handle_DLL As Integer, ByVal ComNr As Integer, ByVal BaudRate As Integer, _
ByVal PGAddress As Byte, ByVal HighestAddress As Byte, ByRef ComWasAlreadyUsed As Integer, _
ByRef Error_DLL As UShort) As Integer
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: DLL richtig verwenden?

Beitrag von mk-soft »

Nimm von ts-soft den http://www.purebasic.fr/german/viewtopi ... b2pbimport
und importiere die *.LIB aus den vb ordner. Wie ich aus der PDF gelesen habe ist diese dort vorhanden.

Sollte hinhauen.

Wie man ByRef und ByVal bei Purebasic Variablen übergeben werden steht in der Hilfe. Vielleicht hat jemand lust das zu erläutern.

An sonsten finde ich das ansprechen der SPS für ein Anfänger in der Programmierung eigendlich zu hoch.
Wenn Du genügend zeit hast ist es natürlich ein gute Aufgabe sich in Purebasic intensive ein zu arbeiten.

P.S. Die LIB und DLL für Delphi könnte besser gehen. Kenne aber nicht das Produkt.

P.P.S Nimm die für Delphi. hab noch mal nach gelesen
http://www.mhj-software.com/DownLoad/Ha ... vS7-V6.pdf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: DLL richtig verwenden?

Beitrag von mk-soft »

Ich lade mir mal den Driver runter. Ist vieleicht interessant für mich und teste mal das mit der S7 nächste Woche in der Firma.

:wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten