Ik ben mijn eerstje stapjes in C code aan het maken. Ik heb een Simatic 2040 aangeschaft, ze bieden hier een crosscompile situatie bij aan. Ik heb een howto gevolgd en het lukt prima om een blink example te compilen en te draaien op het apparaatje.
Nu wil ik graag een project starten waarbij ik de com poorten gebruik als modbus RTU. Nu heb ik de volgende code:
En dit geeft de volgende fout aan bij compilen:
Ik snap hierdoor dat de bibliotheek niet goed geladen wordt. Ik heb echter wel geprobeerd dit goed in te stellen door in Eclipse de Project Compiler en Project Linker van de juiste bibliotheken en paden.
Ik gebruik in ieder geval de volgende bibliotheek: http://libmodbus.org/
Ik heb geprobeerd de tips van deze pagina toe te passen: https://www.eclipse.org/forums/index.php/t/238028/
Ik heb vooral het idee dat het misgaat bij project linker settings, ik heb het nu ingesteld staan als de volgende flags:
Nu wil ik graag een project starten waarbij ik de com poorten gebruik als modbus RTU. Nu heb ik de volgende code:
code:
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
| #include <iostream> using namespace std; #include "mraa.hpp" #include "modbus.h" using namespace mraa; int main(void) { cout << "Hello IOT2000." << endl; Gpio* d_pin = NULL; d_pin = new mraa::Gpio(13, true, false); d_pin->dir(mraa::DIR_OUT); modbus_t *ctx; ctx = modbus_new_rtu("/dev/ttyS2", 115200, 'N', 8, 1); if (ctx == NULL) { fprintf(stderr, "Unable to create the libmodbus context\n"); return -1; } for (;;) { d_pin->write(1); cout << "aan" << endl; sleep(1); d_pin->write(0); cout << "uit" << endl; sleep(1); } return 0; } |
En dit geeft de volgende fout aan bij compilen:
code:
1
| C:\Users\martin\workspace_iot\iot_test\IOT2000 Release/..\example.cpp:18: undefined reference to `modbus_new_rtu' |
Ik snap hierdoor dat de bibliotheek niet goed geladen wordt. Ik heb echter wel geprobeerd dit goed in te stellen door in Eclipse de Project Compiler en Project Linker van de juiste bibliotheken en paden.
Ik gebruik in ieder geval de volgende bibliotheek: http://libmodbus.org/
Ik heb geprobeerd de tips van deze pagina toe te passen: https://www.eclipse.org/forums/index.php/t/238028/
code:
1
2
3
4
5
6
| Here are steps to add an external library http://wiki.eclipse.org/CDT/User/FAQ#How_do_I_add_an_external_library_to_my_C.2B.2B_project.3F 1) in Properties>>C/C++ Build>>Settings>>GCC C++ Compiler >> Includes you must add the include path for the external library (where the header reside). This information is needed by the Eclipse indexer (code completion etc.) and the compiler 2) Properties>>C/C++ Build>>Settings>>GCC C++ Linker >> Libraries you must add the library search path (option -L) and the library you want to link against (option -l). This info is needed for the linker. |
Ik heb vooral het idee dat het misgaat bij project linker settings, ik heb het nu ingesteld staan als de volgende flags:
code:
1
| -lmraa -fno-use-linker-plugin -LC:\Users\martin\workspace_iot\libmodbus-3.1.4\src\ |