www.mikrocontroller.net

Forum: Compiler & IDEs hohe C - Schule


Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
die nächste Frage zum C
Zunächst einmal der Anfang der Funktion

void loop_back_without_interrupt(void)
{
  Uchar buffer[8];
  st_cmd_t msg;    // Was ist das ???

  msg.pt_data = &buffer[0];
  msg.status = 0;
  msg.handle = 0;

"st_cmd_t" finde ich nur moch in einer Lib mit diesem Eintrag

Uchar can_cmd (st_cmd_t* cmd)
{
  Uchar mob_handle, cpt;


Ich würde das aber für eine lokale Variable halten, oder besser einen
Pointer. Ist hier wieder einmal der Name doppelt verwendet worden, oder
hängen die beiden irgendwie zusammen?

Auch finde ich keine Deklaration für "msg". Sie wird nicht lokal
definiert, nicht übergeben und eine globale Definition finde ich auch
nicht.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
st_cmd_t ist irgendein Datentyp (Struktur)!

msg wird als st_cmd_t angelegt.

Mit Pointern ist dort garnichts!!!

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<<st_cmd_t ist irgendein Datentyp (Struktur)!
Muss das nicht irgendwo deklariert werden?


msg wird als st_cmd_t angelegt. ??? Das Eine bekommt den Inhalt des
Anderen? Aber wie geht das. Es muss doch zuerst irgendwo deklariert
werden?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du einen CString anlegst, dann muss dieser doch auch nicht
deklariert werden, weil er bereits in irgendeiner Library drin steckt!

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nun, dann ist er ja deklariert, in der Library.
Ich finde das Ding hier aber nur 2 mal.

Das hier halte ich für eine Zuweisung

Uchar can_cmd (st_cmd_t* cmd)

und das auch

st_cmd_t msg;

wobei mir hier irgendwie eine zuweisungszeichen feht sowas wie "= "
oder so

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
!!! Nimm es doch einfach so hin und arbeite einfach damit !!!

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich kriegs ja nicht hin! der Zauber funktioniert nicht und ich versuche
rauszufinden warum. Wenn ich nicht weiß wer wem was übergibt und was er
damit tut.. ich weiß ja noch nicht einmal wem ich was übergebn muss und
wenn ich was zurückbekomme weiß ich nicht woher es kommt. Das sind
keine  guten Vorausstzungen um damit zu arbeiten.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu muß ein *.h-File existieren wo drin steht:

typedef blabla st_cmd_t;

anders geht es nicht.

Nur die Standardtypen int, char, float usw. sind vordefiniert.


Peter

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Struktur st_cmd_t ist irgendwo deklariert. Nicht in einer Library,
sondern in einer Headerdatei.


   Uchar can_cmd (st_cmd_t* cmd)
   {
     Uchar mob_handle, cpt;

Das hingegen ist der Anfang einer Funktion namens can_cmd. Die hat
einen Rückgabewert vom Typ Uchar und bekommt als Argument einen Pointer
auf obengenannte Struktur übergeben.

Wenn Du nicht in den Sourcefiles der Library suchen würdest, sondern in
den Headerdateien, dann stößt Du auch auf die Deklaration der Struktur.

Einen Hinweis darauf, welche Headerdatei es sein könnte, könnten die
#include-Anweisungen im von Dir gefundenen Sourcefile geben, das muss
aber nicht so sein, da es geniale Entwickler mit sehr eigenartigen
Vorstellungen vom Umgang mit Headerdateien gibt.

Also:

  findstr /s /c:"st_cmd_t" *.h

in die Windows-Kommandozeile eingegeben oder das grep-Äquivalent in die
Shell gehackt ...

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, wenn ich es in der .h finden würde, wäre es ja einfach und im
Prinzip hast Du ja auch Recht, es steht ja auch in der .h mit diesem
Eintrag und das ist wirklich und wahrhaftig alles

gesuch habe ich übrigens zur Sicherheit in allen Dateien, nicht nur in
den .c oder .h



/*_____ T Y P E D E F - D E C L A R A T I O N
________________________________*/
/**
 * @brief This enum is used to select an action for a specific message
declare
 * on structure st_cmd_t.
 **/
typedef enum {
  CMD_TX,
  CMD_TX_REMOTE,
  CMD_RX,
  CMD_ABORT
} can_cmd_t;

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich glaub ich habs gefunden ...


/**
 * @brief This structure allows to define a specific action on CAN
network.
 * handle: manage by the library.
 *
 * cmd   : initialize by the application to select the operation
 * id    : initialize by the application in transmission
 *         complete by the library in reception
 * dlc   : initialize by the application to give the number of data to
transmit
 *         complete by the library in reception
 * pt_data: pointer on the table which contains the data to send or
received
 * status: manage by the library
 * ctrl : field rtr to signal a remote frame
 *        field ide to signal a extended frame
 **/
typedef  struct{
  Uchar      handle;
  can_cmd_t  cmd;
  can_id_t   id;
  Uchar      dlc;
  Uchar*    pt_data;
  Uchar      status;
  can_ctrl_t ctrl;
} ts_cmd_t;

Da kann ich dann ja lange suchen ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.