elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14
21  Programación / Programación C/C++ / Re: Perceptron Simple en C (Redes Neuronales) en: 15 Diciembre 2015, 15:36 pm
muy currado yo estudié redes neuronales en la carrera y no tiene nada que ver la orientación que se le da en practicas y teoria con las aplicaciones que puede tener
22  Programación / Programación C/C++ / Ayuda para entender el código. en: 14 Diciembre 2015, 10:36 am
Hola estoy desarrollando una implementación de Modbus master basándome en el estándar de Freemodbus, el cual lo podeis descargar en el siguiente link -> http://www.freemodbus.org/index.php?idx=5

mi pregunta es que hay parte del código que no consigo entender.

me defino un tipo de función con typedef eMBErrorCode etc
Código
  1. /* ----------------------- Prototypes  0-------------------------------------*/
  2. typedef void    ( *pvMBFrameStart ) ( void );
  3.  
  4. typedef void    ( *pvMBFrameStop ) ( void );
  5.  
  6. typedef eMBErrorCode( *peMBFrameReceive ) ( UCHAR * pucRcvAddress,
  7.                                            UCHAR ** pucFrame,
  8.                                            USHORT * pusLength );
  9.  
  10. typedef eMBErrorCode( *peMBFrameSend ) ( UCHAR slaveAddress,
  11.                                         const UCHAR * pucFrame,
  12.                                         USHORT usLength );
  13.  
  14. typedef void( *pvMBFrameClose ) ( void );
  15.  


Luego desde la máquina de estados llamo a las funciones:

Código
  1. /* Functions pointer which are initialized in eMBInit( ). Depending on the
  2.  * mode (RTU or ASCII) the are set to the correct implementations.
  3.  */
  4. static peMBFrameSend peMBFrameSendCur;
  5. static pvMBFrameStart pvMBFrameStartCur;
  6. static pvMBFrameStop pvMBFrameStopCur;
  7. static peMBFrameReceive peMBFrameReceiveCur;
  8. static pvMBFrameClose pvMBFrameCloseCur;
  9.  
  10. eMBErrorCode
  11. eMBPoll( void ) {
  12.    static UCHAR   *ucMBFrame;
  13.    static UCHAR    ucRcvAddress;
  14.    static UCHAR    ucFunctionCode;
  15.    static USHORT   usLength;
  16.    static eMBException eException;
  17.  
  18.    int             i;
  19.    eMBErrorCode    eStatus = MB_ENOERR;
  20.    eMBEventType    eEvent;
  21.  
  22.    /* Check if the protocol stack is ready. */
  23.    if ( eMBState != STATE_ENABLED ) {
  24.        return MB_EILLSTATE;
  25.    }
  26.  
  27.    /* Check if there is a event available. If not return control to caller.
  28.      * Otherwise we will handle the event. */
  29.    if ( xMBPortEventGet( &eEvent ) == TRUE ) {
  30.        switch ( eEvent ) {
  31.            case EV_READY:
  32.                break;
  33.  
  34.            case EV_FRAME_RECEIVED:
  35.                eStatus = peMBFrameReceiveCur( &ucRcvAddress, &ucMBFrame, &usLength );
  36.                if ( eStatus == MB_ENOERR ) {
  37.                    /* Check if the frame is for us. If not ignore the frame. */
  38.                    if ( ( ucRcvAddress == ucMBAddress ) || ( ucRcvAddress == MB_ADDRESS_BROADCAST ) ) {
  39.                        ( void )xMBPortEventPost( EV_EXECUTE );
  40.                    }
  41.                }
  42.                break;
  43.  
  44.            case EV_EXECUTE:
  45.                ucFunctionCode = ucMBFrame[MB_PDU_FUNC_OFF];
  46.                eException = MB_EX_ILLEGAL_FUNCTION;
  47.  
  48.  
  49.                for ( i = 0; i < MB_FUNC_HANDLERS_MAX; i++ ) {
  50.                    /* No more function handlers registered. Abort. */
  51.                    if ( xFuncHandlers[i].ucFunctionCode == 0 ) {
  52.                        break;
  53.                    } else if ( xFuncHandlers[i].ucFunctionCode == ucFunctionCode ) {
  54.                        eException = xFuncHandlers[i].pxHandler( ucMBFrame, &usLength );
  55.                        break;
  56.                    }
  57.                }
  58.  
  59.                /* If the request was not sent to the broadcast address we
  60.                  * return a reply. */
  61.                if ( ucRcvAddress != MB_ADDRESS_BROADCAST ) {
  62.                    if ( eException != MB_EX_NONE ) {
  63.                        /* An exception occured. Build an error frame. */
  64.                        usLength = 0;
  65.                        ucMBFrame[usLength++] = ( UCHAR )( ucFunctionCode | MB_FUNC_ERROR );
  66.                        ucMBFrame[usLength++] = eException;
  67.                    }
  68.                    eStatus = peMBFrameSendCur( ucMBAddress, ucMBFrame, usLength );
  69.                }
  70.                break;
  71.  
  72.            case EV_FRAME_SENT:
  73.                break;
  74.        }
  75.    }
  76.    return MB_ENOERR;
  77. }
  78.  

