Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- component udp "Connects to laser esp8266 of laser distance sensor (ODSL 9/D26-450-S12 - Optical distance sensor)";
- //http://www.leuze.com/selector/ci_pages/downloads.php?supplier_aid=50111159&key=9f0f255e2c9fb97529e5d7196847f76a174a9a206b9ec072f3d0228255151e6f
- pin in float pos_cmd0;
- pin in float pos_cmd1;
- pin in float pos_cmd2;
- pin out float pos_fb0;
- pin out float pos_fb1;
- pin out float pos_fb2;
- instanceparam int pincount = 6;
- option MAXCOUNT 16;
- function _;
- option extra_inst_setup yes;
- variable int sockfd;
- author "test";
- license "GPL"; // indicates GPL v2 or later
- ;;
- #define MAX_DEV 3
- RTAPI_MP_ARRAY_STRING(ip, MAX_DEV, "IP of sensor")
- RTAPI_MP_ARRAY_INT(port, MAX_DEV, "UDP port")
- #include <arpa/inet.h>
- #include <ifaddrs.h>
- EXTRA_INST_SETUP(){
- rtapi_print("hallo\n");
- int ret;
- sockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
- if (sockfd < 0) {
- rtapi_print("ERROR: can't open socket: %s\n", strerror(errno));
- return -errno;
- }
- struct sockaddr_in server_addr;
- struct sockaddr_in local_addr;
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(port[extra_arg]);
- server_addr.sin_addr.s_addr = inet_addr(ip[extra_arg]);
- local_addr.sin_family = AF_INET;
- local_addr.sin_addr.s_addr = INADDR_ANY;
- ret = connect(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr_in));
- if (ret < 0) {
- rtapi_print("ERROR: can't connect: %s\n", strerror(errno));
- return -errno;
- }
- struct timeval timeout;
- timeout.tv_sec = 0;
- timeout.tv_usec = 10;
- ret = setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout));
- if (ret < 0) {
- rtapi_print("ERROR: can't set socket option: %s\n", strerror(errno));
- return -errno;
- }
- timeout.tv_usec = 10;
- setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout));
- if (ret < 0) {
- rtapi_print("ERROR: can't set socket option: %s\n", strerror(errno));
- return -errno;
- }
- return 0;
- }
- FUNCTION(_) {
- pos_fb0 = pos_cmd0;
- pos_fb1 = pos_cmd1;
- pos_fb2 = pos_cmd2;
- uint8_t buf[16];
- buf[0] = 0x01;
- buf[1] = 0x42;
- buf[2] = 0x00;
- buf[3] = 0x01;
- int ret = send(sockfd,buf,4,0);
- if (ret < 0) {
- rtapi_print("send fail %s\n", strerror(errno));
- }
- }
- Error:
- machinekit@beaglebone:~$ instcomp --install ./components/udp.icomp
- Compiling realtime udp.c
- In file included from /home/machinekit/git/machinekit/include/rtapi.h:1027:0,
- from udp.c:4:
- ./components/udp.icomp:27:23: error: ‘ip’ undeclared here (not in a function)
- /home/machinekit/git/machinekit/include/rtapi_export.h:32:30: note: in definition of macro ‘MODULE_INFO2’
- t rtapi_info_##a##_##b = c; EXPORT_SYMBOL(rtapi_info_##a##_##b);
- ^
- /home/machinekit/git/machinekit/include/rtapi.h:1067:3: note: in expansion of macro ‘MODULE_PARM’
- MODULE_PARM(var,"1-" RTAPI_STRINGIFY(num) "s"); \
- ^
- ./components/udp.icomp:27:1: note: in expansion of macro ‘RTAPI_MP_ARRAY_STRING’
- ./components/udp.icomp:28:20: error: ‘port’ undeclared here (not in a function)
- /home/machinekit/git/machinekit/include/rtapi_export.h:32:30: note: in definition of macro ‘MODULE_INFO2’
- t rtapi_info_##a##_##b = c; EXPORT_SYMBOL(rtapi_info_##a##_##b);
- ^
- /home/machinekit/git/machinekit/include/rtapi.h:1059:3: note: in expansion of macro ‘MODULE_PARM’
- MODULE_PARM(var,"1-" RTAPI_STRINGIFY(num) "i"); \
- ^
- ./components/udp.icomp:28:1: note: in expansion of macro ‘RTAPI_MP_ARRAY_INT’
- ./components/udp.icomp: In function ‘extra_inst_setup’:
- ./components/udp.icomp:47:36: error: ‘extra_arg’ undeclared (first use in this function)
- ./components/udp.icomp:47:36: note: each undeclared identifier is reported only once for each function it appears in
- /home/machinekit/git/machinekit/src/Makefile.modinc:123: recipe for target 'udp.o' failed
- make: *** [udp.o] Error 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement