java Ymodem协议上位机程序

java Ymodem协议上位机程序_第1张图片

本文代码传入文件地址返回如代码块: 

java Ymodem协议上位机程序_第2张图片

 为了更好的拓展,我把foo.c这个文件名拓展成了6个字节用来表示版本号如1.2.66.c 

后四个字节用来存储文件长度

也就是说第0帧数据为 SOH 00 FF 1.2.66 1236542 NUL[118] CRC CRC

当然我最后返回的都是10进制的byte数组 可以直接netty发送

代码:

package com.ruoyi.netty.netty;

import com.ruoyi.netty.netty.domain.ByteUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.util.FileCopyUtils;

import java.io.*;

/**
 * @ClassName: Ymodem
 * @Description: Ymodem协议工具类
 * @author ns
 * @date 2021-10-18 14:25
 * @Copyright [email protected]
 */
public class Ymodem {

    /**
     * byte[]文件转Ymodem协议文件
     * @param file
     * @return
     */
    public static byte[][] BytesYmodem(byte[] file,double len,String name){
        byte[] bytestr = name.getBytes();
        int a=1;
        int b=254;
        int ys=(int)Math.ceil(len/128.00);
        if(bytestr.length!=6){
            return null;
        }
        byte[][] bytess=new byte[ys+1][133];
        bytess[0]=ymodem_0(bytestr,len);

        for (int bl=1;bl 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot >-1) && (dot <

你可能感兴趣的:(java,Ymodem)