91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 86KB
    文件類型: .gz
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-11
  • 語(yǔ)言: 其他
  • 標(biāo)簽: 串口??文件傳輸??ymodem??

資源簡(jiǎn)介

串口傳輸文件可以采用三種協(xié)議xmodem、ymodem、zmodem,本程序只做針對(duì)ymodem協(xié)議的實(shí)現(xiàn),包括發(fā)送方的程序和接收方的程序,下載后在linux平臺(tái)下執(zhí)行make即可用,已通過(guò)多次測(cè)試。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“ymodem.h“
#include?“serial.h“

#define?RESEND?0
#define?SENDED?1
#define?PACKET_SIZE?128
//#define?PACKET_SIZE?1024

enum?STATE{
START
RECEIVE_DATA
END
STOP
};

int?ymodem_receive(const?char?*path?int?fd)?{
int?fd_file;
unsigned?char?start_char?tmp_char;
int?state?len?i;
int?trans_end?=?0;
char?packet_num;?
int?packet_size;
int?file_size?=?0;
char?buf[1024]?=?{0};

fd_file?=?open(path?O_RDWR?|?O_CREAT?|?O_TRUNC?0644);
if?(fd_file? perror(“open()?file“);

packet_num?=?0;
packet_size?=?0;
state?=?START;
while(1)?{

if?(trans_end?==?1)?break;
switch(state)?{
case?START:
printf(“\033[32mSTART_MODE:\033[0m\n“);
put_char(fd?‘C‘);

//start_char?=?get_char(fd);
//printf(“%x?error?\n“?start_char);
start_char?=?get_char(fd);
if?(start_char?==?SOH)
printf(“SOH:?packet_128\n“);
else?if?(start_char?==?STX)
printf(“STX:?packet_1024\n“);
else?{
printf(“start_char?%x?error?\n“?start_char);
//exit(1);
}

if?(start_char?==?SOH?||?start_char?==?STX){
tmp_char?=?get_char(fd);
if?(tmp_char?!=?0x00)?
return?-1;?//not?00
printf(“0x00:?%x\n“?tmp_char);

tmp_char?=?get_char(fd);
if?(tmp_char?!=?0xff)?{
printf(“0xff:?%x??error\n“?tmp_char);
return?-1;?//not?ff
}
printf(“0xff:?%x\n“?tmp_char);

//receive?data
printf(“sizeof?buf?is?%d\n“?sizeof(buf));
for?(i?=?0;?i? buf[i]?=?get_char(fd);
//printf(“i?=?%d?“?i);
}


//get?name?and?file?size
printf(“receive?file?name:?%s?length?:%d\n“buf?strlen(buf));
//printf(“file?size:?%s\n“?(buf?+?strlen(buf)?+?1));
file_size?=?atoi((buf?+?strlen(buf)?+?1));
printf(“file?size:?%d\n“?file_size);
}

//crc?
tmp_char?=?get_char(fd);
printf(“crc1?:?%x\n“?tmp_char);
tmp_char?=?get_char(fd);
printf(“crc2?:?%x\n“?tmp_char);

put_char(fd?ACK);
packet_num?=?1;
put_char(fd?‘C‘);

state?=?RECEIVE_DATA;
break;
case?RECEIVE_DATA:
printf(“RECEIVE_DATA:\n“);
start_char?=?get_char(fd);
switch(start_char){
case?EOT:?
state?=?END;
printf(“\033[32mEOT\033[0m\n“);
put_char(fd?ACK);?
break;
case?STX:?
packet_size?=?1024;?
printf(“STX?“);
break;
case?SOH:?
packet_size?=?128;?
printf(“SOH?“);
break;
case?CAN:?break;
default:?break;
}
if?(state?==?END)?break;

tmp_char?=?get_char(fd);
printf(“%x?“?tmp_char);
tmp_char?=?get_char(fd);
printf(“%x?“?tmp_char);

for(i?=?0;?i? buf[i]?=?get_char(fd);
putchar(buf[i]);
}

tmp_char?=?get_char(fd);
printf(“%x?“?tmp_char);
tmp_char?=?get_char(

評(píng)論

共有 條評(píng)論