Lexsion 发布的文章

Typecho设置表格样式

前言:

正如大家看到的,本博客使用R-Blog主题。这个主题风格简洁,但有些地方可能不完善,如下所示,表格的样式也太过简洁了,不仔细看都不知道这有个表格,以至于影响到阅读。作者已经好多年没有更新了,于是需要我自己想办法解决这个问题。本人在HTML与CSS方面没有任何系统的学习经验,更不懂PHP语言。本文只是对问题解决的记录,若有错漏请各位指正。

原始表格样式

开搞:

首先,我大致看了一下Typecho文件结构,文章看样子是由./var/HyperDown.php从Markdown生成的,那表格也是由它产生。而主题以文件夹形式放在./usr/themes/下面。这个结构,想来表格生成的那边不能随意改动,只能动主题文件夹里的内容。看了下主题文件夹中的内容,是一些PHP文件和一个CSS文件。

搜索引擎简单搜了一下,了解到PHP文件在服务端运行,产生HTML文档给用户的浏览器。HTML(HyperText Markup Language)是超文本标记语言,由多种通过标签定义的元素组成,表格元素由<table>标签定义。CSS(Cascading Style Sheets)中文叫层叠样式表,用所谓的样式规则来定义HTML元素如何显示,而且它是层叠的。一条CSS规则由前部的选择器和跟在后面大括号中的一条或多条声明构成,每条声明则由一个属性名和对应的组成。

如此看来,我想要修改表格显示的样式,就要改表格相关的CSS规则。我先去网上找了几位大佬们的博客快速的浏览了一番。为自己积累一些经验,顺便F12学习一下他们表格元素的某些样式对应CSS规则中什么属性。经过一番粗略的学习,我拥有了低级的审美观念,也了解了极为有限的一部分CSS属性名的作用,接下来就是学以致用了。

R-Blog主题CSS文件只有一个,结构极为简单,打开改就完了。读书破万卷,下笔也不定有神。我先将前面学到的、我认为有用的规则写出来,然后浏览器浏览实际效果,通过F12调试功能,增删改这些规则,最终再据此修改CSS文件中的规则。经过一段时间的尝试,最终我将table相关规则替换成了以下内容:

