- 博客(61)
- 资源 (7)
- 收藏
- 关注
原创 qt:tcp通信工具(Server端)
1.说明使用qt写一个类似网上常见的网络调试工具。此篇为Server端。Client端在上一篇。2.基本流程新建QTcpServer对象,为其newConnection信号写槽函数。此为新的Client连接信号,在其对应槽函数里使用nextPendingConnection方法获取Client对象,并为Client添加readyRead(读数据),disconnected(断开连接)两个信号写槽函数。开始监听使用Server的listen方法,停止监听使用Server的close..
2021-11-18 21:42:58
4157
原创 qt:tcp通信工具(Client篇)
1.说明使用qt写一个类似网上常见的网络调试工具。此篇为Client端。下一遍再写Server端。2.基本流程Client端相对简单:创建QTcpSocket对象,为对象的readyRead,error,connected(可选)分别写槽函数,以处理读数据,错误,连接成功三个事件。连接使用对象的connectToHost方法,断开使用disconnectFromHost方法。程序不做编码转换处理,因为之前的几遍文字已经做过,不再赘述。3.代码这是mainwindow.cpp文
2021-11-18 20:55:15
4231
原创 qt:写一个串口助手
1.界面布局这是一个常见的串口助手布局。要说有什么不常见,大概就是发送可以选择编码方式:GBK/UTF82.要点没什么难度,就是水磨工夫,一点点写。容易错处的地方都写在代码注释里。3.代码下面是 mainwindow.cpp 文件。#include "mainwindow.h"#include "ui_mainwindow.h"#include <qdebug.h>QSerialPort *serial;MainWindow::MainWindow(Q.
2021-11-13 21:33:37
1112
原创 qt:字符串与hex转换器
1.布局2.代码#include "widget.h"#include "ui_widget.h"#include <QtDebug>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this);}Widget::~Widget(){ delete ui;}void Widget::on_btn2hex_.
2021-11-13 21:06:45
1663
原创 RISC-V架构单片机GD32VF103:IAP功能
自从传闻ARM要出售给美国公式,本人内心的不安全感促使我寻找ARM架构单片机的替代产品。网上问了写网友,有推荐GD32VF103,于是花了些时间了解这个系列的MCU,发现其实也还行,这个MCU跟GD32F103很像,RAM, ROM,外设,封装都差不多。虽说开发环境有些不太熟,不过花些心思,也能凑合使用,至少,比51单片机好用多了。因为官方Firmware没有IAP方面的内容,所有这篇文章专门讲讲此单片机如何进行IAP,毕竟实际工作应用中会经常使用。1.开发环境。我使用的IDE是Nuclei S
2020-09-11 23:14:00
2639
5
原创 C#游戏《坦克大战》--主程序
今天和女朋友分手,写一段技术博客以平静心态。1.统计信息用于主界面显示各种信息 //统计 public struct t_statistics { public int generateenemyNum; //生成敌人数量 public int destroyenemyNum; //已经摧毁的敌人数量 public int GetcurrenemyNum() //
2020-07-18 17:33:42
776
原创 C#游戏《坦克大战》--坦克
1.坦克相关信息这里的各种类型,使用struct而不是enum,避免后面强制转换。 //子弹信息 public struct t_bulletinfo { public int idx;//链表中的顺序号 public int dir;//当前方向 public t_bulletinfo(int i, int d) { this.idx = i; this.dir
2020-07-17 20:03:12
953
1
原创 C#游戏《坦克大战》--地图
疫情期间无聊,用C#写了个游戏《坦克大战》。1.概述程序主要包括地图部分,坦克部分,和碰撞检测部分。本章只写地图部分。2.地图系统地图包括底图和上面的地形元素,比如草地(减缓速度),土墙(容易击破),河流(能通过子弹但阻碍坦克)等。而且允许自定义各种地形。3.重点地图系统的重要功能是绘图,并保存地图元素,以便主程序进行碰撞判断。1.可以加载图片当作底图,也可以随机生成。2.绘制元素,或擦除元素并恢复原来的地图内容。3.需要保存工具,下次打开程序还能继续使用。
2020-07-16 20:59:18
1281
原创 C# MandelBrot分形图绘制
一。代码注:这里为了制造多个渲染效果使用委托类来当作函数指针使用。 private static Random rn = new Random(); private delegate UInt32 _dg_GetUint32Color(int i); private const int mb_iteration = 24; //迭代次数限制 private static _dg_GetUint32Color[] _m.
2020-07-15 21:16:08
750
原创 Cortex-M0模仿位带操作使用
Cortex-M3/M4有位带区(BIT-BAND),可以进行位带操作,而Cortex-M0是没有此功能区域的。必须说明一点,BIT-BAND的本质可以说是空间换时间。是为追求速度而设置的功能。像STM32F0XX这些Cortex-M0系列的MCU,如果追求速度,还是老老实实操作BSRR/BRR这类专门的寄存器。如果不介意速度损失,单纯想做出类似"位带"操作(比如:PAout(0)= 0,...
2019-04-22 21:19:00
4288
6
原创 STM32:SPI驱动ADXL345
ADXL345为3轴数字加速度计。支持SPI或I2C访问。网上例子大多是I2C,这里使用4线SPI。一、遇过的坑调试过程花了几个小时,遇到一些小坑。1.开始的时候,无论如何都无法读取芯片ID。这可是最基础的一步啊,SPI,I2C都试过。无奈之下,对照原理图与手册的管脚说明,发现Vs接到地了。其实这个管脚要接电源电压。老实说,一看名字还以为要接地,毕竟一般IC接地脚名字为Vss。让硬件工...
2019-03-19 23:35:14
8826
24
原创 STM32:FSMC驱动TFTLCD(2)
上一篇文章写了ST7789的基本驱动代码,但是没有实现具体的绘图代码。这里加上。1.代码头文件#ifndef __BSP_LCD_H#define __BSP_LCD_H#include "lcd_drv.h"/* RGB565: 高位至低位排列, RRRR RGGG GGGB BBBB*/#define RGB(R,G,B) (((R >...
2019-03-14 20:17:48
1405
原创 STM32:FSMC驱动TFTLCD(ST7789)
最近项目使用STM32F407驱动tft彩屏,屏幕的内部驱动芯片为ST7789V,这个IC网上资料不多。废话不说,直接上完整驱动代码。1.代码/**************************************************************************************************** 模块名称 : TFT液晶显示...
2019-03-13 22:24:24
11919
7
原创 STM32:I2S驱动WM8978
最近项目中使用STM32F4驱动音频IC:WM8978。WM8978为DAC+ADC芯片,本身并不具备编解码的功能,一方面,可通过I2S接口接收PCM数据,转为模拟信号输出,此为DAC过程,即放音;一方面,可接收模拟信号转为数字信号,通过I2S接口传输给MCU,此为ADC过程,即录音。WM8978还使用I2C接口配置其工作参数,比如音量,EQ,3D环绕等。WM8978本身可直连1W/8欧的小喇...
2019-03-12 22:38:49
28431
7
原创 nodemcu:使用lua开发esp8266
一、LuaLua是一种轻量级的嵌入式脚本语言。由于它消耗资源小,本身是使用标准c语言开发的,所以也比较合适移植进各种单片机中,用来替代ini,xml这类配置文件,甚至json,并且更加灵活,功能更强。官网:http://www.lua.org二、nodemcu官方解释:nodemcu是超简单的物联网开发平台。直白地说,就是esp8266刷入了lua解析器,可通过Lua脚本控制esp...
2019-03-02 22:04:09
2258
原创 LUA移植至STM32全记录
之前使用nodemcu时萌发了一直Lua至STM32的想法。后来项目需要,便花了2天移植。 Lua移植大约需要67K的rom,所以STM32F103C8无法使用,至少得103CB才行。1. 官网下载源文件http://www.lua.org/download.html我下载的 是当前最新版本--5.3.5。2. 解压,源代码位于src文件夹,去掉lua.c 和 luac.c...
2019-02-26 20:39:40
13031
1
原创 ESP32模组比较
1.简述ESP32系列无线IC是乐鑫espressif出品的性价比高的蓝牙WIFI双模IC。官网:https://www.espressif.com最详细的手册文档为:esp32_technical_reference_manual_cn.pdf2.模组比较将官方和一些其他方的模组列表比较,包括资源,价格。也把芯片放进去。ESP32单核芯片用的少没有列出。可以看出,安信...
2019-02-21 22:05:27
9180
1
原创 嵌入式软件架构的设计
嵌入式软件架构的设计大多数嵌入式程序员学习编程,都是从开发板的附带例程开始。之后工作也会继续参考那些例程,很多编程习惯、方式也会受之影响。其实开发板式的编程方式与工作中实际需求的并不完全一致。开发板的通常卖给初学者,注重“即插即用”,兼容各种模块,讲究功能的全面而不讲究性能、效率、成本、功耗等。很多时候为了兼容各种型号IC或者显示屏之类,程序累赘,逻辑混乱。开发板的程序往往是一个人完成...
2019-02-18 22:00:35
15398
1
原创 新年前的唠叨
明天就是除夕了,不知不觉又要大一岁了。2019年了,中国也变得越来越强大,国人也越来越明智自信。记得小时候,媒体的有一种现在看起来很无语的思想横行:凡是中国大陆与别的地方不同的,都是别人对,国人错。当是时也,各种知音体,读者体,意林体,充斥坊间,年幼无知的我和小伙伴们深受其荼毒。“外国”等于“高大上”的思想深入骨髓。港澳台也沾了光变成发达的代名词。什么夏令营的较量,马桶洗到能喝...
2019-02-03 13:42:06
326
2
原创 littevGL:软键盘和表盘
littevGL自带软键盘控件和表盘控件。表盘有两种,Gauge和Line Meter。1.软键盘软键盘有两种形式,一种是常规的字母键盘,一种是数字和标点符号键盘。lv_obj_t * kb=NULL;lv_obj_t *ta=NULL;void demoKeyboard(void){ lv_obj_t * btn1 = lv_btn_create(lv_scr_ac...
2019-01-29 23:20:52
2452
原创 littlevGL:字体与汉字
使用各种嵌入式GUI时,总会遇到“汉字显示”“字体”这些关卡。阅读本文前,最好已经了解Uincode,UTF-8,UTF-16,GBK,GB2312相关知识,不懂最好网络搜索相关知识。1.内置字体littlevGL内置了好几种字体。在lv_conf.h中开关相关字体/*================== * FONT USAGE *==================...
2019-01-26 22:48:51
10056
10
原创 littlevGL:移植到STM32
1.简介LittlevGL 是一个使用C编写的开源免费的GUI,应用在嵌入式设备。源码:https://github.com/littlevgl/lvgl2.移植准备首先需要一个可以正常使用的工程,有LCD驱动,触摸驱动。假设此工程的文件夹名为lvgldemo。本文使用的IDE为KEIL MDK。下载:https://github.com/littlevgl/lvgl 和 ...
2019-01-25 22:29:50
22305
3
原创 总结程序BUG原因
写程序多年,创造了很多BUG,总结一下这些BUG的原因。一、清零这个原因很常见,特别是底层驱动代码,不可避免需要一些全局变量,对于这些全局变量的清零要注意。一般可分为:1.应该清零的地方没有清零。 或者是忘记清零,或者是误以为不需要清零。2.不该清零的地方却清零了。 这会导致变量结果得不到累积。函数越长,或是越想节省临时变量一个变量多次无关使用,逻辑混乱,越是容...
2019-01-23 22:17:22
2245
原创 ESP8266获取网络天气
使用ESP8266模块来获取网络数据(天气,时间等),还是挺简单的。一步一步来。1.初始化串口与相关IO使得MCU可正常使用串口的发送与接收,以及一些IO控制ESP8266的使能端与电源。2检测模块通电后等待几秒钟,串口发送"AT\r\n",检测有回应"OK"则代表模块在线使用。3.连接路由热点发送"AT+CWJAP?\r\n"可以获取当前连接的路由,如果没有连接正确的...
2019-01-09 19:40:28
11977
4
原创 试用迪文串口屏
最近用了个迪文的串口屏,7寸电阻触摸,T5UIC2平台。这个屏很便宜,95元。假如自己买裸屏开发,屏本身也要60元,电阻触摸15元,加上带RGB接口的ARM9至少也要15,还有其他部件如电源稳压,FLASH等等,价格也没差多少甚至更贵。测试过程只要参考《T5UIC2 开发指南》与《HMI指令集》两个PDF文档。1.测试屏幕是否正常拿到屏幕,首先接通电源,使用PC串口助手发送一些命令...
2019-01-07 20:25:21
7687
原创 cJSON移植到STM32
项目中用到JSON接收网络数据,具体是STM32串口接收JSON数据,提取需要的内容。本来KEIL MDK是自带JSON的,但是我不习惯使用KEIL自带的那些第三方的东西,很杂乱的感觉。cJSON的移植比较简单,一下子就可以搞定。1.下载源文件。http://sourceforge.net/projects/cjson/只需要两个文件cJSON.c,cJSON.h;下载的包里面...
2018-12-20 23:51:29
6889
9
原创 STM32+EMWIN电子日历
之前花了几百元买的电子时钟坏了,就用闲置的板子做了一个。功能是显示/调整日期,时间,多个闹钟,倒计时。倒计时使用实体脉冲旋钮控制。基本软件架构是STM32F407+UCOSIII+STEMWIN+RTC。效果如下:这个是定时器,依靠旋钮调节定时时间 1.RTC参照原子历程初始化,并且定义一个新的日期时间结构这是为了一次性把相关消息发送到UI,注意要使...
2018-11-05 18:53:51
20059
21
原创 拼图游戏
1.首先布置好界面。标题栏,菜单栏,状态栏,以及放置图片框的panel。2.定义图片框类 /// <summary> /// 图片框类,包含虚拟XY位置 /// </summary> public class PictureBoxEx : PictureBox { private Point _xy ; ...
2018-08-07 22:08:45
703
原创 说说STM32的堆栈与内存
1.概念这里所说的堆栈,是针对单片机所说的“堆”与“栈”,指的是内存中一片特殊用途的区域。而不是数据结构中的堆栈(虽然其实规则一样)。这里所说的内存,是指RAM,RAM包括SRAM,DRAM等。而不是什么手机内存卡之类。这里所说的flash,指的是用作为ROM的存储器,保存代码与常量数据。而不是动画制作。。。栈的生长方向:指的是入栈方向,从高地址向低地址生长叫做向下生长,或逆向生长...
2018-08-01 21:20:20
18268
7
原创 android蓝牙BLE串口开发
1.首先申请相关权限。在manifest.xml <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-feature ...
2018-07-27 21:02:08
4210
2
原创 浅谈C指针,数组,函数指针
工作中发现很多初入职场的同事不会使用指针,或者惧怕指针。作为C语言老鸟,在这里写一些有利于初学者理解C指针的东西,希望对他们有帮助吧。1.C语言里,指针可以说是地址变量。比如int n;int *p; n是一个变量。它的类型是int;p也是一个变量。可以这么理解:它的类型是(int*); 官方说法是:一个指向int的指针;直白说法是:p这个地址,是按照int的形式保存数据。本质上,...
2018-05-28 08:30:24
428
1
原创 CC2530: ZigBee协议栈实践例程(二)
1.函数流程 从Main()函数开始,基本调用顺序为 ①用户函数的初始化流程 ②系统运行流程 下面对关键函数进行分析。2.SampleApp_Init( ) 这是用户任务的初始化函数。为了方便管理,可以将各种非网络必须的硬件软件初始化代码在此函数里面调用。 /***********...
2018-04-25 19:43:16
5421
3
原创 CC2530: ZigBee协议栈实践例程(一)
1.ZigBee版本 ZigBee是ZigBee联盟建立的技术标准。第一个ZigBee协议栈规范于2004年发布,称为ZigBee 2004或者ZigBee 1.0;第二个ZigBee协议栈规范于2006年发布,称为ZigBee 2006;第三个ZigBee协议栈规范于2007年发布,称为ZigBee 2007;然后呢?现在是2018年了。。。2.Z-Stack版本 ...
2018-04-25 19:38:00
11251
原创 cc2530:AF_DataRequest() 协议栈发送函数入口参数解析
1.原型位于AF.C/********************************************************************* * @fn AF_DataRequest * * @brief Common functionality for invoking APSDE_DataReq() for both *
2018-04-03 15:17:18
2148
原创 C# gif截取
很多时候下载了gif动画,但只想截取其中的的一部分(包括画面的一部分或者部分帧),于是做了个软件完成这部分功能。1.软件布局点击“截取”按钮则跳出保持对话框,“调整”按钮可进行GIF速度与分辨率调整,点选1:1会限制截取框的比例,开始与结束为需要保存的帧范围。2.代码需要引入Gif.Components.dll,网上可以下载这个dllusing System;us
2018-03-07 21:45:09
806
原创 SuperSocket:TCP服务器最简单的例子
在C#中使用Socket时,发现TCP服务器处理起来有很多细节很麻烦,后来发现可以使用SuperSocket进行设计。于是写了一篇入门的例子。1.安装使用nuget在扩展工具栏里,联机库搜索 nuget ,找到 nuget安装包管理器。安装,重启软件。2.在项目中添加SuperSocket库如图右键工程名,选择“管理NuGet程序包”然后在界面中联机搜索Supe
2018-02-10 08:29:11
10112
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人