测试工程师首用chatGPT,编写python读取xmind测试用例chatgtp+python+xmind

news2024/11/17 8:25:26

背景

有用xmind写测试用例的吧,统计一个xmind的条,需要花大量的时间,还有要统计有多少条冒烟的,多少条不通过的,还有通过的条数。

需求

快速使用python,写一个简单的脚本,统计所有xmind节点,分别统计出,冒烟,通过,不通过的条数

方案

使用chatGPT编写python脚本,通过脚本读取xmind文件,统计特定标签数,特定的标签相当于表示冒烟用例,通过用例,不通过用例,解决人工统计的困难,通过程序统计一个比较准确的数值,允许有一定的偏差,偏差来自于xmind的版本,格式,编写规范等

过程

为chatGTP建立角色

先给chatGTP建立一个角色:测试开发、python开发

给chatGTP提出简单的需求

我:用python,分别读取xmind文件,每个一个画布
AI:要读取xmind文件,需要使用外部库xmind。首先,你需要使用pip在Python环境中安装xmind库。打开终端或命令行,输入以下命令进行安装:

pip install xmind

解析xmind文件

AI:安装完成后,就可以使用xmind库来读取并操作xmind文件了。

以下是一个读取xmind文件,并将每个画布输出为图片的代码示例:

import xmind
import os

# 读取xmind文件
workbook = xmind.load('/path/to/your/xmind/file.xmind')

# 获取每个画布并输出为图片
for sheet in workbook.getSheets():
    # 获取画布名称
    sheet_name = sheet.getTitle()

    # 创建输出目录
    output_dir = f'{os.getcwd()}/{sheet_name}'
    os.makedirs(output_dir, exist_ok=True)

    # 输出画布中的每个主题为图片
    for topic in sheet.getRootTopic().getSubTopics():
        # 获取主题文本
        topic_title = topic.getTitle()

        # 创建输出文件路径
        output_file = f'{output_dir}/{topic_title}.png'

        # 输出主题为图片
        topic.getImage(output_file)

AI对代码的解析

AI:代码中,xmind.load()方法读取指定路径的xmind文件,并返回一个workbook对象。getSheets()方法获取xmind文件中的所有画布。遍历每个画布,获取画布名称并创建输出目录。

然后,遍历每个画布中的主题,获取主题文字并创建输出文件的路径。getImage()方法将主题输出为png格式的图片。

这个示例代码可以帮助你开始读取和处理xmind文件。你可以根据自己的需求,进一步扩展和优化代码。


AI明细是要输出图片,这也明细不是我的本意,我意思是输出每个sheet的名字

矫正AI的理解重写需求

我:只需要在python里面print一下所有的画布名称

AI:

import xmind

# 读取xmind文件
workbook = xmind.load('/path/to/your/xmind/file.xmind')

# 遍历每个画布并打印画布名称
for sheet in workbook.getSheets():
    print(sheet.getTitle())

代码中,workbook.getSheets()方法获取xmind文件中的所有画布,
然后使用for循环遍历每个画布,打印出画布的名称。
运行代码,即可在控制台上看到所有画布的名称。

我:xmind这个库无法打开最新的xmind

AI:如果xmind库无法打开最新格式的xmind文件,可能需要使用最新的xmind库或者其他支持最新xmind格式的库。

可以尝试使用xmind-sdk-python库来打开最新版本的xmind文件,它是Xmind的官方开发工具,支持最新版本的xmind文件。

以下是一个使用xmind-sdk-python库打开xmind文件,并打印所有画布名称的示例代码:

from xmind import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典
xmind_dict = xmind_to_dict(xmind_file)

# 获取画布列表
sheets = xmind_dict.get('sheets')

# 打印所有画布名称
if sheets:
    for sheet in sheets:
        print(sheet.get('title'))


代码中,xmind_to_dict()方法将xmind文件读入,并将其转换成一个包含所有信息的字典。
然后通过获取字典中的'sheets'键,获取所有画布的信息。
对于每个画布,使用get()方法获取名称信息并打印。

这个示例代码可以帮助你使用xmind-sdk-python库,打开最新版本的xmind文件并打印出画布名称。
你可以根据自己的需求,进一步扩展和优化代码。

指定AI使用指定类库

我:用这个库:xmindparser

AI:xmindparser是第三方库,可以解析最新版本Xmind文件,进行导入和导出,同时提供方便的API,方便对Xmind文件进行修改和处理。以下是一个使用xmindparser库读取xmind文件,并打印所有画布名称的代码示例:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典
xmind_dict = xmind_to_dict(xmind_file)

# 获取画布列表
sheets = xmind_dict.get('topic-refs')

# 打印所有画布名称
if sheets:
    for sheet in sheets:
        sheet_id = sheet.get('id')
        sheet_title = xmind_dict.get(sheet_id, {}).get('title')
        print(sheet_title)

代码中,xmind_to_dict()方法读取xmind文件,并将其转换成一个字典。
使用xmind_dict.get()方法,获取字典中的'topic-refs'键,它包含了所有画布的引用。
对于每个画布引用,获取它的id并使用xmind_dict.get()方法获取对应的画布信息,
包括标题信息,并打印出标题信息。

这个示例代码可以帮助你使用xmindparser库,打开最新版本的xmind文件并打印出画布名称。
你可以根据自己的需求,进一步扩展和优化代码。

到这里把代码贴上去,还是有报错的,再一次调教一下AI,再完善一下需求的方向

我:用python的xmindparser库,分别读取xmind文件中每个画布的名称

AI:使用xmindparser库,可以通过以下代码读取xmind文件中每个画布的所有主题及其名称信息:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典
xmind_dict = xmind_to_dict(xmind_file)

# 获取画布列表
sheets = xmind_dict.get('topic-refs')

# 遍历所有画布的主题并打印主题名称
if sheets:
    for sheet in sheets:
        sheet_id = sheet.get('id')
        sheet_title = xmind_dict.get(sheet_id, {}).get('title')
        sheet_topics = xmind_dict.get(sheet_id, {}).get('topics')

        if sheet_topics:
            for topic in sheet_topics:
                topic_title = topic.get('title')
                print(f'画布: {sheet_title}, 主题: {topic_title}')

代码中,xmind_to_dict()方法读取xmind文件,并将其转换成一个字典。
使用xmind_dict.get()方法,获取字典中的'topic-refs'键,它包含了所有画布的引用。
对于每个画布引用,获取它的id,并使用xmind_dict.get()方法获取对应的画布信息,包括标题信息和主题信息。

对于每个画布,遍历主题信息,获取主题标题信息并打印。

这个示例代码可以帮助你使用xmindparser库读取xmind文件中所有画布的主题及其名称信息。
你可以根据自己的需求,进一步扩展和优化代码。

'list' object has no attribute 'get'

运行之后,发送报错了,把错误在抛给gtp,sheets = xmind_dict.get('topic-refs')
AttributeError: 'list' object has no attribute 'get'

AI:如果你遇到'list' object has no attribute 'get'错误,可能是由于读取xmind文件后返回了列表而非字典对象。

这种情况下,你可以尝试使用以下代码,从列表中获取字典对象:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 如果返回的是列表,则获取第一个元素
if isinstance(xmind_data, list):
    xmind_data = xmind_data[0]

# 获取画布列表
sheets = xmind_data.get('topic-refs')

# 遍历所有画布的主题并打印主题名称
if sheets:
    for sheet in sheets:
        sheet_id = sheet.get('id')
        sheet_title = xmind_data.get(sheet_id, {}).get('title')
        sheet_topics = xmind_data.get(sheet_id, {}).get('topics')

        if sheet_topics:
            for topic in sheet_topics:
                topic_title = topic.get('title')
                print(f'画布: {sheet_title}, 主题: {topic_title}')

代码中,使用isinstance()方法判断返回值的类型,如果是列表类型,则获取第一个元素。
获取画布列表后,遍历所有画布的主题并打印主题名称。

使用这个代码可以解决'list' object has no attribute 'get'错误,帮助你使用xmindparser库读取xmind文件中所有画布的主题及其名称信息。

 运行了一下代码,结果打印为空

继续给AI抛出错误:打印的结果为什么会为空?

下面是AI给出的意见,大概是个说,xmind的文件没有对应字段

可以先通过xmind的类库打开文件,读取并打印信息,看看文件的字段名叫什么

from xmind import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典
xmind_dict = xmind_to_dict(xmind_file)

 我:我的内容不包含topic-refs,替换成‘title’,而且个列表

AI:如果你的xmind文件中没有topic-refs键,但是有title键,可以按照以下代码读取画布名称和主题名称。

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 如果返回的是列表,则获取第一个元素
if isinstance(xmind_data, list):
    xmind_data = xmind_data[0]

# 获取画布列表
sheets = xmind_data.get('title')

# 处理每个画布
for sheet in sheets:
    sheet_title = sheet['title']

    # 处理画布中的主题
    root_topic = sheet.get('topics', {})
    topics = root_topic.get('children', [])

    # 处理每个主题
    for topic in topics:
        topic_title = topic.get('title', '')
        print(f'画布: {sheet_title}, 主题: {topic_title}')

代码中,我们先使用xmindparser库将xmind文件转换成字典或列表格式。
如果返回的是一个列表,则需要获取列表中的第一个元素。

然后,获取画布列表。在这种情况下,'title'键返回的值是一个列表,我们需要处理每个画布。

对于每个画布,获取其标题,并处理其中的主题。在这个例子中,我们使用根主题作为画布的主题,
然后获取主题下的所有子主题。对于每个主题,获取其标题,打印输出画布名称和主题名称。

这个代码可以帮助你使用xmindparser库读取xmind文件中所有画布和主题名称信息,
并对其进行处理和扩展。

string indices must be integers

我:sheet_title = sheet['title']
TypeError: string indices must be integers

AI:如果你遇到TypeError: string indices must be integers错误,可能是由于代码中对字符串类型的变量进行了索引,而字符串类型是不支持索引操作的。

针对这种情况,你可以使用以下代码:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 如果返回的是列表,则获取第一个元素
if isinstance(xmind_data, list):
    xmind_data = xmind_data[0]

# 获取画布列表
sheets = xmind_data.get('title')

# 处理每个画布
for sheet in sheets:
    if isinstance(sheet, str):
        sheet_title = sheet
    else:
        sheet_title = sheet.get('title', '')

    # 处理画布中的主题
    root_topic = sheet.get('topics', {})
    topics = root_topic.get('children', [])

    # 处理每个主题
    for topic in topics:
        topic_title = topic.get('title', '')
        print(f'画布: {sheet_title}, 主题: {topic_title}')

在这个代码中,我们增加了一个判断:如果当前画布的类型是字符串,
直接将其作为画布标题;否则,使用get()方法获取其标题,如果无法获取,则将其设为空字符串。

这个代码可以解决TypeError: string indices must be integers错误,
帮助你使用xmindparser库读取xmind文件中所有画布和主题名称信息,并对其进行处理和扩展。

AttributeError: 'str' object has no attribute

我:root_topic = sheet.get('topics', {}) AttributeError: 'str' object has no attribute 'get'

AI:

如果你遇到了AttributeError: 'str' object has no attribute 'get'错误,在这种情况下是因为原先的代码设定先判断json中的'title'键是否存在,若存在后继续操作,但'title'返回的是字符串,字符串类型是不支持使用get方法的。

因此,需要先判断获取到的变量是否为字典类型,如果是则使用get()方法获取'topics'键对应的值,否则设置root_topic为一个空字典。

修改后的代码如下:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 如果返回的是列表,则获取第一个元素
if isinstance(xmind_data, list):
    xmind_data = xmind_data[0]

# 获取画布列表
sheets = xmind_data.get('title')

# 处理每个画布
for sheet in sheets:
    if isinstance(sheet, str):
        sheet_title = sheet
    else:
        sheet_title = sheet.get('title', '')

    # 处理画布中的主题
    if isinstance(sheet, dict):
        root_topic = sheet.get('topics', {})
        topics = root_topic.get('children', [])
    else:
        topics = []

    # 处理每个主题
    for topic in topics:
        topic_title = topic.get('title', '')
        print(f'画布: {sheet_title}, 主题: {topic_title}')

在这个代码中,我们增加了一个判断:如果当前画布的类型是字典,
使用get()方法获取'topics'键对应的值,否则将topics设置为空列表。

这个代码可以解决AttributeError: 'str' object has no attribute 'get'错误,
帮助你使用xmindparser库读取xmind文件中所有画布和主题名称信息,并对其进行处理和扩展。

来到这里,代码没有报错,运行也没有打印结果,由于上面我们看过数据格式,在一次告诉AI我们的结果格式

向AI提出我需要的结果

我:我告诉你一下,这是xmind_data结果:[{'title': '画布 1', 'topic': {'title': '中心主题', 'topics': [{'title': '分支主题 1', 'makers': ['tag-red']}, {'title': '分支主题 2', 'makers': ['tag-orange']}, {'title': '分支主题 3', 'makers': ['tag-green'], 'topics': [{'title': '子主题 1', 'makers': ['priority-1']}, {'title': '子主题 2', 'makers': ['flag-red']}]}, {'title': '分支主题 4'}]}, 'structure': 'org.xmind.ui.map.unbalanced'}, {'title': '画布 2', 'topic': {'title': '中心主题', 'topics': [{'title': '分支主题 1'}, {'title': '分支主题 2'}]}, 'structure': 'org.xmind.ui.map.unbalanced'}]

AI:好的,根据你提供的内容,可以按照以下代码处理xmind_data:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 处理每个画布
for sheet in xmind_data:
    sheet_title = sheet.get('title', '')

    # 处理画布中的主题
    root_topic = sheet.get('topic', {})
    topics = root_topic.get('topics', [])

    # 处理每个主题
    for topic in topics:
        topic_title = topic.get('title', '')
        print(f'画布: {sheet_title}, 主题: {topic_title}')

来到这里由于有运行结果,当然结果还是需要进一步优化的,需要优化画布的名称重复输出

 

我:只需要打印,画布名称就可以了

AI: 如果你只需要打印画布名称,可以按照以下代码处理xmind_data:

from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 打印每个画布的名称
for sheet in xmind_data:
    sheet_title = sheet.get('title', '')
    print(f'画布: {sheet_title}')


这个代码会遍历xmind_data中所有的画布,获取画布的名称并打印出来。

如果你需要获取更多的信息,比如主题的数量或者关系,可以对代码进行相应的修改,
比如添加一个计数器获取主题数量等。

这里只统计了一个结果,需要遍历所有结果出来

我:继续完善这个代码,for循环遍历xmind_data,得到每个一个画布,循环遍历找到每个画布里面的makers键的值,且统计值的个数

AI:继续完善这个代码,for循环遍历xmind_data,得到每个一个画布,循环遍历找到每个画布里面的makers键的值,且统计值的个数

from collections import Counter
from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 遍历每个画布
for sheet in xmind_data:
    sheet_title = sheet.get('title')

    markers = []
    # 遍历每个主题,获取标签列表
    for topic in sheet.get('topic', {}).get('topics', []):
        markers += topic.get('markers', [])

    # 统计每个标签出现的次数
    marker_count = Counter(markers)

    # 输出结果
    print(f'画布: {sheet_title}')
    for marker, count in marker_count.items():
        print(f'标签:{marker},出现次数:{count}')
    print('\n')

我:完善代码makers的值分别为:tag-green,tag-red,tag-yellow

AI:好的,如果你需要在上面的代码基础上进一步筛选标签,使其仅包含值为’tag-green’、'tag-red’和’tag-yellow’的标签,并统计其出现次数,可以按照以下代码进行修改:

from collections import Counter
from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 遍历每个画布
for sheet in xmind_data:
    sheet_title = sheet.get('title')

    markers = []
    # 遍历每个主题,获取标签列表
    for topic in sheet.get('topic', {}).get('topics', []):
        for marker in topic.get('markers', []):
            if marker in ['tag-green', 'tag-red', 'tag-yellow']:
                markers.append(marker)

    # 统计每个标签出现的次数
    marker_count = Counter(markers)

    # 输出结果
    print(f'画布: {sheet_title}')
    for marker, count in marker_count.items():
        print(f'标签:{marker},出现次数:{count}')
    print('\n')

