Compileren lukt niet op Raspberry Pi

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • alberthakvoort
  • Registratie: Juli 2006
  • Laatst online: 14:57
Ik heb een stukje code waarmee ik een omvormer serieel kan uitlezen. Deze code kan ik op een X86 pc zonder problemen compileren, maar op mijn Raspberry Pi kom ik er niet verder mee :

effekta-test.c: In function âmainâ:
effekta-test.c:6:4: error: unknown type name âMbm_trameâ
effekta-test.c:15:4: error: âMb_verboseâ undeclared (first use in this function)
effekta-test.c:15:4: note: each undeclared identifier is reported only once for each function it appears in
effekta-test.c:21:9: error: request for member âdeviceâ in something not a structure or union
effekta-test.c:22:9: error: request for member âfunctionâ in something not a structure or union
effekta-test.c:23:9: error: request for member âslaveâ in something not a structure or union
effekta-test.c:24:9: error: request for member âaddressâ in something not a structure or union
effekta-test.c:25:9: error: request for member âlengthâ in something not a structure or union
effekta-test.c:26:9: error: request for member âtimeoutâ in something not a structure or union
effekta-test.c:28:44: error: âNULLâ undeclared (first use in this function)
effekta-test.c:32:23: warning: incompatible implicit declaration of built-in function âprintfâ [enabled by default]
effekta-test.c:39:7: warning: incompatible implicit declaration of built-in function âprintfâ [enabled by default]


C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <modbus.h>

int main()
{
   int device;
   Mbm_trame trame;
   int result;
   int data_in[256];
   int data_out[256];
   char data[256];
   int i;

   /* print debugging informations */
   Mb_verbose=1;

   /* open device */
   device=Mb_open_device("/dev/ttyUSB0",9600,0,8,1);

   /* setup master packet */
   trame.device=device;
   trame.function=3;                    /* read data */
   trame.slave=1;                                       /* slave number*/
   trame.address=0xC020;
   trame.length=19;
   trame.timeout=1000;

   result=Mb_master(trame,data_in,data_out,NULL,NULL);
   /* return 0 if ok */
   if (result<0)
   {
      if (result==-1) printf("error : unknow function\n");
      else if (result==-2) printf("crc error\n");
      else if (result==-3) printf("timeout error\n");
      else if (result==-4) printf("error : bad slave answer\n");
      else printf("unknown result: %d\n",result);
   }
   else
      printf("ok\n");

   for(i=0;i<19;i++)
   {
        printf("Register %d: %d\n",i,data_out[i]);
   }

   Mb_close_device(device);

   return 0;
}



Ook de nieuwste versie van libmodbus (dus niet via de repository) maakte geen verschil. Enig idee waar ik dit moet zoeken?

Acties:
  • 0 Henk 'm!

  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

Je hebt het over libmodbus, maar heb je libmodbus-dev geinstalleerd? Daar zit modbus.h in, en vermoedelijk dus ook de Mbm_trame etc waar de compiler over zeurt.

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


Acties:
  • 0 Henk 'm!

  • alberthakvoort
  • Registratie: Juli 2006
  • Laatst online: 14:57
libmodbus-dev heb ik inderdaad geinstalleerd

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

Ik lees hier: "a-dakje main a-dakje". Staat dat echt zo op je scherm of is er iets mis gegaan bij het copy pasten?

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 21:27

Cyphax

Moderator LNX
Hoe ziet je compileopdracht eruit?

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • alberthakvoort
  • Registratie: Juli 2006
  • Laatst online: 14:57
CAPSLOCK2000 schreef op dinsdag 18 september 2012 @ 12:50:
[...]


Ik lees hier: "a-dakje main a-dakje". Staat dat echt zo op je scherm of is er iets mis gegaan bij het copy pasten?
zo staat dat inderdaad op mijn scherm, terwijl het in de code wel goed staat, daar zal waarschijnlijk de fout ook mee te maken hebben vermoed ik.


Ik compileer het als volgt : gcc effekta-test.c -o effekta-test -lmodbus -I/usr/include

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

Doe een 'export LC_ALL=C ; export LANG=C' en probeer het opnieuw.
Probeer de tools 'file' en 'iconv' om foute files op te sporen en te verbeteren.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • alberthakvoort
  • Registratie: Juli 2006
  • Laatst online: 14:57
Als ik export LC_ALL=C ; export LANG=C eerst draai heb ik geen rare tekens meer.

Maar heb het probleem al gevonden. Ik heb destijds op mijn x86 machine de libmodbus versie gebruikt welke bij het script zat, dat blijkt dus versie 0.0.4 te zijn.

In de 0.0.4 kom ik wel Mbm_trame tegen, in de nieuwere versie's niet meer..

[ Voor 18% gewijzigd door alberthakvoort op 18-09-2012 14:55 ]

Pagina: 1