Forum: Compiler & IDEs Modbus Code lässt sich nicht compilieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Modbusfahrer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hab hier Code für den Raspberry Pi mit dem ich nicht zurecht komme.

In modbus.h:
1
MODBUS_API int modbus_get_response_timeout(modbus_t *ctx, uint32_t *to_sec, uint32_t *to_usec);


In modbus.c
1
/* Get the timeout interval used to wait for a response */
2
int modbus_get_response_timeout(modbus_t *ctx, uint32_t *to_sec, uint32_t *to_usec)
3
{
4
    if (ctx == NULL) {
5
        errno = EINVAL;
6
        return -1;
7
    }
8
9
    *to_sec = ctx->response_timeout.tv_sec;
10
    *to_usec = ctx->response_timeout.tv_usec;
11
    return 0;
12
}


In main von test.c:
1
modbus_t *ctx = NULL;
2
uint32_t sec_to = 1;
3
uint32_t usec_to = 0;
4
modbus_get_response_timeout(ctx, &sec_to, &usec_to);

gcc -Wall -I /usr/include/modbus -lmodbus -o test test.c
Ergebnis:
test.c:42:5: error: too many arguments to function 
‘modbus_get_response_timeout’

Könnte es sein, daß der Compiler noch etwas benötigt?

Für mich liegt hier erstmal kein Fehler vor. Hat das Ganze etwas mit dem 
Wort 'MODBUS_API' zu tun das vor dem Rückgabewert der Funktion im Header 
File steht? Und was ist überhaupt der Zweck eines Wortes vor dem 
Rückgabewert im Prototyp?

von Felix U. (ubfx)


Bewertung
0 lesenswert
nicht lesenswert
Sicher, dass du das richtige File inkludierst? In 3.1.1 hat der Prototyp 
nur 2 Argumente.

http://libmodbus.org/docs/v3.1.1/modbus_get_response_timeout.html


MODBUS_API ist einfach ein #define auf __declspec(dllexport), sagt also, 
dass die entsprechende Funktion ins Export Directory einer DLL 
eingetragen werden soll.

von Modbusfahrer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Sicher, dass du das richtige File inkludierst?
Danke für den Tip.

Das Projekt ist ein zusätzlich installiertes geforktes Projekt das die 
GPIOs des Raspi für Modbus RTU verwendet: 
https://github.com/dhruvvyas90/libmodbus. Kann gut sein, daß da was 
verrutscht ist; zumal schon das Installieren ein ziemliches Gedöns war.
Muß ich morgen mal forschen.

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]
  • [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.