我:我告诉你一下,这是xmind_data结果,有‘画布1’和‘画布2’,分别统计出'tag-green', 'tag-red', 'tag-yellow'的标签数量:[{'title': '画布 1', 'topic': {'title': '中心主题', 'topics': [{'title': '分支主题 1', 'makers': ['tag-red']}, {'title': '分支主题 2', 'makers': ['tag-orange']}, {'title': '分支主题 3', 'makers': ['tag-green'], 'topics': [{'title': '子主题 1', 'makers': ['priority-1']}, {'title': '子主题 2', 'makers': ['flag-red']}]}, {'title': '分支主题 4'}]}, 'structure': 'org.xmind.ui.map.unbalanced'}, {'title': '画布 2', 'topic': {'title': '中心主题', 'topics': [{'title': '分支主题 1'}, {'title': '分支主题 2'}]}, 'structure': 'org.xmind.ui.map.unbalanced'}] 

AI:好的,那么可以按照如下代码对xmind_data进行进一步筛选和统计:

from collections import Counter
from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 定义要统计的标签
target_tags = ['tag-green', 'tag-red', 'tag-yellow']

# 遍历每个画布
for sheet in xmind_data:
    sheet_title = sheet.get('title')

    markers = []
    # 遍历每个主题,获取标签列表
    for topic in sheet.get('topic', {}).get('topics', []):
        makers = topic.get('makers', [])
        # 筛选出目标标签
        target_makers = [maker for maker in makers if maker in target_tags]
        markers.extend(target_makers)

    # 统计每个标签出现的次数
    marker_count = Counter(markers)

    # 输出结果
    print(f'画布: {sheet_title}')
    for target_tag in target_tags:
        count = marker_count[target_tag]
        print(f'标签:{target_tag},出现次数:{count}')
    print('\n')

我:然后将这几个标签的数相加'tag-green', 'tag-red', 'tag-yellow'

AI:

from collections import Counter
from xmindparser import xmind_to_dict

# 读取xmind文件
xmind_file = '/path/to/your/xmind/file.xmind'

# 将xmind文件转换成字典或列表
xmind_data = xmind_to_dict(xmind_file)

# 定义要统计的标签
target_tags = ['tag-green', 'tag-red', 'tag-yellow']

# 初始化标签数量
total_count = 0

# 遍历每个画布
for sheet in xmind_data:
    markers = []
    # 遍历每个主题,获取标签列表
    for topic in sheet.get('topic', {}).get('topics', []):
        makers = topic.get('makers', [])
        # 筛选出目标标签
        target_makers = [maker for maker in makers if maker in target_tags]
        markers.extend(target_makers)

    # 统计每个标签出现的次数
    marker_count = Counter(markers)

    # 累加每个目标标签的出现次数
    for target_tag in target_tags:
        count = marker_count[target_tag]
        total_count += count
        print(f'标签:{target_tag},出现次数:{count}')

    print(f"目标标签共出现了{total_count}次\n")

 最后面,就不断和AI沟通,完善代码

from xmindparser import xmind_to_dict

xmind_file = 'test.xmind'

xmind_dict = xmind_to_dict(xmind_file)


def count_titles_and_tags(topics):
    """
    递归地统计所有的title和tag数量
    """
    title_count = len(topics)  # 统计当前主题块的数量
    tag_red_count = 0
    tag_orange_count = 0
    tag_green_count = 0

    for topic in topics:
        if 'makers' in topic and 'tag-red' in topic['makers']:
            tag_red_count += 1
        if 'makers' in topic and 'tag-yellow' in topic['makers']:
            tag_orange_count += 1
        if 'makers' in topic and 'tag-green' in topic['makers']:
            tag_green_count += 1

        if 'topics' in topic:
            sub_topics = topic['topics']
            sub_counts = count_titles_and_tags(sub_topics)
            title_count += sub_counts[0]
            tag_red_count += sub_counts[1]
            tag_orange_count += sub_counts[2]
            tag_green_count += sub_counts[3]

    return title_count, tag_red_count, tag_orange_count, tag_green_count


