|
|
C-Programm in Matlab testen |
|
uc_student |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 11.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 13:54
Titel: C-Programm in Matlab testen
|
 |
|
 |
|
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 : ')'
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 16:24
Titel:
|
 |
Hallo
wahrscheinlich muss du das Leerzeichen löschen
|
|
|
uc_student |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 11.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 16:33
Titel:
|
 |
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.
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 16:48
Titel:
|
 |
Hallo
Wird denn der Compiler vom Matlab unterstützt?
Du kannst das noch über DEFINE versuchen zu lösen
|
|
|
uc_student |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 11.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 16:55
Titel:
|
 |
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
|
|
|
uc_student |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 11.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 17:33
Titel:
|
 |
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 : '='
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 19:16
Titel:
|
 |
Hallo
da habe ich keine Ahnung, probiere mal die Innere Klammern zu entfernen.
Und schau dir Zeile vorher an, vielleicht wird die gemeint
|
|
|
uc_student |
Themenstarter

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