Se provo ad usare la funz send() mi restituisce -123343codice:#ifndef PAK_H #define PAK_H #include "include.h" typedef char bool; typedef struct { char content[PAK_N]; /* the content of pak */ bool flag[FLAG_N]; /* the pak flag */ char sign[10]; /* the verification signature */ } Pak; void setSign(Pak * ptr, const char sign[10]) { #ifdef DEBUG assert(ptr != NULL); #endif if((strlen(sign) > 10) || (strlen(sign) < 10))return; strcpy(ptr->sign, sign); } bool cntSign(Pak * ptr) { #ifdef DEBUG assert(ptr != NULL); #endif } void setContent(Pak * ptr, char content[PAK_N]) { #ifdef DEBUG assert(ptr != NULL); #endif int i; for(i = 0; i<PAK_N; i++) { ptr->content[i] = content[i]; } } int send(Pak * ptr, int mode) { #ifdef DEBUG assert(ptr != NULL); #endif if(strlen(ptr->content) < PAK_N) return -1; setContent(ptr, ptr->content); ptr->flag[0] = TRUE; /* the dimension OK flag */ switch(mode) { case SERVER: ptr->flag[1] = SERVER; /* the pak type flag */ break; case CLIENT: ptr->flag[1] = CLIENT; break; case REQUEST: ptr->flag[1] = REQUEST; break; default: ptr->flag[1] = ERROR; break; } if((ptr->flag[0] == TRUE) && (ptr->flag[1] != ERROR)) { setSign((Pak *) ptr->sign, CHECK); }else{ return -1; } /* send to serial port */ return 0; } void rec(Pak * ptr, char buf[PAK_N]) { /* receive to serial port */ #ifdef DEBUG assert(ptr != NULL); #endif strcpy(buf, ptr->content); } /* * Log Format: * # DATE # * # FLAG # * # CONTENT # */ void log(char * msg) { FILE * log = fopen("app.log", "a+"); #ifdef DEBUG assert(log!= NULL); #endif fprintf(log, "#%s#\n", msg); fclose(log); } void controlChecksum(char * ck, bool * control) { if(strcmp(ck, CHECK) == 0) { control = (bool *) 0; }else{ control = (bool *) 1; } } #endif![]()
Help me![]()

Rispondi quotando