el problema es que no encuentro la implementación de donde se trata la función peMBFrameSendCur. Alguien sabe como está estructurado el código?
23  Informática / Electrónica / Re: ¿Qué tipo de proyecto tipo bricolage harías? en: 2 Diciembre 2015, 11:39 am
CNC perdón

http://www.ikkaro.com/como-hacer-fresadora-cnc-casera/
24  Programación / Programación C/C++ / Re: numero aleatorio en: 28 Noviembre 2015, 19:29 pm
ivancea96 +1  ;-)
25  Informática / Electrónica / Re: ¿Qué tipo de proyecto tipo bricolage harías? en: 25 Noviembre 2015, 16:03 pm
un cinc para hacerte unas gafas del sol de madera  ::)
26  Programación / Programación C/C++ / Re: ¿Qué ocurre al crear un socket? en: 23 Noviembre 2015, 15:48 pm
a ver, cuando tienes un socket haces una conexión a esa conexión se le asigna un número pero antes has de decirle a donde te quieres conectar, es decir, indicar la dirección del servidor.

Ten encuentra que para servidores no es necesario porque ellos están escuchan y aceptan clientes mientras que los clientes si tienes que conocer previamente la dirección del servidor.

te recomiendo que te mires la capa de protocolos TCP/IP para que lo entiendas mejor.
27  Programación / Programación C/C++ / Re: ¿Cómo funciona select() en c? en: 22 Noviembre 2015, 19:59 pm
Hola,

Te comento un poco a grandes rasgos lo que he visto:

tienes esta parte repetida encima del while y dentro:

Código
  1. socket_cliente[host]=accept(socket_servidor,(struct sockaddr *)&cliente[host],&clilong);
  2. if(socket_cliente[host]<0){
  3. printf("Error aceptando el trafico con el host %s\n",
  4. inet_ntoa(cliente[host].sin_addr));
  5. close(socket_cliente[host]);
  6. close(socket_servidor);
  7. return 1;
  8. }
  9. else
  10. printf("Conectado con el host %s\n",inet_ntoa(cliente[host].sin_addr));
  11. host++;
  12. FD_ZERO(&desc);
  13. FD_SET(socket_servidor,&desc);
  14. for(c=0;c<host;c++)
  15. FD_SET(socket_cliente[c],&desc);
  16.  

lo primero que yo te aconsejaría es que si escribes un if{} el else que también tengo las llaves {} así evitaras confusiones.

la segunda cosa que veo rara es que solo incrementas el número de host cuando aceptas la primera conexión, es decir, dentro del while aceptas pero no incrementas el contador de host o yo no he visto donde esta el host++; como en el fragmento de arriba.

Si yo fuese tu interaria aceptar las conexiones dentro del while te simplificará mucho la tarea.

espero haberte ayudado. :silbar:
28  Informática / Electrónica / Re: [Info] Encender y apagar un Led con ARduino y Visual Studio 2015 en: 13 Noviembre 2015, 12:23 pm
tienen buena pinta.
ya me imagino que no solo es la electrónica además hay todavia no se si hacer con una FPGA. tirando de micro.
29  Informática / Electrónica / Re: [Info] Encender y apagar un Led con ARduino y Visual Studio 2015 en: 12 Noviembre 2015, 23:50 pm
Si si muy cerrado el tuto, desde luego. En el tuto la cosa es muy sencilla pero cuando quieres hacer algo mas currado hay que implementar una trama en RS232 por ejemplo:
#cabecera$datos$crc# y una maquina de estados en el pics pero para iniciarse esta al pelo.

me a gustado tienes muchas ideas del estilo en mente? YO quiero hacerme mi dron propio pero tranquilamente y con tiempo.
30  Informática / Electrónica / Re: [Info] Encender y apagar un Led con ARduino y Visual Studio 2015 en: 12 Noviembre 2015, 15:43 pm
Buen tuto Meta básico pero me ha gustado sobre todo para los que empiezan con Arduino y usar C# facilita en gran medida la comunicación cosa que con otros lenguajes como java o c es mas tedioso.

un saludo.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines