Can';不发送文件

Can';不发送文件,c,file,serial-port,send,C,File,Serial Port,Send,我正在做一个项目,我必须实现一个停止和等待协议。我正在尝试将帧发送到另一台计算机,但我的发送功能不起作用。代码如下。如果你需要更多的代码,请告诉我。我只是在这里写了什么思想对这个问题最重要 这是我发送帧的函数,它应该从文件中读取信息并将其拆分为帧,然后将帧的其他信息添加到每个帧中。这部分工作得很好,问题是当我尝试一帧一帧地发送时,它就是不这样做。如果我打印温度,它打印得很好 void sendFrame() { char *buf; char* filename = "mytex

我正在做一个项目,我必须实现一个停止和等待协议。我正在尝试将帧发送到另一台计算机,但我的发送功能不起作用。代码如下。如果你需要更多的代码,请告诉我。我只是在这里写了什么思想对这个问题最重要

这是我发送帧的函数,它应该从文件中读取信息并将其拆分为帧,然后将帧的其他信息添加到每个帧中。这部分工作得很好,问题是当我尝试一帧一帧地发送时,它就是不这样做。如果我打印温度,它打印得很好

void sendFrame()
{
    char *buf;
    char* filename = "mytext.txt";
    struct stat tr;
    stat(nomefich, &tr);
    int size = tr.st_size;
    FILE *fi = fopen(filename,"rb");
    buf = malloc(size);
    fread(buf,size,1,fi);
    fclose(fi);

    //printf("%s",buf);

    char *buffer=(char *)malloc(256*sizeof(char));

    char *source=buf;
    char *dst=buffer;
    char *src=source;
    char *end=source+strlen(source);


    while(src<=end)
    {
        strncpy(dst,src,255);

        src +=255;
        dst[256]='\0';
        char *temp;
        temp=dados(dst);
        char *confir;
        do{
            char *frameTemp;
            printf("%s",temp);
            send(temp);
            confir=getConf();
        }while(confir!="TRUE");
    }
}
这是sendData(),它将一个字符一个字符地发送一个数组到串行端口:

void sendData(char *buffer, int size, int port) 
{
    int aux = 0;
    while(aux != size){
        write(port, &buffer[aux], sizeof(char));
        aux ++;
    }
}

函数send()和sendData()似乎工作正常。问题出在sendFrame()上,我认为“不起作用”和“就是不起作用”不是可以帮助任何人调试问题的语句。我看到的一件事是,为什么要为每条消息打开和关闭端口?那帮不了什么忙。让端口保持打开状态并发送消息,等待响应,然后重复,直到发送完所有内容,然后关闭端口。此行:stat(nomefich,&tr);应该是:如果(0void sendData(char *buffer, int size, int port) { int aux = 0; while(aux != size){ write(port, &buffer[aux], sizeof(char)); aux ++; } }