C#将int型数字转换成多位字符串,不足前面补0
int aa = 1;
string num = aa.ToString().PadLeft(3,’0’);
STM32嵌入式系统FreeRTOS使用cJSON解析和构建JSON
简介
JSON即JavaScript Object Notation,是一种轻量级的数据交换格式。
JSON建构于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
关于JSON库的性能评测与标准符合程度,可以参照《28 个 C/C++ 开源 JSON 程序库性能及标准符合程度评测》,另一个英文版更详细结果在nativejson-benchmark。
在阅读了一系列评测之后,结合需求(ROM尽量小,RAM尽量小,带处理的数据比较简单),准备研究一下cJSON和json-c。
从JSON官网获得json-c和cJSON的源码地址如下:cJSON和json-c。
环境
控制器STM32F405+MDK5.34+cJSON1.7.7
安装cJSON
C# ListBox左移、右移、上移、下移
C#点击按钮界面卡死解决
c# richtextbox更新大量数据不卡死的办法
前言
c# 的richtextbox对读入几十万行大数据或者频繁更新经常卡死界面几分钟。
终于找到一个通过子线程更新的方法,实际测试对于40万行可以在10秒内完成更新,并且运行中界面不卡死可以操作。
一、richtextbox更新方法
richtextbox更新有两种更新方法:richtextbox.appendtext() 和 richtextbox.text = richtextbox.text + str。
在子线程中可使用 richtextbox.text = richtextbox.text + str。
为了提高效率,使用了StringBuilder sb进行缓冲,每maxDisplayline行更新一次richtextbox,并根据行数增加动态调整了maxDisplayline的大小。
C#子窗口调用父窗口控件的委托实现
有时子窗体的操作需要实时调用父窗体中的控件操作,比如在父窗体的文本框中显示子窗体中的输出:
主窗体:
MainForm.cs:
1 | public partial class MainForm : Form |
[ESP32]制作spiffs文件系统镜像并烧写
有时我们需要在ESP32启动的时候使用一些初始化的文件,我们可以通过spiffsgen.py制作spiffs文件系统的镜像并烧写到系统里面去。
1制作spiffs文件系统镜像
我们首先要创建一个文件夹,然后把我们我们需要初始化的文件放到这个文件夹里面。
我们制作的工具是spiffsgen.py,在ESP-IDF\components\spiffs。1
2python spiffsgen.py <image_size> <base_dir> <output_file>
python D:\Program\ESP-IDF\components\spiffs\spiffsgen.py 0x60000 spiffs_dir spiffs.bin
CC Debugger调试下载接口
我们在调试TI的cc系列的芯片时经常会用到CC-DEBUGGER,CC-DEBUGGER的接口中带有SPI调试接口,如果我们是在批量生产时这个接口有时会使用不到,因此需要将下载接口进行简化,下面是主要的接线说明,
调试下载接口:
MAX6675使用笔记
Arduino IDE开发板库文件地址修改
ArduinoIDE会默认把开发板库文件存放在1
C:\Users\你自己的管理员文件夹\AppData\Local\Arduino15\packages
想要换只需在Arduino的安装目录下新建一个文件夹,重命名为portable 重启IDE,看到如下位置变更就成功了。