自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (19)
  • 收藏
  • 关注

原创 ubuntu16开发准备工作

下面只总结个人的开发经验,本人热爱物联网开发,可能这个只适合部分人,不喜勿喷。查询版本sudo lsb_release -a修改密码sudo passwd有些ubuntu不支持root登陆,需要启动root登陆sudo vi /etc/sshd_configPermitRootLogin项中的prohibit-password改为yessudo service s...

2019-03-24 11:06:45 232

原创 GPRS的AT指令解析

玩过GPRS模块的朋友一般都知道常见的模块都是以"\r\n"两个字节为结束符,本人工作以前从事过GRPS项目开发过,当时还是刚毕业不久,对于AT指令集解析老是老大难,当时也没借鉴网上代码,都是自己硬头皮去调试,现在回想起来当时太幼稚了。前些阵子,看了下数据结构KMP算法,发现当初自己的代码效率太低了,对KMP算法有兴趣的朋友可以去了解,在这里,我主要用的函数是strstr,在字符串中找其子字符串,

2015-10-22 22:34:56 8726

原创 vc udp客户端异步通讯类封装

本章讲简单共享UDP异步通讯例程,udp是一种无连接、不保证数据是否传递成功,比起tcp通讯,它优势是传输数据快,因为它忽略了可靠传输机制。所谓异步就是接受数据的时候不会产生阻塞效果,函数要不采用回调机制,要不就是直接返回。工程是用基于VS2010 MFC下的。新建通讯类UDPClientClass.h#include #define UDP_READ WM_USER + 3#

2015-09-12 18:07:58 1864

原创 vc 串口通讯类封装

上章封装了usb hid通讯类,本章讲来封装串口通讯类,采用的是同步机制。本工程是基于vs2010 mfc写的,工程名CommExample.新建CommClass.h头文件,里面代码:#pragma once#include "stdafx.h"#include#include #define DEFAULT_BAUDRATE 115200#define DEFAULT_PAR

2015-08-22 10:17:50 3437

原创 vc USB的HID通讯类封装

从事嵌入式方面,会点上位机会事半功倍,总体而言,一个串口,网口,usb通讯用到的比较多,这方面的资料网上也很多,但是总体而言零零碎碎,不算太齐全。        本问讲解的是usb hid类的封装,该例程的上位机可以和圈圈的开发板配套使用。在这里,我们用到的库是hidapi.lib,这个网上有下载,到时本人也提供一份。圈圈上位机的usb hid通讯接口看起来有些零碎杂乱,对于新手而言,看起来很

2015-08-20 15:03:37 9728 3

原创 串口网口数据帧解析(支持连包、断传、错误数据过滤)

嵌入式系统中,关于数据接受部分确实思考了很多,下面总结下个人经验。        关于串口传输,个人觉得采用modbus协议来接受数据是比较合理的,采用3.5char字符的超时机制,接受的时候如果判断超时,就当作一帧数据进行处理,所以这种情况,帧格式没有那么讲解,发送和超时机制弄好就行。        第二种网口用的比较多,串口也用的上,什么情况下用的上呢,当发送的数据没有固定的格式和长度

2015-05-20 18:54:12 8933

原创 modbus协议crc校验

数据校验是数据传输必不可少的一部分,主要目的就是防止数据传输过程中出现差错。本文主要根据原理实现它的核心代码。预置1个16位的寄存器为十六进制FFFF(全1),此寄存器为CRC寄存器把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的低八位相异或,吧结果存放于CRC寄存器。把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检测右移后的移出位。

2015-05-07 18:48:48 5316

原创 横向纵向的5*7字库

对于较小的显示屏而言,对字库的显示有所苛刻,这里我们用到的是5*7的字库,不过终于找到了一个,是纵向的,与我所用的接口有所不符合,所以我转换了下,变成了横向的了。这里贴出代码,及其新的横向字库。代码在QT的控制台上缩写,之前都是VC控制台写的。#include /****************************************************************

