标准解读:GBT9969 2008工业产品使用说明书

标准解读:GBT9969-2008工业产品使用说明书、总则 文档链接:GBT9969-2008 基本要求 说明书内容 产品用途和使用范围 根据产品特点给出: 主要结构、性能、型号、规格 吊运、安装、使用、操作、维修、保养、贮存; 应提供:必要的环保和节约能源方面的内容; 易燃易爆有毒有腐蚀有放射性的产品,说明书应包含注意事项、防护措施和发生意外时的紧急处理方法; 对于安全限制有要求或存在有效年限的产品应提供产品上的生产日期和有效期; 实行生产许可证管理的产品,应在包装上标注有效的生产许可证编号; 模版 概述 安全使用注意事项 结构特征与工作原理 技术特性 尺寸重量 安装、调整 使用操作 故障分析与排除 安全保护装置与事故处理 保养维护 运输贮存 开箱及检查 环保及其他 图、表、照片

阅读更多

分享

Pip安装太慢更换为国内源

如题: pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5 国内源: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/

阅读更多

分享

Docker镜像构建和发布

构建: docker build - < Dockerfile 发布: 打tag docker tag fa1dad7f37e4 fugreat/nrf52 push docker push fugreat/nrf52

阅读更多

分享

使用doker搭建nrf52开发环境

目标 搭建NRF52的开发环境; 简化环境搭建复杂度,跨平台适配开发环境; 方法 安装docker 下载nrf52开发环境 docker pull fugreat/nrf52 创建容器 docker run --name nrf52-1 -v /Users/user_name/data:/data -itd fugreat/nrf52 bash 此步把 /Users/user_name/data目录映射到编译环境的/data中 编译 docker exec -it nrf52 bash -c "cd /data/project_name && make" 启/停容器 docker start nrf52 docker stop nrf52

阅读更多

分享

MacOS安装nrfutil

参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrfutil%2FUG%2Fnrfutil%2Fnrfutil_intro.html pip install nrfutil macOS: pip install --ignore-installed six nrfutil ~~~~~~~~~~~~~ Installing from PyPI nRF Util is available as a package in the Python Package Index (PyPI) and can be downloaded and installed directly using the Python installer program pip. Enter the following command to install the latest published version from PyPI: pip install nrfutil This command installs nRF Util and all required packages. When installing on macOS, you might get an error about the Python module six.

阅读更多

分享

Docker覆盖entrypoint

在使用docker简化编译环境搭建过程中碰到一个问题是 pull下来的镜像默认提供entrypoint,自动对指定的目录进行编译(运行make)。 但是在实际使用过程中,可能需要带参数或者make不同的目标。 因为需要屏蔽掉默认的entrypoint。 屏蔽方法是: # 进入镜像的, 运行bash docker run -it --entrypoint /bin/bash [docker_image] # 在上面基础上运行自己想要的指令,如 docker run -it --entrypoint /bin/bash -c "cd /code && make -j8 && make flash" [docker_imag】

阅读更多

分享

文件共享seafile

文件共享服务 目标 组内文件共享; 安装 点此查看官方文档的详细安装步骤。 摘抄如下,docker下安装: 1.下载docker-compose.yml wget https://docs.seafile.com/d/cb1d3f97106847abbf31/files/?p=/docker/docker-compose.yml 2.按照实际情况修改配置: version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service. - MYSQL_LOG_CONSOLE=true volumes: - /opt/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store. networks: - seafile-net memcached: image: memcached:1.5.6 container_name: seafile-memcached entrypoint: memcached -m 256 networks: - seafile-net seafile: image: seafileltd/seafile-mc:latest container_name: seafile ports: - "80:80" # - "443:443" # If https is enabled, cancel the comment.

阅读更多

分享

在线绘制cad

MxDraw 在线打开、绘制cad文件 http://www.mxdraw.com/help_5_20101.html 支持js调用; 需要在win下浏览的本级安装插件才可以使用; macOS支持不好;

阅读更多

分享

本安电源分析

本安电路电源分析 1、电芯输出端保险丝F3、限流电阻R16是短路保护和限制短路电流的器件,是必须要用的。 2、R7、Q7、Q3、R9、D3是过电流保护,电流通过取样电阻R7两端的压降来调节Q7的导通角,从而使Q3的基极电压高低变化,使得通过Q3的负载电流得到控制;同理R8、Q8、Q4、R10、D4功能完全一样,只不过是与前面的一组过电流保护串联在电路中。 3、U2与电阻R12、R14组成输出稳压电路,即使电芯电压波动也能保证负载上的电压恒定。 4、因为是本安电源,必须做二次保护验证的,上面回复的第二点中就是为了满足这个要求。认证过程是当短接Q3时还有Q4正常做过电流保护,当短接Q4时则有Q3正常做过电流保护,且无论短接Q3还是Q4必须保证电流保护的动作值是完全一样的。 5、因为是本安电源,R16是必须有的,当做短路验证时,就由这个保证短路电流符合认证要求的。

阅读更多

分享

Rt Thread_线程

动态线程和静态线程范例 thread1 是一个静态线程对象,而 thread2 是一个动态线程对象。 thread1 对象的内存空间,包括线程控制块 thread1 与栈空间 thread1_stack 都是编译时决定的,因为代码中都不存在初始值,都统一放在未初始化数据段中。 thread2 运行中用到的空间都是动态分配的,包括线程控制块(thread2_ptr 指向的内容)和栈空间。 静态对象会占用 RAM 空间,不依赖于内存堆管理器,内存分配时间确定。 动态对象则依赖于内存堆管理器,运行时申请 RAM 空间,当对象被删除后,占用的 RAM 空间被释放。 这两种方式各有利弊,可以根据实际环境需求选择具体使用方式。 /* 线程 1 的对象和运行时用到的栈 */ static struct rt_thread thread1; static rt_uint8_t thread1_stack[512]; /* 线程 1 入口 */ void thread1_entry(void* parameter) { int i; while (1) { for (i = 0; i < 10; i ++) { rt_kprintf("%d\n", i); /* 延时 100ms */ rt_thread_mdelay(100); } } } /* 线程 2 入口 */ void thread2_entry(void* parameter) { int count = 0; while (1) { rt_kprintf("Thread2 count:%d\n", ++count); /* 延时 50ms */ rt_thread_mdelay(50); } } /* 线程例程初始化 */ int thread_sample_init() { rt_thread_t thread2_ptr; rt_err_t result; /* 初始化线程 1 */ /* 线程的入口是 thread1_entry,参数是 RT_NULL * 线程栈是 thread1_stack * 优先级是 200,时间片是 10 个 OS Tick */ result = rt_thread_init(&thread1, "thread1", thread1_entry, RT_NULL, &thread1_stack[0], sizeof(thread1_stack), 200, 10); /* 启动线程 */ if (result == RT_EOK) rt_thread_startup(&thread1); /* 创建线程 2 */ /* 线程的入口是 thread2_entry, 参数是 RT_NULL * 栈空间是 512,优先级是 250,时间片是 25 个 OS Tick */ thread2_ptr = rt_thread_create("thread2", thread2_entry, RT_NULL, 512, 250, 25); /* 启动线程 */ if (thread2_ptr !

阅读更多

分享