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

C-Programm in Matlab testen

 

uc_student
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2012, 13:54     Titel: C-Programm in Matlab testen
  Antworten mit Zitat      
Hallo zusammen

Ich habe ein mittlerweile grosses uC-Programm, welches eine Signalverarbeitung durchführt. Nun möchte ich die Signalverarbeitung auch noch in Matlab einbinden um weitere Versuche zu machen.

Mir ist es bereits gelungen mit dem mex eine Gateway funktion zu schreiben, der ich einen Vektror (Array) übergeben und wieder zurückgeben kann. Somit könnte ich den Eingangsdatenstrom übergeben und die decodierten Bits zurückgeben.

Das Problem ist jedoch, dass ich nur Funkionen aus meinem matlab_gateway.c aufrufen kann.

Der folgende Code funktioniert:
//File: matlab_gateway.c

void calculate_data(double array_out[], double subbits_in[])
{
array_out[0] = 3.0*subbits_in[0];
array_out[1] = 5.0*subbits_in[1];
array_out[2] = 9.0*subbits_in[2];
}

void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[] )
{
double *subbits_in;
double *array_out;

/* Assign pointers to each input and output. */
subbits_in = mxGetPr(prhs[0]);

/* Create matrix for the return argument. */
plhs[0] = mxCreateDoubleMatrix(1,3, mxREAL);
array_out = mxGetPr(plhs[0]);

/* Call the calculate_data subroutine. */
calculate_data(array_out,subbits_in);
}

Nun möchte ich jedoch Funktionen aus anderen c-Files aufrufen. Sobald ich ein weiteres h-File einbinde krieg ich nur Fehler:

#include "PHY.h"

Zeile: PHY_ENUM pd_data_request(uint8_t,uint8_t []);

error C2143: syntax error : missing ')' before '['
error C2090: function returns array
error C2059: syntax error : ')'
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.12.2012, 16:24     Titel:
  Antworten mit Zitat      
Hallo

wahrscheinlich muss du das Leerzeichen löschen
Code:

PHY_ENUM pd_data_request(uint8_t,uint8_t[]);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
uc_student
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2012, 16:33     Titel:
  Antworten mit Zitat      
Danke für den Tip. Dies hilft mir leider nicht. Ich habe immernoch dieselben Fehler.

Ich denke mittlerweile, dass MATLAB die uint8_t nicht versteht. Wenn ich diese in int8 ändere, versteht der Compiler deulich mehr. Kann ich dem Compiler meine uint8_t irgendwie beibringen? Ansonsten müsste ich mit unterschiedlichen Versionen arbeiten. Eine für den uC und eine für MATLAB.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.12.2012, 16:48     Titel:
  Antworten mit Zitat      
Hallo

Wird denn der Compiler vom Matlab unterstützt?
Code:


Du kannst das noch über DEFINE versuchen zu lösen
Code:

#define uint8_t unsigned char
 
Private Nachricht senden Benutzer-Profile anzeigen
 
uc_student
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2012, 16:55     Titel:
  Antworten mit Zitat      
Danke, dies scheint zu helfen!

Mit den beiden Anweisungen läuft mein Code schon wieder besser:

#define uint8_t unsigned char
#define uint32_t unsigned int

Doch in was muss ich meine uint16_t wandeln? word funktioniert schonmal nicht...

#define uint16_t unsigned word
Private Nachricht senden Benutzer-Profile anzeigen
 
uc_student
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2012, 17:33     Titel:
  Antworten mit Zitat      
Ok, ich habe es herausgefunden.

int16 entspricht einem short.

Kann du mir vielleicht erklären, wo es bei folgender Zeile ein '=' benötigt?

Zeile:
if(start_index<(SSI_RXBUF_SIZE/2)){

Fehlermeldung:
matlab_gateway.c(188) : error C2059: syntax error : '='
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.12.2012, 19:16     Titel:
  Antworten mit Zitat      
Hallo

da habe ich keine Ahnung, probiere mal die Innere Klammern zu entfernen.
Und schau dir Zeile vorher an, vielleicht wird die gemeint
Private Nachricht senden Benutzer-Profile anzeigen
 
uc_student
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 11.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2012, 10:59     Titel:
  Antworten mit Zitat      
Besten Dank. Der Fehler war einige Zeilen weiter oben. Durch den Kommentarblock dazwischen habe ich nicht darauf geachtet.
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 - 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.