# 统计所有的title和tag数量
# total_counts = count_titles_and_tags(xmind_dict[0]['topic']['topics'])
# print("Total number of titles:", total_counts[0])
# print("Total number of tag-red:", total_counts[1])
# print("Total number of tag-orange:", total_counts[2])
# print("Total number of tag-green:", total_counts[3])


# for canvas in xmind_dict:
#     print("Canvas name:", canvas['title'])
#     topics = canvas['topic']['topics']
#     total_counts = count_titles_and_tags(topics)
#     print("Total number of titles in canvas:", total_counts[0])
#     print("Total number of tag-red in canvas:", total_counts[1])
#     print("Total number of tag-orange in canvas:", total_counts[2])
#     print("Total number of tag-green in canvas:", total_counts[3])


# 初始化总计数器
total_counts = [0, 0, 0, 0]  # title计数器,tag-red计数器,tag-orange计数器,tag-green计数器

for canvas in xmind_dict:
    print("Canvas name:", canvas['title'])
    topics = canvas['topic']['topics']
    canvas_counts = count_titles_and_tags(topics)
    print("Total number of titles in canvas:", canvas_counts[0])
    print("Total number of tag-red in canvas:", canvas_counts[1])
    print("Total number of tag-orange in canvas:", canvas_counts[2])
    print("Total number of tag-green in canvas:", canvas_counts[3])

    # 累加计数器
    total_counts[0] += canvas_counts[0]  # title计数器累加
    total_counts[1] += canvas_counts[1]  # tag-red计数器累加
    total_counts[2] += canvas_counts[2]  # tag-orange计数器累加
    total_counts[3] += canvas_counts[3]  # tag-green计数器累加

# 输出总计数器结果
print("Canvas name:总计数")
print("Total number of titles:", total_counts[0])
print("Total number of tag-red:", total_counts[1])
print("Total number of tag-orange:", total_counts[2])
print("Total number of tag-green:", total_counts[3])

运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA_学习_09_PWM呼吸灯

