WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Verbindung eines externen serial Ports

 

Keikuso
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 14.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2019, 12:49     Titel: Verbindung eines externen serial Ports
  Antworten mit Zitat      
Hey Leute, ich versuche gerade mit Matlab 2016a den Roboter Arm Dobot Magician zu steuern. Dazu benutze ich die Matlab Demo. Die habe ich ein wenig verändert, aber im wesentlichen ist das hier der Code:
Code:
%
%disconnect to prevent unending execution
calllib('DobotDll','DisconnectDobot');

%Alternativ connection attempt
% fclose(serial('COM4'));
% fopen(serial('COM4'))

%load DobotDll
if ~libisloaded('DobotDll')
   [notfound, warnings]=loadlibrary('DobotDll.dll','DobotDll.h');
end
%libfunctionsview DobotDll

%finding user port
% port = instrfindall;
% s = serial('COM4');


%create size 128 charArrays
ch=blanks(128);

%create pointer piont to charArrays
str1= libpointer('cstring',ch);



%search the magician device   res1:device number     res2:device address
[res1,res2]=calllib('DobotDll','SearchDobot',str1,128);

%create pointer piont to device address
str2= libpointer('cstring',res2);

%contect device res3:contect result 0:success 1:error 2:timeout
 [res3,res4]=calllib('DobotDll','ConnectDobot',str2, 115200);

%create queue index
queue_index=0;
%create ptp struct
ptp.ptpMode=0;
ptp.x=200.0;
ptp.y=-30.0;
ptp.z=80.0;
ptp.r=50.0;
%cmd start exec queue
calllib('DobotDll','SetQueuedCmdStartExec')

%create c type struct
ptpstruct=libstruct('tagPTPCmd',ptp);

%create ptp pointer
ptpstructptr=libpointer('tagPTPCmdPtr',ptpstruct);
queue_index_ptr=libpointer('uint64Ptr',queue_index);


%setting velocity

%send ptp cmd
calllib('DobotDll','SetPTPCmd',ptpstructptr,true,queue_index_ptr);

%Calling position
%Struct tag Pose
 pose = struct('x', 0, 'y', 0, 'z', 0, 'r', 0, 'jointAngle', [0;0;0;0]);
 posestruct = libstruct('tagPose',pose);
 posestructptr = libpointer('tagPosePtr', posestruct);
 [pos1,pos2] = calllib('DobotDll', 'GetPose', posestruct);
 
%Calling joint Angle


% Pose = ptp;
% PosePtr = libpointer('tagPosePtr', Pose);
% pose = calllib('DobotDll','GetPose');



%cmd stop exec queue
calllib('DobotDll','SetQueuedCmdStopExec');

%cmd disconnect device
  calllib('DobotDll','DisconnectDobot');

%clear value for possible restart
clear ptpstruct;
clear ptpstructptr;
clear str1;
clear str2;
clear queue_index_ptr;
%unloadlibrary DobotDll;


Meine Probleme sehen nun wie folgt aus:
1. Dieses Skript läuft nur, wenn der Roboterarm nach dem Einschalten schon mit der Software der Firma kurz etwas bewegt wurde. Davor läuft das Skript zwar, aber es gibt keine Antwort des Roboterarms.
2. Egal, ob der Roboterarm läuft oder nicht, es ist mir nicht möglich, eine Verbindung zu finden. Über die Befehle "serial('COM4')" und "instrfind" wird immer beim communicate state "closed" ausgegeben, auch wenn der Roboterarm sich bewegen lässt. Dabei wird ja im Skript eigentlich schon über die API des Dobot Magician schon eine Connection (und am Ende auch eine Disconnection) ausgeführt.
Versuche, wie mit fopen(serial('COM4')) sind leider auch kläglich gescheitert.

Es wäre sehr schön, wenn mir da jemand bei dem Problem helfen könnte.

Beste Grüße,
Kei
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.