2021-04-25

笔记

多态

public class Uncle {
    private  String name ;
    private  int age ;

    public  Uncle(){

    }
  public void fahongbao(){
        System.out.println("发红包");
    }

子类一

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 14:57
 */
public class UncleTwo extends Uncle{
    public void faHongbao(){

        System.out.println("发红包");
    }
    public void songyan(){
        System.out.println("送烟");
    }
}

子类二

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 14:56
 */
public class UncleOne extends  Uncle{
    public void faHongbao(){
        System.out.println("发红包");
    }
}

多态

 UncleOne dajiu = new UncleOne();
       dajiu.faHongbao(); //大舅发红包
       UncleTwo uncleTwo = new UncleTwo() ;
       uncleTwo.faHongbao(); //二舅发红包

向上转型

 Uncle dajiu1 = new UncleOne() ;
       dajiu1.fahongbao();

向下转型

 Uncle dajiu1 = new UncleOne() ;
       dajiu1.fahongbao();
       //子类独有的方法在发生向上转型的时候无法在父类中使用
        //dajiu1.songyan     //会报错
        UncleOne temp = (UncleOne) dajiu1 ; //向下转型
        temp.songyan(); //可以调用子类独有的方法

instanceof

判断对象是否是指定的类型实例

避免发生错误的类型转换

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 15:58
 */
public class Demo02 {
    public static void main(String[] args) {
        Uncle uncle1= new UncleOne() ;
        Uncle uncle2 = new UncleTwo() ;
        if (uncle1 instanceof  UncleOne){
            UncleOne u1 = (UncleOne) uncle1 ;
            u1.fahongbao();
        }
        if (uncle2 instanceof  UncleTwo){
            UncleTwo u2 = (UncleTwo)  uncle2 ;
            u2.faHongbao();
        }
    }
}

Demo01

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 14:45
 */
public class Demo01 {
    public static void main(String[] args) {
        //多态
       UncleOne dajiu = new UncleOne();
       dajiu.faHongbao();
       UncleTwo uncleTwo = new UncleTwo() ;
       uncleTwo.faHongbao();

       Uncle dajiu1 = new UncleOne() ;
       dajiu1.fahongbao();
        //dajiu1.songyan     //会报错 子类独有的方法在发生向上转型的时候无法在父类中使用
        UncleOne temp = (UncleOne) dajiu1 ;
        temp.songyan();

       Uncle erjiu = new UncleTwo() ;
       erjiu.fahongbao();

       //向下转型
        Uncle uncleTwo1 = new UncleTwo() ;
        UncleTwo temp1 = (UncleTwo) uncleTwo;
        temp.faHongbao();
    }

}

Demo02

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 15:58
 */
public class Demo02 {
    public static void main(String[] args) {
        Uncle uncle1= new UncleOne() ;
        Uncle uncle2 = new UncleTwo() ;
        if (uncle1 instanceof  UncleOne){
            UncleOne u1 = (UncleOne) uncle1 ;
            u1.fahongbao();
        }
        if (uncle2 instanceof  UncleTwo){
            UncleTwo u2 = (UncleTwo)  uncle2 ;
            u2.faHongbao();
        }
    }
}

Uncle

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 14:47
 */
public class Uncle {
    private  String name ;
    private  int age ;

    public  Uncle(){

    }
    public  Uncle(String name , int age){
        this.name = name ;
        this.age = age ;
    }
    public void fahongbao(){
        System.out.println("发红包");
    }

    public String getName(){
        return  name ;
    }