PWM在三相电机控制中,有着非常重要的地位。 如果你需要用FPGA去实现三相电机的控制, PWM这一关是绕不过的。好在PWM的基本原理是比较简单的。所以原理部分本文就略过,本文基于PWM实现呼吸灯。 1 时序 {signal: [{name: clk, wave: p....…

4 STM32启动过程(以Cortex-M3为例)(保姆级介绍)

设计知识点补充在前: 1.关于存储器映射、存储器重映射、内存映射、地址映射、地址转换等计算机专业名词详解 参考见 关于存储器映射、存储器重映射、内存映射、地址映射、地址转换等计算机专业名词详解_Vincent_Song的博客-CSDN博客 2.哈佛结构和冯诺依曼结构的区别…

vue2中左侧菜单和头部tab标签联动

效果图 我这里是使用的vue2 element-ui来实现的,代码可以直接拿来使用 一、首先先安装element-ui element-ui官网 npm i element-ui -S 然后在main.js里面配置,安装官网的步骤来就可以了,这里就不一一介绍了 import Vue from vue; impor…

用wget等命令行工具下载Jenkins上的文件

背景 现在一般公司的内部CI系统都用Jenkins实现,本地部署的时候我会将待测试文件下载到本地,再上传到Linux开发板,但能否从Linux开发板直接下载呢?只要Linux与Jenkins server之间的网络是联通的,那就可以 解决方法 …

【从零开始学习JAVA | 第二十三篇】集合体系结构

目录 前言: 单列集合: set与list的区别: 双列集合: map的特点: 总结: 前言: JAVA中为我们提供了很多集合,这些集合都有自己很独特的特点,因此我们要学习所有的…

网络安全合规-网络安全工程师发展前景(三)

上海网络安全工程师工资按工作经验统计,其中应届毕业生工资5250,0-2年工资8910,3-5年工资11330,8-10年工资13500,6-7年工资16170,该数据仅供参考。 北京网络安全工程师工资按工作经验统计,其中…

python selenium 定位鼠标悬浮后的新弹窗数据

背景 最近需要获取网页上的标签数据,但是标签大于3个以后是隐藏的,需要鼠标hover上去才显示。如下图,图一是刚进来界面展示的,需要知道额外的7个标签则需要将鼠标移动到目标上面去。 但是比较尴尬的一个点是,当游览器打…

数据结构C语言版本(中)

第四章 串 串:限定数据元素类型的线性表。 应用实例: 编辑软件(本质上是字符串处理) 信息检索、病毒查找(字符串比较) 第一节 逻辑结构 一、定义 串是由字符组成的线性表。 STRING(D,S,P) D {ai| ai∈CHARACTER(字符集), i0,1…

Verilog基础之八、多路选择器实现

一、前言 选择器在FPGA中是基础的组成部分,英文全称为Multiplexer,为一个多输入单输出的结构。以器件xc7k480tffv1156为例,在slice中,也可以看到F7AMUX,F8MUX,这两个MUX都是二输入单输出的选择器。 二、工程…

【雕爷学编程】Arduino动手做(128)---2路I2C电平转换模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

VR虚拟现实技术为机械专业教学带来新思路

随着虚拟现实技术的发展,VR已经成为机械专业教学的一种新方式。它可以为学生提供更加生动、直观的学习体验,同时也可以帮助教师更好地进行教学和评估。以下是广州华锐互动总结的一些常见的应用场景: 模拟实验和操作:VR可以为学生提…

(UE4/5) PS中生成LUT进行UE4/5的色域颜色校正

整理自官方:使用虚幻引擎查找表(LUT)进行颜色校正 | 虚幻引擎5.2文档 (unrealengine.com) 一、Unreal Engine中截图 在UE4/5中截一张场景图(比较有代表性的) 然后,用这张图片:(不要…

Qt使用事件(event)与定时器实现字幕滚动

目录 1、效果展示2、实现思路3、滚动窗口部件3.1、成员变量3.2、事件重写3.3、成员方法3.3、方法实现 1、效果展示 我们经常能够在外面看到那种滚动字幕,那么就拿qt来做一个吧。 2、实现思路 实现一个窗口部件,这个窗口部件显示了一串文本标语,它会每…

H3C-HCL-SE-“01-路由备份与链路聚合实验“

实验拓扑图: 实验需求: 1、按照图示配置 IP 地址,R3 上连接 192.168.X.X/24 4个业务网段 2、配置 RIPv2 协议使全网互通,R1 和 R3 的直连链路不运行 RIP 3、R1 上配置静态路由直接经过 R3 到达所有业务网段 4、R1 和 R2 上不允…

第八十五天学习记录:C++核心:内存分区模型

内存分区模型 C程序在执行时,将内存大方向划分为4个区域 1、代码区:存放函数体的二进制代码,由操作系统进行管理 2、全局区:存放全局变量和静态变量以及常量 3、栈区:由编译器自动分配释放,存放函数的参数…

【雕爷学编程】Arduino动手做(129)---TTS文字转语音合成模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

python爬虫_requests入门指引

文章目录 ⭐前言⭐requests库💖 pip安装requests💖 requests get💖 requests post 结束 ⭐前言 大家好,我是yma16,本文分享关于python的requests库用法。 该系列文章: python爬虫_基本数据类型 python爬虫…

Edge浏览器可以多开吗?

问答链接:Edge浏览器可以多开吗? 可以。 如果你的edge浏览器是默认路径安装的,那么打开命令提示符窗口输入以下两条命令即可启动一个数据完全隔离的edge浏览器。 mkdir C:\logs001 "C:\Program Files (x86)\Microsoft\Edge\Applicati…

shell [[]] 语法错误解决方式

错误如图: /linux/install.sh:行15: if [[ $contrainsha e *$contrainsname* ]] /linux/install.sh:行15: 条件表达式中有语法错误 附近有语法错误/linux/install.sh:行15: ]] [[]]语法 当[[ ]]判断expr成立时,退出状态为0,否则为非0值。…

STM32F103使用USART3/UART4乱码问题

源程序为USART1的配置,更改USART3/4相应寄存器测试,测试一直显示有规律乱码,收发不符。 void uart_init(u32 pclk,u32 bound) { float temp;u16 mantissa;u16 fraction; temp(float)(pclk*1000000)/(bound*16);//得到USARTDIVmantissa…