No me reconoce las variables.

Iniciado por kondrag_X1, 13 Enero 2016, 18:12 PM

0 Miembros y 1 Visitante están viendo este tema.

kondrag_X1

Hola estoy intentando hacer la implementación del modbus en c y no sé porque me dice que los métodos no reconocen las variables globales ni los prototipos de las funciones y no sé porque.

MBSlave.cpp

#include "MBSlave.h"

UCHAR mFrame[BUFFER_SIZE];
UINT mHoldingRegsSize;
UINT   *mRegs;
UCHAR   mBroadcastFlag;
UCHAR mSlaveID;
UCHAR mFunction;
UINT errorCount;
UINT    T1_5; //inter character time out
UINT    T3_5; //frame delay
Serial  *MBPort;

// function definitions
void exceptionResponse(UCHAR exception);
UINT calculateCRC(UCHAR bufferSize);
void sendPacket(UCHAR bufferSize);

void
mBInit( Serial *SerialPort,
int    baud,
UCHAR _slaveID,
UINT  _holdingRegsSize,
            UINT  *_regs)
{
//implementación
}
metodos de las funciones.


MBSlave.h

#ifndef MBSlave_H
#define MBSlave_H

//definitions of types
typedef unsigned char UCHAR;
typedef unsigned int  UINT;

#include "mbed.h"

#define BUFFER_SIZE    64
#define MBdebug         1 
UINT mBPoll( void );
void mBInit(Serial *SerialPort,
            int    baud,
            UCHAR _slaveID,
            UINT  _holdingRegsSize,
            UINT  *_regs)
#endif

MAFUS

Se me ocurre que no uses extern para cuando declares las variables locales en los fuentes que acceden a las variables externas que has definido.
Puede que el linkador le falte la información para encontrar las cabeceras y la biblioteca que has creado: -l<path_de_cabecera> -I<path_de_librería>

kondrag_X1

MAFUS muchísimas gracias por contestar acabo de ver el problema yo también pensaba que necesitaba extern pero no si te fijas bien en el .h la declaración void mBInit(....) le falta el punto y coma.

demasiadas horas delante del ordenador programando.

furciorifa

Amigo porque no utilizas la librería #include<stdint.h> es más portable si la usas así y es estándar y aparte te evitas tiempo reinventando la rueda.

MAFUS

Vaya fallo mas sutil, jaja. Buena vista  ;-)

kondrag_X1

Gracias furciorita pero estoy trabajando en un microcontrolador y para mi uso no es necesario.

MAFUS


kondrag_X1

montar dos microcontroladores con comunicación modbus rs232 rtu uno de maestro y otro de esclavo.

MAFUS

Ah, jeje, creía que le ibas a hacer algo al coche  ;)