due to some problems can not be explained
(an 1 year old LCNC Ja9 on Ubuntu 10.04 make unrecognize error, and plus after 
install of JA9 is affect to mesa ssreial error sometime at emergency stop)
 I had to update.
Not wanting to use wheezy I installed ubuntu 14.04 .... in the end all right.
But I should use a userspace component libmodbus3.1.2 .... I can not use 
halcompile...

The Component is the same ... nothings is change ... I edit the first part 
(whitout header & hal pin) ..

#include <stdio.h>    /* Standard input/output definitions */
#include <stdlib.h>
#include <stdint.h>   /* Standard types */
#include <string.h>   /* String function definitions */
#include <fcntl.h>    /* File control definitions */
#include <errno.h>    /* Error number definitions */
#include <signal.h>
#include <modbus/modbus.h>
#include <math.h>
#include <assert.h>

#define MAP(n)  mb_mapping->tab_registers[n]
#define INP(g)  mb_mapping->tab_input_registers[g]
#define WRI(nr , val) ret=modbus_write_register(ctx, nr, val)

char *address;
char ad0[4];
char ad1[4];
char ad2[4];
char ad3[4];
char point[2] = ".";
char str[16];
float test = 1502.0;
float test1 = 169.0;
float test2 = 254.0;
float test3 = 000.0;
float test4 = 103.0;
int tt1 = 0;
int tt2 = 0;
int tt3 = 0;
int tt4 = 0;
int hole;
int done = 0;
int firstimeconnect = 0;
int ret = -1;
int CorrectOnOfSign =0;


float kft;
uint16_t FCpy[2];
uint16_t RfCpy[2];



    int s = -1;
    modbus_t *ctx;
    modbus_mapping_t *mb_mapping;
    int rc;
    int i;
    int test_of = 0;
    uint8_t *query;
    uint8_t In_tab[100];
    uint16_t Reg_tab[100];
    int header_length;


//void adios(int sig){done = 1;}

float Rcf(uint16_t a, uint16_t b)
{
   uint16_t a1[2];
   float r1;
   a1[0] = a;
   a1[1] = b;
   r1 = modbus_get_float(a1);
   kft = r1;
   return kft;
}

uint16_t SdFloat(float a)
{
    modbus_set_float(a, FCpy);
    return *FCpy;
}


void user_mainloop(void)  /* start "main" */
{

   /* signal(SIGINT, adios);
    signal(SIGTERM, adios);*/


while(!done)    /*"start  main loop "  */
 {
    usleep(20000);


    FOR_ALL_INSTS()
            {

               testo =1;

    if (firstimeconnect == 0){


             hole = floor(jaaddress); //jaaddress;



         if (hole != 0)
           {
            tt1 = floor(ja30ip);
            tt2 = floor(ja31ip); //test2);
            tt3 = floor(ja32ip);
            tt4 = floor(ja33ip);
            sprintf(ad0, "%hu", tt1); //ja30ip);
           sprintf(ad1, "%hu", tt2); //ja31ip);
           sprintf(ad2, "%hu", tt3); //ja32ip);
            sprintf(ad3, "%hu", tt4); //ja33ip);
            strcpy(str, ad0);
            strcat(str, point);
            strcat(str, ad1);
            strcat(str, point);
              strcat(str, ad2);
            strcat(str, point);
            strcat(str, ad3);
           address = str;
           }
         else { address = "0";}


        ctx = modbus_new_tcp(address, hole);
        query = malloc(MODBUS_TCP_MAX_ADU_LENGTH);
        header_length = modbus_get_header_length(ctx);

        modbus_set_debug(ctx, false);

        mb_mapping = modbus_mapping_new(0,0,200,0);

        if (mb_mapping == NULL) {
            //fprintf(stderr, "Failed to allocate the mapping: %s\n",
                //modbus_strerror(errno));
            modbus_free(ctx);
             //return -1;
        }
........................

but obtain these error at compile ...


k1MbServer.c: In function ‘__comp_parse_names’:
/tmp/tmpLc0aCs/k1MbServer.c:573:17: error: ‘names’ undeclared (first use in 
this function)
                 names[j] = strtok(p, ",");

/*******the same for comp__parse_count************/*

/tmp/cc1kjkzO.o: in function "user_mainloop":
/tmp/tmp_RtXP2/k1MbServer.comp:210: undefined reference  "floor"
/tmp/tmp_RtXP2/k1MbServer.comp:216: undefined reference  "floor"
/tmp/tmp_RtXP2/k1MbServer.comp:217: undefined reference  "floor"
/tmp/tmp_RtXP2/k1MbServer.comp:218: undefined reference  "floor"
/tmp/tmp_RtXP2/k1MbServer.comp:219: undefined reference  "floor"
/tmp/tmp_RtXP2/k1MbServer.comp:236: undefined reference  "modbus_new_tcp"
/tmp/tmp_RtXP2/k1MbServer.comp:238: undefined reference  
"modbus_get_header_length"
/tmp/tmp_RtXP2/k1MbServer.comp:240: undefined reference  "modbus_set_debug"

//and other about modbus

..... Any suggest about?? ...

andypugh talk about halcompile bug .... is possible there are a path problem??

I've install on /home/linuxcnc-dev .... and libmodbus is on /usr/.......
for compile I've used these command:

cd linuxcnc-dev
. ./rip-xxxx or . ./scripts/rip-xxx (in the same way I've compile my custom 
kins with success)
halcompile --install k1MbServer.comp (same resutl halcompile --compile 
k1MbServer.comp)

regards
giorgio







------------------------------------------------------------------------------
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to