|
|
Segmentation violation Fehler beim benutzten von calllib |
|
Bernd |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.01.2008, 14:33
Titel: Segmentation violation Fehler beim benutzten von calllib
|
 |
Hallo,
Ich möchte Matlab verwenden um mit Hilfe der dll eine motorisierte Stage anzusteuern. Ich kann die dll auch problemlos laden aber wenn ich versuche die initialisierungsfunktion zu benutzten dann bringt matlab immer
Segmentation violation
und fordert mich auf matlab neu zu starten.
Hatte vlt schon mal jm ein ähnliches Problem oder hat jm eine Idee
Danke Bernd
|
|
|
|
|
Nyquist |

Forum-Fortgeschrittener
|
 |
Beiträge: 60
|
 |
|
 |
Anmeldedatum: 19.11.07
|
 |
|
 |
Wohnort: Laupheim
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.01.2008, 16:02
Titel:
|
 |
Hallo Bernd,
wie hast du die DLL in Matlab eingefügt??
Also ich hab loadlibrary benützt. Mit libfunctionsview myname.dll kannst du Dir anzeigen lassen welche funktionen in deiner DLL enthalten sind. Wenn du alle Funktionen aufgelistet bekommst, dann sollte es mit calllib keine Komplikationen mehr geben. Du sollltest deine Funktionen aber auch so wie sie in libfunctionsview aufgelistet werden auch ansprechen.
_________________
Mit freundlcihem Gruß
Nyquist
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 31.01.2008, 16:34
Titel:
|
 |
Vermutlich werden die Daten, die Du zur Bearbeitung übergibst, nicht passen, weswegen es in der Funktion in der DLL zu einer Segmentation Violation kommt.
Nyquists Idee mit dem libfunctionsview ist da eine erste Möglichkeit, den Fehler zu suchen, auch wenn Du vorsichtig sein musst: Liegt im Programmcode der DLL ein Fehler vor, dann kann es sein, dass Dir auch die richtige Datenübergabe nichts bringt.
Am Sichersten ist es meiner Meinung nach, den Entwickler der DLL anzusprechen, wenn sich das Problem nicht beheben lässt.
|
|
|
bernd |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.01.2008, 18:13
Titel:
|
 |
Vielen dank für Eure Antwortn,
Ich habe mir die Funktionen schon mal mit libfunctionsview anzeigen lassen, das hat auch gut geklappt. Ich glaube dass Problem liegt darin dass matlab die in der dll definierten structures nicht richtig auslesen kann. In der dll sind structures definiert die pointer enthalten als einträge. wenn ich die in matlab einlese erkennt matlab immer nur die hälfte der einträge. eine dieser structure ist das argument der funktion die ich mit calllib aufrufen wollte.
hatte schon jm mal ein ähnliches problem, weiß jm vlt wie ich das umgehen könnte?? Ich hab gelesen dass man dazu ein mex file schreiben muß, stimmt das??
Vielen Vielen Dank für Eure Hilfe
Grüße Bernd
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 31.01.2008, 18:26
Titel:
|
 |
Man *muss* kein Mexfile schreiben.
Allerdings bietet es sich in vielen Fällen an, da die Kommunikation zwischen einer normalen C- oder C++-Oberfläche und Matlab deutlich vereinfacht wird.
|
|
|
Chaosler |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 14.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.03.2011, 14:41
Titel: Bibliothek einbinden
|
 |
Hallo!
ich habe auch mit loadlib die Bibliothek An21xx (bzw. USB32IO, die abgespeckte Version) für den Cypress Controller einer USB-Relaiskarte eingelesen.
Ich kann mit libfunctions/libfunctionsview alle Funktionen die ich benötige finden.
Beim Versuch den Treiber der Karte mit Hilfe einer Funktion (OpenDevice) der AN21xx.dll (bzw. USB32IO, die abgespeckte Version) zu laden stürzt MATLAB immer ab.
Es kommt zu einer
"Segmentation Violation"
Hat jemand Erfahrungen in dem Zusammenhang und kann mir evtl. einen Tipp geben um dieses Problem zu lösen?
In den anhang hab ich den StackTrace gelegt.
Danke!
Beschreibung: |
|
 Download |
Dateiname: |
Stack.txt |
Dateigröße: |
7.37 KB |
Heruntergeladen: |
412 mal |
|
|
|
Chaosler |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 14.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.03.2011, 23:59
Titel:
|
 |
|
 |
|
Hallo noch einmal.
Immernoch das selbe Problem.
Hat denn noch keiner ein Gerät mit diesem Cypress Controller und der AN21xx.dll versucht zum laufen zu bekommen?
Oder ein ähnliches Vorhaben realisiert sodass er mir einen Tipp geben könnte?
Hier der Programmbrocken die zum Absturz führt:
_________________
DeviceID = calllib ('USB32IO', 'OpenDevice', i,'EZUSB','','');
___________________
Die Bibliothek wird vor dem Aufruf der Funktion OpenDevice erfolgreich geladen.
Insgesamt sieht es folgendermaßen aus, vielleicht findet ja jemand aus den ersten Blick etwas was ich vor lauter Bäumen nicht mehr sehe:
________________________________________________
%%
clc
clear all
close all
%% Lib einlesen
if libisloaded ('USB32IO')
unloadlibrary USB32IO
end
loadlibrary ('USB32IO', 'USBDLL.h');
f1 = libfunctions('USB32IO','-full');
libfunctionsview('USB32IO')
DeviceCloseAll = 77; %Initialisierung zur Kontrolle
DeviceCloseAll = calllib ('USB32IO','CloseAllDevices');
pause(2)
%% deviceNr bestimmen
cardID = 512; %spezifische GeräteTypNr.
DeviceID= [77,'','','']; %Initialisierung zur Kontrolle
devNR = 77; %Initialisierung zur Kontrolle
DeviceClose = 77; %Initialisierung zur Kontrolle
for i=0:31;
DeviceID = calllib ('USB32IO', 'OpenDevice', i,'EZUSB','','');
Err_No = calllib ('USB32IO', 'GetDeviceError', i);
if (Err_No == 0);
if (DeviceID == cardID),
devNR = i;
break;
end
end
end
DeviceClose = calllib ('USB32IO','CloseDevice', i);
disp (devNR)
______________________________________________________
Langsam aber sicher bin ich am Verzweifeln.
Vielleicht mache ich auch etwas grundlegendes falsch oder was ich machen will ist mit dem Interface garnicht möglich?
Wäre super wenn jemand da mehr wüsste und es mir mitteilen könnte!
Beschreibung: |
|
 Download |
Dateiname: |
USB32IO.rar |
Dateigröße: |
148.02 KB |
Heruntergeladen: |
333 mal |
Beschreibung: |
|
 Download |
Dateiname: |
USBDLL.h |
Dateigröße: |
6.04 KB |
Heruntergeladen: |
720 mal |
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|