2015-04-29 11:02:08 1472

原创 C语言实现比特位数组在目标空间左右居中对齐三种方式

在LED行业中,一般一个灯亮或者不亮用一个bit位来表示(这里就不谈七彩或者灰度控制卡),现在加入我们屏幕大小是128点,相当于宽度16个字节,如果我们让两个汉字居中显示(两个汉字占宽度4个字节),轻轻松松就可以算出如果要实现居中,只要偏移(16 - 4) / 2 = 6个字节宽度,当然这里我们都是假象的理想情况,假如需要显示的字符宽度不是固定并且显示内容也经常变化,这种情况下,无法手动计算。本文

2015-04-28 16:20:40 2309

原创 提取字节中间的n个bit位

试想,假如让你从一个字节中c中起始位置为s,提取长度为l的bit,用最简单的方法提取,可能你会想到宏定义或者函数。就不饶了,思来想去,最后采用创建一个二维数组的查表方法。表如下:const unsigned char Get_Middle_Byte[8][9] = { 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0x00

2015-04-22 22:48:30 4900

原创 hex文件转换为bin文件C语言实现

上一章讲解的是bin文件转化为hex文件,本文主要是贴出hex文件转bin文件的代码:新建hex2bin.h#ifndef HEX2BIN_H#define HEX2BIN_Htypedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned long uint32_t;#def...

2015-04-19 20:55:46 15315 5

原创 bin文件转换为hex文件C语言实现

对于嵌入式而言,hex文件可能大家再熟悉不过了,对,我们大学时学习的51单片机编写的代码在keil上编译后就生成了hex文件。那bin文件又是什么意思呢,它又和hex文件的区别在哪?这也不是本文的重点,下面简单的描述下:最通俗的来讲,hex是带地址的,用下载器下载时,不需要设置偏移地址,它是文件流格式的,都是标准的ASCII码。而bin文件是不带地址的,全部是二进制数据流,打住一下,其实就是我

2015-04-19 19:25:22 16125 4

原创 宏定义神级用法-调试信息便捷开关

        大家编写程序的时候,一般都会有调试信息,这些调试信息一般长期伴随着,后来要发布的时候发那些不需要的调试信息给删除掉,如果是一个有丰富的经验人,是采用一个宏定义的开关来决定是否启动这些打印信息。代码如下: #include <stdio.h>/***********************************************************...

2015-04-03 10:05:06 2419 4

原创 C语言实现双字节在数组中按比特位移动

先说一下应用场合,在LED点阵显示屏中,为了节省flash空间,常用一个bit位来标记哪个灯是否点亮。为了做出比较炫的效果,比如16 * 16像素gif动画边边移动边跳跃。就应用到该思想。        双字节是16bit位,数组的bit位是数组长度乘以8(类型指的是uint8_t),比如uint8_t a[5]长度则是5 * 8 = 40。该函数的思想就是这双字节的16bit位在在数组a[5

2015-03-11 15:57:21 1620

原创 数组比特位循环左移和右移

下面直接给出代码,详细请看代码#include typedef unsigned char uint8_t;typedef unsigned short uint16_t;uint8_t RotateLeft(uint8_t *p, uint8_t len){ uint8_t valBit; if (!len) return 0; len--; valBit =

2015-01-24 10:25:26 3080

原创 CDSN上一页下一页功能模仿

从后台读取记录,如果数据过多,就需要划分多页去显示,本章就是模仿CDSN来实现该功能的,采用asp动态语言实现的,求喷我,css这部分我完全是copy过来的,只改了一点,我主要完成的是asp后面的代码。本章也是做一个记录,方便后面项目中使用。新建pagelist.css文件:/* CSS Document */.pagelist{clear:both;padding:15px 0;col

2015-01-11 22:28:22 1967

原创 QT解析JSON

有时应用程序需要加载数据库中有用数据,目前交主流的就是动态语言创建JSON数据格式,然后应用程序可以解析。1、在pro文件中添加script,如右: QT += script2、需要添加头文件#include3、代码如下,代码str1为json数组,str2为json单个对象的字符串。#include "json.h"#include #include int main(in

2015-01-07 13:40:03 714

原创 LED循环播放节目

在LED行业,一般都会有多个节目显示,假如现在有10节目,里面的节目数据可能会为空或者不为空,每点击一下切换节目按钮,就切换下一条节目。当然,可以选择播放指定的节目,也可以循环播放所有的节目。当我们选择了循环播放节目的时候,加入1、3、5、7、9都存在节目,其他的节目为空,这里我们就希望,先播放第1条节目,然后播放第三条节目,之后按照这个顺序播放所有后续的节目,播放完毕后,又切换到第一条节目,这样

2014-12-20 14:32:24 3033

原创 全局变量在头文件中“定义”

看着标题,定义上面加了一个引号,这个得注意了。怎么j

2014-09-18 14:07:28 3055

原创 C语言二维数组动态创建与释放

二维数组动态创建与释放有多种方式,下面就给

2014-09-17 16:46:21 1493 1

原创 位操作赋值与清零

#include #define SetBit(c, n) c |= (1 << n)#define ClrBit(c, n) c &= ~(1 << n)void main(){ unsigned char t = 0x00; printf("t = %02x\n", t); SetBit(t, 2); printf("t = %02x\n", t); ClrBit(t,

2014-09-16 17:44:05 1051

原创 自动识别当前语言系统

#include #include using namespace std;int main(){ unsigned short cid = GetSystemDefaultLCID(); switch (cid){ case 0x0804: cout << "简体中文" << endl; break; case 0x0404: cout << "繁体系统" << en

2014-08-29 13:57:03 1547

原创 ATMEGA8A 点亮LED灯

假如要点亮端口B第

2014-08-20 18:03:28 1174

原创 递归搜索所有文件目录

依稀记得当时xie

2014-07-26 11:18:20 731

原创 理财的四个数字

4321法则:家庭资产配置比例

2014-05-10 16:27:04 910

原创 数据结构之顺序结构线性表之操作

#includetypedef int ElemType;typedef int Status;#define MAXSIZE 5#define OK 1#define ERROR 0typedef struct{ ElemType data[MAXSIZE]; int length;}SqList;//顺序结构的线性表初始化void InitSqList(SqList *

2013-11-22 14:05:22 1087

原创 数据结构之二叉树创建及其遍历

还记得N年想在全盘电脑寻找一个文件,当时看那代码晦涩难懂,后来不了了之,最近复习了下二叉树,现在感觉全盘寻找文件不是想象的那么复杂。#include#include#includetypedef char TElemType;typedef struct SBiTNode{ TElemType data; struct SBiTNode *lchild,*rchild;

2013-11-13 11:06:29 3536 1

原创 数据结构之堆栈操作

#includetypedef int ElemType;typedef int STATUS;#define STACKSIZE 5#define OK 1#define ERROR 0typedef struct{ int top; int data[STACKSIZE];}Stack;//堆栈初始化void StackInit(Stack *S){ S->top=

2013-11-11 16:00:40 1372 1

原创 数据结构之循环队列操作

#includetypedef int ElemType;typedef int STATUS;#define MAXSIZE 5#define OK 1#define ERROR 0typedef struct{ int data[MAXSIZE]; int front; int rear;}Sequeue;//循环队列初始化void InitSequeue(Sequeu

2013-11-11 15:58:52 952

原创 htonl、htons、ntohl、ntohs函数实现

有一下几点注意事项:       1、网络数据一般都是以大端模式进行传输的;       2、#includetypedef unsigned short uint16;typedef unsigned long uint32;//短整形高低字节交换#define Swap16(A) ((((uint16)(A) & 0xff00) >> 8) | (((uint16)(A

2013-11-06 17:44:08 4499

原创 VC 控制windows自带计算器做加法运算

本程序控制windows自带计算器模拟从1加到100,直接源码。#include#include using namespace std;//分别为数字键、+、=与计算器左上角的相对位置POINT point[12]={ {310,240},//0 {310,210},//1 {350,210},//2 {390,210},//3 {310,180},//4 {350

2013-11-04 09:31:46 1075

原创 VC 获取鼠标当前位置坐标和RGB

下面直接给出代码,至于相应的API函数请参考百度文库。#include#include using namespace std;int main(){ POINT point; unsigned long rgb; HDC scr; while(1) { if(GetAsyncKeyState(VK_F8) & 0x8000) //按下F8 { scr

2013-11-02 15:02:02 6848

原创 统计单字节、多字节bit位长度

#include//统计一个字节bit为1的个数unsigned char CountBit(unsigned char value){ unsigned char i=0; unsigned char count=0; while(i<8) { if(value & 0x01) { count++; } value>>=1; i++; } retur

2013-10-29 10:06:53 1144

原创 宏控制打印信息输出

#include#define DEBUG 0//如果DEBUG=0 关闭所有打印信息//如果DEBUG=1 打开所有打印信息#if DEBUG #define debug(arg) printf(arg) #define debug_1(arg,one) printf(arg,one) #define debug_2(arg,one,two) printf(arg,on

2013-10-28 11:58:58 1178

原创 VC winsock客户端多线程收发数据

这里是直接在dos窗口输入数据,发送出去,因此数据是可见类型的,当然也可以是不可见的,以字节流的形式发送出去没有问题,在此贴出代码#include #include using namespace std;#pragma comment(lib,"ws2_32.lib") //以静态方式加载库#define IP "121.199.9.233" //IP地址#define PO

2013-08-14 19:04:39 3531

原创 VC 多线程异步方式操作串口

#include#include#include using namespace std;DWORD WINAPI CommSend(LPVOID lpParameter); DWORD WINAPI CommReceive(LPVOID lpParameter); OVERLAPPED overRead,overWrite; HANDLE m_hCom;int m

2013-08-14 16:43:43 2189

原创 VC 多线程同步方式操作串口

#include#includeusing namespace std;DWORD WINAPI CommReceive(LPVOID lpParameter);DWORD WINAPI CommSend(LPVOID lpParameter);HANDLE hwbEvent;HANDLE m_hCom;int main(){ DCB dcb; //打开串口 m_hCom=C

2013-08-13 16:24:02 2425

原创 C 语言大小端模式判断

所谓大端模式是数据的高字节部分存放在低地址上,数据的低字节部分存放在高地址部分;小端模式刚好相反,数据的低字节部分存放在低地址上,数据的高字节部分存放在高地址部分。下面直接贴出查询本机系统是大小端模式的代码,该代码基于的一个准则是:数组的下标越大它对应的元素的地址就越大,就如c[1]的地址大于c[0]的地址;同时,在共用体中,它里面的各变量的地址都是相同的,也相当于c[0]和myLong的地址相当

2013-06-06 22:40:38 1297

原创 C语言 获取汉字unicode和utf-8编码

就VC而言,汉字储存一般都是以国标码形式存放在电脑上的,要想查询一个汉字的unicode编码,可以在一个字符串前面加一个‘L,也相当于让该汉字以unicode编码形式存放。      unicode编码与utf-8编码之间的关系是什么,其实两者之间,个人感觉,utf-8编码是unicode编码的具体实现。两者之间的对应关系如下所示,可以看到。当一个字符的unicode编码在0x00

2013-06-06 13:36:33 9129 2

原创 C语言 获取汉字机内码、区位码、国际码

至于什么是机内码、区位码、国际码,百度谷歌一大堆,下面直接给代码#includevoid main(void){ unsigned char temp[2]; scanf("%s",temp); printf("机内码高字节是0x%.2x\n",temp[0]); printf("机内码低字节是0x%.2x\n",temp[1]); printf("区位码区码是%2

2013-06-05 16:15:19 9237

STM8S001J3最小工程.rar

STM8S001J3用的IAR IDE开发的,固件库采用的2.2版本的,最小工程,含有一个串口打印的、GPIO驱动的.c文件,程序下载后,可以直接跑起来,而且还有一个防锁的IO口

2019-06-06

STM32F1 多功能按键识别

支持识别按键单击、双击、长按、长按不松开自动加1,非常好用,目前已经移植到STC51时钟屏上面了,而且防抖、双击、长按识别的时间间隔都可以通过宏灵活设置。

2019-04-28

SYN480R 433MHz 315MHz参考电路

文档有三个pdf文件,一份是datasheet,一个433MHz接受电路,一个315MHz接受电路,本人前两周已打扮测试,验证成功。如果有不懂的,可以私信我啊

2018-12-18

STM32F030F4最小工程

移植好的STM32F030最小工程,可以直接用printf函数通过串口1打印输出,拿来就用,非常方便。

2018-11-16

LIS3DH中英文文档和测试代码

里面含有加速度传感器LIS3DH的中英文datasheet,讲解的非常详细,而且还有官方提供的测试代码,及其本人用STM32写的测试代码(可以检测出急加速和急减速)。

2018-10-23

GPS调试助手

GPS调试助手,通过串口接受GPS数据,能解析多种格式数据,然后可以显示卫星数量,位置定位等众多视图效果,方便您调试。

2018-10-10

STM32使用YModem协议进行IAP串口升级

通过使用STM32F103C8T6串口1,采用YModem协议对固件进行IAP升级,手工编写,测试有效。IAP程序大小12K,因此APP程序其实地址为0x8003000,同时中断偏移量也需要修改。

2018-08-28

DES加解密算法

因我们产品蓝牙通讯需要用到DES加解密算法,经过整理找到了一份c语言算法,使用非常方便,同时提供PC端和WEB测试工具,测试结果都是一致。使用的时候注意加密模式和填充方式,这些百度查下,很简单。

2018-07-31

ESP8266 WIFI和串口透传代码

基于安信可的WIFI模块,使用的是SDK编程,创建WIFI热点,一旦手机连上该热点,就可以通过TCP和模块进行通讯,把手机的数据传递给串口;模块串口收到的数据也直接透传给手机

2018-07-30

MQTT中英文版本协议文档

压缩文件含有一个中文和英文的协议文档,是官网的MQTT协议文档,对协议描述的非常详细具体,是学习MQTT协议非常重要的文档资料

2018-07-30

GIF提取工具

此工具可以提取GIF动画每一帧图片,同时也可以合成GIF动画,这个合成的时间间隔也是可以灵活设置的。操作比较简单,一般一看就会啦

2018-07-30

串口通讯类

串口通讯类同步通讯,完美封装,消息机制绑定例程

2015-08-22

USB HID通讯类封装

使用HIDAPI提供的接口函数封装的类,例程简单,功能强大。

2015-08-20

ucos移植到arm9(s3c2440)

ucos移植到arm9(s3c2440),结构化清晰,可以选择相应的硬件初始化。中断都可以正常运行,有什么不懂找我本人,负责到底。

2012-12-09

ucos+ucgui移植到arm9(s3c2240)

将ucos2.52 ucgui3.90成功移植到arm9上,采用的是s3c2440开发板;LCD采用的是4.3寸屏,结构条理很整齐,可以下载作为参考。在主程序中,用到了三个任务。

2012-12-09

16*16点阵字库

16*16点阵字库,内容完全,包括汉字和英文等字库点阵信息。

2012-06-04

48*48点阵字库

48*48点阵很难找,好不容易找到的,今天和各位进行分享

2012-06-04

vb6.0精简版

VB6.0精简版,安装十分方便,不占多大体积。

2012-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除