table{width:50%;border-spacing:1px;background-color: #22aaef;border: 1.5px solid #22aaef;}
table thead tr{font-size: 17px;color: #22aaef;background-color: #DDD;}
table thead tr th{padding: 4px;}
table tbody tr{background-color: #FFF;}
table tbody tr td{padding: 4px;}
table tbody tr:nth-child(2n){background-color: #e5fcfd;}

浏览器中按Ctrl+F5刷新后,表格出现了神奇的变化。最终效果如下,我感觉还是挺满意的,大家可以评论区告诉我好不好看。

修改后的表格效果

参考:

在Windows下使用C语言开始Raspberry Pi Pico开发

什么是Raspberry Pi Pico:

最近,树莓派基金会推出了一款开发板,名为Raspberry Pi Pico。这是一块小巧快速用途广泛的最小系统开发板,它使用的是树莓派基金会自研的RP2040微控制器。树莓派官网标价为4$,国内购买价格大约30元人民币(不含邮费)。

RP2040微控制器有以下特性:两个ARM Cortex-M0+内核最高频率133MHz、 264KB的内部RAM、DMA控制器,支持挂最高达16MB的片外Flash。它有30个GPIO,4个可以作为模拟输入。外设包含2个UART、2个SPI、2个I2C、16个PWM通道以及一个USB1.1控制器。

Raspberry Pi Pico开发板支持通过C/C++或MicroPython语言进行开发,树莓派基金会官方提供了大量、详细的资料。它有一枚2MByte的SPI Flash用于存储固件,一枚RT6150B作为电源管理,一个Micro-USB接口用于供电和传输数据(包含下载固件)。板子采用40 pin 21x51 'DIP'设计,焊接排针后可以方便的使用在面包板上,同时邮票孔设计可以方便将 Pico 作为核心板贴装到其他电路板上。方便DIY爱好者实验用途的同时也兼顾了商业批量用途时的贴片安装。板子上共有26个3.3V GPIO,其中23个是纯数字IO,3个可以作为ADC使用。另外板子上有一个3Pin的ARM SWD接口用于调试,一个BOOTSEL按钮用于进入固件下载模式。它还有一个板载的LED指示灯连接在GPIO25上。

准备工作:

学习本文内容需要做如下准备:

  • Raspberry Pi Pico开发板和MicroUSB数据线,方便下载程序验证。
  • 运行Windows10的电脑,其他Win系统笔者无力测试,本文不适用Linux系统。
  • 足够的存储空间,建议至少8GB,因为C的工具链中某些工具或库会很大。

警告:以下的某些操作可能对您电脑中现有的某些工具链产生影响,如果您的电脑中有其他重要生产环境,谨慎考虑是否实践本文内容。如果您对此了解,相信您也能够解决遇到的问题。本人不会也没有技术对任何结果负责。

下载固件和体验MicroPython:

新接触到一款MCU或开发板,首先需要研究的就是如何搭建编译环境以及如何下载固件。大多我们需要先搭环境写出点灯程序,然后再进行固件下载。考虑此开发板支持MicroPython,且官方提供了已经编译好的MicroPython固件,在搭建开发环境前,我们可以先体验一番固件下载方式,顺便试一下MicroPython是如何点灯的。我们可以直接在官方如何开始页面,点击Getting Started with MicroPython。然后在网页上点击Download UF2 File下载文件。

文件下载完成后,按住BOOTSEL键,插入连接电脑的USB后松开BOOTSEL键,电脑上会显示一个名为RPI-RP2的大容量存储设备。将MicroPython UF2文件拖放到RPI-RP2卷上。Pico将重新启动,然后就可以使用串口工具连接MicroPython了。

我们可以在设备管理器里看到开发板串口的端口号,然后我们使用串口工具连接端口,波特率为9600。连接后可以按Ctrl+D软重启,此时应该可以看到相关提示信息。如下:

MPY: soft reboot
MicroPython v1.14 on 2021-02-05; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>>

官方推荐了Thonny,可以点击其官网右上角超链接下载最新版本。安装后点击工具设置,在解释器选项卡下设置解释器为Pico,并正确设置端口号。即可在下面的Shell窗口中看到提示信息。

逐行输入以下代码(>>>忽略)可以点亮板上LED:

>>> from machine import Pin
>>> led = Pin(25, Pin.OUT)
>>> led.value(1)

如果硬件正常,操作没有问题,此时板载LED已经点亮。我们便学会了如何下载固件和使用MicroPython点亮LED灯。如果想继续学习MicroPython,可参阅官方文档。

搭建C/C++编译环境:

安装工具链:

搭建编译环境的环节是必不可少的。我们首先按照文档说明安装工具链(Toolchain)。

我们需要安装的工具有:

  1. ARM GCC compiler(Windows 系统下载gcc-arm-none-eabi-XX-20XX-XX-major-win32.exe)
  2. CMake
  3. Build Tools for Visual Studio 2019(从下方的所有下载处展开VS2019工具,选择下载生成工具)
  4. Python 3(需要下载Python3,而不是Python2)
  5. Git

注意:

  1. ARM GCC compiler安装过程的最后一步,需要勾选Add path to environment variable,然后再点Finish完成安装;CMake安装过程中,InstallOptions页面要选择Add Cmake to the system PATH for all users。如果以上两个环境变量相关设置不正确,则会导致编译过程相关命令无法调用而失败。
  2. 通过VS2019生成工具下载器安装生成工具的时候,只需要在工作负载中勾选安装C++ 生成工具即可,其他不需要选择。右侧的可选功能会自动帮你选好,不要取消勾选 。也不要对存储空间占用有怀疑,这套工具确实非常大。
  3. 安装Python时需要选择Customize installation,然后在Advance Options页勾选Install for all users、Add Python to environment variables,并设置安装路径,最后点击Install开始安装,安装完成后还需要点击Disable path length limit以允许忽略MAX_PATH限制。
  4. 安装Git时,树莓派基金会官方文档做了如下要求(建议):需要换掉默认的vim编辑器,比如我换成了notepad++(因为使用vim需要极强的专业性,Git本身也建议换掉,但感觉是非必须项);后面的设置需要勾选third-party tools,勾选Checkout as is, commit as-is,还需要勾选Enable experimental support for pseudo consoles。

获取SDK和样例:

参考以下代码使用Git获取SDK和样例,具体使用的文件目录按情况自行配置:

C:\Users\pico\Downloads> git clone -b master https://github.com/raspberrypi/pico-sdk.git
C:\Users\pico\Downloads> cd pico-sdk
C:\Users\pico\Downloads\pico-sdk> git submodule update --init
C:\Users\pico\Downloads\pico-sdk> cd ..
C:\Users\pico\Downloads> git clone -b master https://github.com/raspberrypi/pico-examples.git

开始菜单搜索我习惯搜索Dev),找到Developer Command Prompt for VS 2019并启动它,然后在里面运行以下命令设置SDK路径(引号中的具体路径按实际情况填写):

C:\Users\pico\Downloads> setx PICO_SDK_PATH "..\..\pico-sdk"

关闭当前的窗口,重新打开Developer Command Prompt for VS 2019,这样环境变量应该就生效了。

导航到pico-examples目录下,通过以下命令尝试编译样例项目,以验证编译工具链是否正确配置:

C:\Users\pico\Downloads> cd pico-examples
C:\Users\pico\Downloads\pico-examples> mkdir build
C:\Users\pico\Downloads\pico-examples> cd build
C:\Users\pico\Downloads\pico-examples\build> cmake -G "NMake Makefiles" ..
C:\Users\pico\Downloads\pico-examples\build> nmake

如果没有错误,能够正常完成编译,能够在pico-examples\build下看到uf2文件,并且按照前文的方式将固件下载到Pico中后LED按照1s周期闪烁。即表示编译工具链可正常工作。

注意:以上必须使用Developer Command Prompt for VS 2019而不是系统自带的命令提示符,因为使用此工具会自带相关环境变量,而系统的命令提示符没有,使用系统的命令提示符执行操作无法成功编译。

自建工程:

确认编译工具链正常后,我们便可以开始尝试写一个自己的工程了,这在SDK的RADEME.md文件中有介绍。文档中的介绍是基于Linux系统的,但没关系,工程的目录结构是通用的,我们可以参考。以下我们参考文档建一个闪灯程序。

  1. 在合适的地方新建一个文件夹,以工程名字命名,名字建议避免使用中文和特殊符号。此处我命名为:Blinks。在文件夹内再建一个名为build的文件夹,用于存储编译后的文件。

  2. pico-sdkexternal文件夹下的pico_sdk_import.cmake复制到工程文件夹下(即Blinks下)。

  3. Blinks文件夹下建立名为blinks.c的源代码文件,在此文件中编写程序源代码。比如闪灯程序源代码如下:

     #include "pico/stdlib.h"
    
     const uint LED_PIN = 25;
    
     int main() {
         gpio_init(LED_PIN);
         gpio_set_dir(LED_PIN, GPIO_OUT);
         while (true) {
             gpio_put(LED_PIN, 1);
             sleep_ms(100);
             gpio_put(LED_PIN, 0);
             sleep_ms(100);
         }
     }
  4. 在工程文件夹下创建CMakeLists.txt文件,内容参考如下。以#开始的行是注释,用于解释,编写代码时请勿直接抄写,建议使用英文注释。

    cmake_minimum_required(VERSION 3.12)
    
    # 引入SDK (必须写在下面的project行前)
    include(pico_sdk_import.cmake)
    
    # 工程名,比如Blinks
    project(Blinks)
    
    # 初始化SDK
    pico_sdk_init()
    
    #添加项目的源文件,比如此处我们添加的blinks.c源文件
    add_executable(blinks
            blinks.c
            )
    
    # 引入pico_stdlib库
    target_link_libraries(blinks pico_stdlib)
    
    # 创建map/bin/hex 等文件.
    pico_add_extra_outputs(blinks)
  5. 打开Developer Command Prompt for VS 2019,通过以下命令编译项目。

    C:\Users\pico\Downloads> cd Blinks
    C:\Users\pico\Downloads\Blinks> cd build
    C:\Users\pico\Downloads\Blinks\build> cmake -G "NMake Makefiles" ..
    C:\Users\pico\Downloads\Blinks\build> nmake
  6. 如果一切正常,我们便可以在build文件夹下得到项目编译产生的文件,其中的uf2文件可以按前文方法下载到Pico开发板中验证,看运行结果是否与代码设计一致。

结语:

至此,我们便学会了Raspberry Pi Pico开发板点灯,后面具体可参考树莓派基金会官方提供的相关文档学习。祝大家学习顺利。

参考:

  1. 官方产品页:https://www.raspberrypi.org/products/raspberry-pi-pico/
  2. Getting-started:https://www.raspberrypi.org/documentation/pico/getting-started/
  3. Pico-SDK代码:https://github.com/raspberrypi/pico-sdk
  4. Pico-example代码:https://github.com/raspberrypi/pico-examples

Flash停止服务导致Fliqlo失效无法显示的处理方案

Flash停止服务导致Fliqlo失效无法显示的处理方案

前言:

Fliqlo是一款时钟屏保程序,很多人都在使用它。如果你对此没有印象,想一想,是否有见到很多科技视频作者电脑的屏保,是一个黑底白字的翻页时钟?十有八九是这个屏幕保护程序。2021年一月份的某一天,我秃然发现自己Windows10电脑的Fliqlo时钟屏保不能正常显示了。取而代之显示的是一个右下角带有 i 圆标的Flash标志。众所周知, i 表示information,这个图标是想要告诉我们一个关于Flash的信息,但是它并没有办法显示具体信息。联想到Flash是一项已经淘汰的技术,当即想到前几天某车站因Flash停止服务导致调度瘫痪、无法运行的新闻。网上查询,了解到Adobe官方有表示:无论是否卸载Flash,2021年一月份Flash将停止运行。我们可以得出结论,Flash停止服务导致了Windows下Fliqlo失效。题外话:一切的一切提醒我们,Flash这项技术真的到了该淘汰的时候了。Flash淘汰,2G网络淘汰,某项技术无论先前应用多么广泛,终有被更先进的技术淘汰的一天。我们自然也需要不断学习先进技术,避免自己被淘汰。
Flash_Info.jpg

解决方案

方案一:升级Fliqlo至最新版本

应用程序失效,排除自己操作问题后,首要想到的当然是尝试联系软件开发商。我在Fliqlo的官网看到了新版本的Change Log,目前的最新版本为1.4版,发布于2021年01月12日,最首要的改变就是 “不需要Flash Player” 。既然如此,我们更新到最新版应该就可以了。按照官方的指导,不能直接安装升级,我们需要先在应用和功能(程序和功能)里面卸载旧版本的Fliqlo,卸载后重启电脑。在个性化设置中的屏幕保护程序设置中检查,确认Fliqlo已经消失,否则可以手动在 C:/Windows 目录下搜索Fliqlo,将相关文件手动删除。然后运行Fliqlo 1.4 的安装程序进行安装。

Fliqlo的官网在中国大陆貌似难以直接打开,我们可能需要通过代理访问。此处提供一个下载链接,失效不补。

新版本的Fliqlo除了不需要Flash,还有一些其他改变。比如,设置移动到了屏保程序内部,可以在预览屏幕保护程序是点击鼠标,在下方修改相关设置。正因如此,新版的Fliqlo目前无法通过移动鼠标或点击鼠标退出屏保,而是只能通过按键盘退出屏保。这可能会让某些人不习惯。另一个改变是,添加了通过网络自动更新的功能,不知是否与此有关,我的在使用时经常会出现一个问题,在进入屏幕保护程序前有网络加载提示。且若关闭电脑网络,这个新版本根本不能正常显示时钟效果。新版本的不适应让我们考虑寻找其他方案。

方案二:安装使用中国企业版Flash或修改版Flash

既然Flash不能正常运行,我们想办法让Flash运行就可以了。网上了解到,因为Adobe Flash在中国是有单独公司运营的,为了中国政府网站等使用Flash的情况,有提供企业版本可以使用的Flash供大家使用。或也可使用网友们魔改的Flash来解决此问题。考虑Flash作为一项淘汰技术,本着考虑使用淘汰技术存在不稳定,不安全性,本着不断学习新技术而不是守旧的原则,本文不研究此方案具体方法,需要的可自行从网上搜索如何让自己的计算机可以继续使用Flash。

方案三:寻找其他替代应用

在GitHub上,有一个叫做FlipIt的开源项目,作者叫:phaselden。这个项目是用C#写的,要求电脑使用Windows系统,有安装 .NET Framework 4.8。最近因为Fliqlo出现的问题,导致很多人去寻找替代方案,好多人关注到了GitHub上的这个项目。有网友对标Fliqlo提了几个Issues,估计作者看到很多人关注他的项目也很有成就感,于是在积极完善项目。最近已经连续更新了好几次版本。仅仅几天,作者将没有12/24小时制、大小调整、需要手动在系统中安装字体这些问题全部解决了,它还为双显示器提供了副屏和主屏不同内容显示的模式,这点非常赞。经过短期体验,个人感觉最新版本的使用体验不错,可以平滑替代Fliqlo,所以在此推荐大家使用。

Altium Designer 封装绘制时批量重命名焊盘编号

Altium Designer 封装绘制时批量重命名焊盘编号

前言

此方法有相当的局限性,只能应对一连串等距焊盘。其他场景可参考此方法看是否能曲线解决。此需求遭遇可能性较低,笔者是需要绘制排线焊盘,借用了AD的PCB边缘连接器自动生成工具,使用此工具生成后删除底面的焊盘,然后连接到原理图库时发现无法自动连接,其原因为焊盘编号带有字母A前缀。为避免手动连接工作量太大,需将封装库种焊盘编号修改为不带A的纯数字顺序编号。

操作

  • 选中所有焊盘,旋转至横行摆放,拖动至将第一个焊盘的中心与绘制区域的中心对齐,或也可以重新设置绘制区域中心。

  • 确定焊盘之间X轴的距离,这个距离应当是等距的,比如本次处理的间距是0.8mm,否则不能使用此方法处理焊盘编号。

  • 选中所有焊盘,在右侧Properties中的Properties项目中找到Designator,点击后面的 ··· ,打开Smart Edit窗口。
    屏幕截图 2021-01-07 175102.png

  • 选择Formula选项卡,在里面输入公式 (X1/0.8) + 1 然后点击OK,其中的0.8就是刚才确认的焊盘之间X轴的距离。
    屏幕截图 2021-01-07 175334.png

  • 没有异常的话,此时已经成功改为连续的自然数字编号。
    屏幕截图 2021-01-07 185557.png

我用ArduinoProMicro_SSD1351_MLX90614整红外测温计

我用ArduinoProMicro_SSD1351_MLX90614整红外测温计

前言:

最初我想玩屏,于是从某网友手里买了个分辨率128*96的RGB OLED屏,然后尝试通过网友提供的C51示例代码适配到ArduinoProMicro,学习了一下SPI驱动彩屏。然后买了个MLX90614挂上,配合着前面的硬件学习了一下I2C,说起来MLX90614是SMBus协议,和I2C还有点区别。目前程序实现了读写MLX90614,主函数仅实现了隔三秒读取温度显示一次。整个项目的代码已经上传到GitHub,目前的状态只能算是个硬件测试程序,距离实用还差的远。初学者朋友有兴趣的可以Fork玩一下,也欢迎大佬指导改进。

项目地址:

Github:https://github.com/LexsionLee/Thermometer_MLX90614_SSD1351.git

效果图片:

A01.jpg

A02.jpg

硬件:

MCU:ATMEGA32U4
Board:ProMicro (Arduino Leonardo)

OLED Driver IC:SSD1351

OLED Power IC:ASM1117 3V3

温度传感器:MLX90614

引脚使用:

命名 IO口 功能
OLED_CLK D15 SCL
OLED_DIN D16 SDIN
OLED_RES D10 RST
OLED_DC D9 D/C
OLED_CS D8 /CS

CS为 低电平有效

功能 IO口
MLX90614_I2C_SDA D2
MLX90614_I2C_SCL D3

实现:

我选取了硬件SPI的IO口用于驱动屏幕,虽然网友提供的代码是软件模拟SPI。这种选择源于后期使用硬件SPI的可能性的考虑。事实证明,软件模拟的SPI速度太慢,对于这种彩色OLED屏来说,刷屏速度无法接受,能明显看到刷屏动作,体检极差。最终重写了部分不支持C++编译的代码。换用了硬件SPI的方式。这样果然快多了,画面瞬间刷完。

我用取模软件对数字显示字体进行了取模,推荐字体如下:

Lucida Console
MS Gothic
Rockwell
Rockwell Conden

I2C软件模拟部分,分别对通信协议中基础的片段进行了模拟,然后分层次拼接实现具体的读写功能。与某些I2C通信不同,这个SMBus协议中传输了一位PEC数据,用来校验传输的数据是否正确。我们读取时可以忽略,但是尝试写入时必然要发送PEC的。PEC的值是用本次读写操作中所有数据连在一起通过CRC-8校验得出的。比如写EEPROM时发送的PEC是由从机地址、欲写入的寄存器地址、数据低8位、数据高8位这些数据经过CRC-8校验得出。具体算法没弄懂,索性抄了网友的PEC生成函数,在PC上写了个临时程序验证OK,就这样用了。

手册(Datasheet)中给出的各种地址是需要拼上一个所谓的Opcode的,RAM部分的拼的是0,EEPROM拼的是001X XXXX。具体参考8.4.5. Commands。

EEPROM地址EMISS包含发射率参数(工厂默认1.0=0x FFFF),这是个16位数值。计算公式为:Emissivity = dec2hex[ round( 65535 x ε) ],其实就是65535乘以发射率(范围0.1~1.0),然后得出的结果转换为16进制值。修改EMISS需要先向该地址写0x0000,然后再将新的值写入。

实时的红外测温数据从TOBJ中读出,数据格式为4位16进制值,最高位为错误标记位。我使用的版本只有TOBJ1,所以我程序中读取的TOBJ1的数据。该数据乘以0.02得出的值即为当前红外传感器测得的绝对温度,即开氏温度。众所周知,此温度减去273.15即为摄氏温度。传感器量程能报告的最高温度为382.19℃(0x7FFF),如果报告数据最高位(MSB)为1(0x8XXX)则表示数据有错误,程序上需要做对应处理(目前程序中没有对此做处理)。另外我们可以从TA中读出传感器本身的当前温度数据(线性输出极限范围-38.2~+125℃),处理方式同上。

最后我们将得到的温度数据输出到屏幕上显示即可。

踩坑记录:

因为博主技术太菜,所以会遇到一些低级错误,记下来防止再犯错误!

In function XXX :XXX.cpp:XXXXX :"undefined reference to XXX"

Arduino(AVR) 使用的是C++语言,它使用的编译器是g++ 。在编译时,.ino文件会被改成.cpp,作为C++文件编译。我们认为C++是C的超集,如此看来,我们使用C的语法来写程序应当是可行的。但如果我们的项目由多个.c和.h文件构成且其他.c与.h文件中有函数在.ino文件中调用时,即c文件和cpp文件混编的情况,编译器便会报错。编译器会报告ino文件中调用的函数没有定义,即:In function XXX :XXX.cpp:XXXXX :"undefined reference to XXX" 。具体什么原因,这里不详细展开。这种情况,在合适位置加上extern "C"即可。具体如下:

#ifndef _XXX_H_
#define _XXX_H_

#ifdef __cplusplus
extern "C" {
#endif

void afunctionA(void);
void afunctionB(void);

#ifdef __cplusplus
}
#endif

error: old-style parameter declarations in prototyped function definition

编译项目的时候,提示“old-style parameter declarations in prototyped function definition”。看函数写的也没啥问题,这个项目之前是能够编译通过的,今天改了几段代码,增加了几个函数,然后编译才出现的错误。百度搜索了一下,居然是头文件中这个函数声明时少打了个分号!!!

unknown type name 'class'; did you mean 'labs'

Arduino编译时遇到unknown type name 'class'; did you mean 'labs'这个错误,一番查资料才明白,C++和C混编导致此问题。C文件中调用了C++的函数,而C文件编译时调用的C编译器不支持C++中的类。一般可以把.c文件重命名为.cpp解决。但需要处理C文件中不符合C++语言的代码。

#error: duplicate 'unsigned'

在将C文件更名为.cpp文件后编译出现此错误,是因为 #define u8 unsigned char 造成的。这是写C51时的宏定义习惯,大家都知道,这么写就不需要每次都写那么长的一串了。百度搜索了一下,据说在C++编译器中这种写法不规范,应当使用 typedef unsigned char u8; 来定义类型。我也不知道他说的是否准确、严谨,但是我尝试使用typedef的方式替代之前的写法,再次尝试编译果然可以了。题外话,Arduino的代码库中已经有定义了u16类型,我自己写的就把u16写成了uu16来规避这个问题。

OpenIPC系统博云摄像头替换minihttp

OpenIPC系统博云摄像头替换minihttp

前言

大佬Sean.Y发布了新编译的minihttp,功能方面添加了暗环境开红外切换黑白画面。我们只需要把摄像头中原来的文件替换一下即可用上新功能。本文就拿此事来水一下。

准备

1,已经刷好OpenIPC固件的摄像头
2,SSH工具软件
3,格式化为fat32的存储卡

正文

1,准备一张格式化为fat32的存储卡,使用之前刷固件的存储卡需注意删除相关固件文件,以免误操作再次刷机,给搞机带来不便。
2,获取minihttp 2020.04.24.zip文件,解压到存储卡,将存储卡插入摄像头。
3,运行以下命令检查能否看到存储卡中的minihttpminihttp.ini文件,能看到进行下一步:

ls /mnt/mmc

4,逐行运行以下命令杀掉minihttp进程,并将原来的文件重命名为[filename].old,以备后期万一想恢复到原来版本。

killall minihttp
mv /usr/bin/minihttp /usr/bin/minihttp.old
mv /etc/minihttp.ini /etc/minihttp.ini.old

5,逐行运行以下命令复制存储卡中相关文件到指定位置,并修改文件权限。

cp /mnt/mmc/minihttp /usr/bin/
chmod 755 /usr/bin/minihttp
cp /mnt/mmc/minihttp.ini /etc/
chmod 644 /etc/minihttp.ini

6,执行以下命令重启。

reboot

注:如果需要修改分辨率、运行的服务开关等配置,请使用vi编辑器编辑/etc/minihttp.ini文件。
注:若想恢复之前备份的版本请使用以下命令(删除当前版本文件并将备份的文件名字改回原始文件名,然后重启)

killall minihttp
rm -f /usr/bin/minihttp /etc/minihttp.ini
mv /usr/bin/minihttp.old /usr/bin/minihttp
mv /etc/minihttp.ini.old /etc/minihttp.ini
reboot