    @Override
    public String toString() {
        return "Uncle{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

UncleOne

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 14:56
 */
public class UncleOne extends  Uncle{
    public void faHongbao(){
        System.out.println("发红包");
    }
    public void songyan(){
        System.out.println("送烟");
    }
}

UncleTwo

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/25 14:57
 */
public class UncleTwo extends Uncle{
    public void faHongbao(){
        System.out.println("发红包");
    }

}

<think>好的,我现在需要帮用户解决MaixPy环境下遇到的多个错误,包括文件读取失败(ERR_READ_FILE)、类型转换错误(ValueError、TypeError)、未定义名称(NameError)以及语法错误(SyntaxError)。首先,我需要回顾用户提供的引用内容,看看是否有相关的线索。 根据引用[1],ERR_READ_FILE错误可能是因为固件版本不兼容或者模型文件路径错误。用户提到可能需要更新固件或检查文件系统是否正确挂载。所以,我需要建议用户检查模型文件的路径是否正确,并确保固件是最新的。此外,文件系统的问题也可能导致读取失败,可能需要重新烧录固件或者检查文件系统是否正确初始化。 接下来是类型转换错误(ValueError和TypeError)。引用[4]中提到,使用img.copy(roi=...)时,需要确保图像变量正确。如果用户在处理图像时传递了错误的参数类型,比如roi参数不是元组或者数值类型不对,可能会导致这些错误。因此,需要检查代码中的参数类型是否符合函数要求,尤其是KPU相关函数的输入是否有效。 然后是未定义名称错误(NameError)。这可能是因为用户使用了未导入的模块或变量名拼写错误。例如,在引用[3]中提到的MicroPython可能不支持某些Python3的语法或库,所以需要确认所有使用的函数和变量都在当前环境中定义,并且没有拼写错误。 语法错误(SyntaxError)通常是由于代码不符合MicroPython的语法规则。引用[3]指出MicroPython并不完全支持Python3的所有语法,所以用户可能在代码中使用了不被支持的语法结构,比如f-strings或某些高级特性。需要检查代码中的语法是否符合MicroPython的要求,比如使用正确的print语句格式,避免使用不支持的语法。 此外,引用[2]和[5]提到了固件烧录和串口设置的问题,如果用户的开发板没有正确烧录固件,或者串口连接不稳定,可能会导致运行时错误。因此,建议用户检查硬件连接,重新烧录固件,并确保使用正确的IDE设置。 综合以上信息,解决方案应包括以下步骤:检查文件路径和固件版本,验证参数类型和函数用法,确保变量正确定义,修正语法错误,检查硬件连接和固件烧录。同时,用户可能需要查阅官方文档和示例代码,确保代码兼容MaixPy环境。如果问题依然存在,建议分模块调试,逐步排查错误源。</think>### MaixPy错误解决方案分步指南 #### 一、文件读取失败(ERR_READ_FILE:2005) 1. **模型文件路径验证** 使用绝对路径加载模型文件,例如: ```python task = kpu.load("/sd/models/mbnet75.kmodel") # 确保路径包含存储设备前缀(如/sd/) ``` 若使用TF卡需先挂载文件系统(引用[1][^1]) 2. **固件版本兼容性** 通过以下命令查看固件版本: ```python import sys print(sys.implementation.version) ``` 需使用与KPU模型匹配的固件版本,建议更新至[MaixPy最新固件](https://github.com/sipeed/MaixPy/releases) 3. **文件系统完整性检查** 执行以下命令验证存储设备状态: ```python import uos print(uos.listdir('/sd')) # 检查TF卡是否正常挂载 ``` #### 二、类型转换错误(ValueError/TypeError) 1. **KPU输入规范验证** 图像预处理需严格遵循输入格式,例如YOLO模型要求输入为RGB565格式: ```python img = sensor.snapshot() img.pix_to_ai() # 必须执行格式转换(引用[4][^4]) ``` 2. **ROI参数类型强制校验** 使用类型断言确保参数有效性: ```python roi = (48,8,224,224) assert isinstance(roi, tuple) and len(roi)==4, "ROI格式错误" img.copy(roi=roi, copy_to_fb=img) ``` #### 三、未定义名称错误(NameError) 1. **模块显式导入规范** MaixPy需明确导入硬件驱动模块: ```python from machine import UART from fpioa_manager import fm # 引脚映射管理必须显式导入(引用[3][^3]) ``` 2. **硬件对象生命周期管理** 外设初始化需在全局作用域完成: ```python def setup_i2s(): global i2s_device # 防止对象被GC回收 i2s_device = I2S(I2S.DEVICE_0) ``` #### 四、语法错误(SyntaxError) 1. **MicroPython语法限制规避** 避免使用以下Python特性: ```python # 禁用f-strings print("温度: {}℃".format(temp)) # 替换print(f"温度:{temp}℃") # 禁用海象运算符 while (data := uart.read(1)): # 替换为分步读取 ``` 2. **异常处理规范** 使用兼容的异常捕获语法: ```python try: kpu.run_yolo2(task, img) except Exception as e: # 避免指定异常类型 print("推理错误:", e) ``` #### 五、硬件级故障排查 1. **双阶段固件烧录验证** 通过kflash_gui执行强制擦除烧录:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值