gpt4 book ai didi

每 32 字节复制一个二进制文件 32 字节

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:06 24 4
gpt4 key购买 nike

我在这里尝试做的是每 32 字节复制一个二进制文件 32 字节。我为什么要这样做?因为我需要在我的板子的 USART 上发送这个二进制文件。我不能一次发送它,这就是为什么我每 32 字节发送 32 字节。

首先,我尝试将我的二进制文件读入缓冲区并将其写入另一个文件,每 32 字节 3é 字节。问题是,当我尝试执行我创建的新二进制文件时......它没有在板上执行,我不明白为什么

如果你想试一试,这是我的代码..

int sendBuff(char *buffer,int *size)
{
int i,n =0;
char c ;
FILE *file,target;

//Open file
file = fopen("Nucleo-L152RE_bis.bin", "rb");

if (!file)
{
fprintf(stderr, "Unable to open file %s", "Nucleo-L152RE_bis.hex");
return 0;
}
*size = getFileSize(file);


if (!buffer) {
fprintf(stderr, "Memory error!");
fclose(file);
return 0;
}

//Read file contents into buffer
fread(buffer,*size, 1, file);



fclose(file);


return 0;
}
void writefile(unsigned char *buffer,int size){

FILE *file;
int i;
file = fopen("salut.bin", "a");
if (!file)
{
fprintf(stderr, "Unable to open file %s", "Nucleo-L152RE.bin");

}
else
{
fwrite(buffer,sizeof(unsigned char),size,file);
fclose(file);
}
}

和主要功能:

int main()
{
/* variables locales */
unsigned char bufferS[1000000];
int nId = 5, nChoice, nBytesWritten, nBytesRead;
int* pByteRead, pByteWritten;
int size;
int k = 0,k_hexa = 0;

/* demande du numéro du port COM */



/* boucle tant que l'on ne quitte pas */
do
{
/* menu */


//ecriture de l'executable dans un buffer
sendBuff(bufferS, &size);
printf("size of file: %d\n\n", size);
k = 0;


printf("SIZE : %d\n", size);

//send program

do
{

printf("Envoi de donnees...\r\n");

//WriteCOM(bufferS + k, 32, &nBytesWritten);
writefile(bufferS+k,32);
printf("%d octet(s) envoye(s) et k : %d .\r\n",
nBytesWritten, k);



k += 32;

// scanf("%d",&nChoice);
} while (k < size);

}
}

最佳答案

1)根据你的实现,您向新的 salut.bin 添加了额外的 (32-size%32) 冗余字节,导致执行失败。这样复制就OK了,

           do
{
printf("Envoi de donnees...\r\n");

//WriteCOM(bufferS + k, 32, &nBytesWritten);
writefile(bufferS+k,32);
printf("%d octet(s) envoye(s) et k : %d .\r\n",
nBytesWritten, k);
k += 32;

// scanf("%d",&nChoice);
} while (k < size-32);
writefile(bufferS+k, size%32);

2)错误的bin格式或内容会导致执行失败,有时这是由于偶然丢失了一些字节或在文件末尾添加了冗余字节造成的。

关于每 32 字节复制一个二进制文件 32 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com