C/C++程序
文章平均质量分 68
light546
喜欢运动……喜欢篮球……专注嵌入式底层软硬件……
展开
-
自动生成文件目录列表
总是资料太多不好管理,也不好查阅,就想着整一个生成文件目录的工具。摸索一下,终于搞出来了。其实很简单。。。就是几个DOS命令。新建一个txt文件。============================= @echo off echo 正在检测目录及文件,请稍等...... dirtree /f > list.txt原创 2015-05-07 11:11:13 · 3662 阅读 · 1 评论 -
51单片机PID的算法实现程序C语言
51单片机PID的算法实现程序/*用整型变量来实现PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了,关于系数和采样电压全部是放大10倍处理的.所以精度不是很高. 但是也不是那么低,大部分的场合都够了. 实在觉得精度不够, 可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.原创 2012-01-31 10:08:08 · 25458 阅读 · 7 评论 -
PID算法实现(转)
工业控制中常用算法 一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求原创 2012-01-12 17:58:05 · 4241 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆转载 2011-12-08 19:02:43 · 530 阅读 · 0 评论 -
linux系统下修改文件夹目录权限
文件夹权限问题Linux、Fedora、Ubuntu修改文件、文件夹权限的方法差不多。很多人开始接触Linux时都很头痛Linux的文件权限问题。这里告诉大家如何修改Linux文件-文件夹权限。以主文件夹下的一个名为cc的文件夹为例。 下面一步一步介绍如何修改权限: 1.打开转载 2011-10-15 14:39:58 · 272989 阅读 · 2 评论 -
GCC简单使用方法
基本的几个命令:1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。2. 选项 -o用法:#gcc test.c -o test作用:将test.c预处理、汇转载 2011-10-12 20:21:01 · 1263 阅读 · 0 评论 -
BCB中使用API函数写简单串口程序(定时器接收)
一:常用函数:⑴CreateFile()和CloseHandle()函数。用于打开和关闭串口,函数原型如下:HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess, DWORD dwShareMode,LP原创 2011-08-20 16:11:47 · 4329 阅读 · 0 评论 -
VC利用ADO简单读写数据库
ADO数据库访问技术使用的基本步骤及方法: 首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#i原创 2011-07-20 13:17:30 · 5856 阅读 · 2 评论 -
基于VC ADO组件连接数据库编程
1.1 连接对象(Connection)连接对象是用来与数据库建立连接、执行查询以及进行事务处理。在连接之前必须指定使用哪一个OLE DB供应者。1.2 命令对象命令对象(Command)可以执行数据库操作命令(例如查询、修改、插入和删除等)。用命令对象执行一个查询子串,可以返回原创 2011-07-17 15:48:03 · 2272 阅读 · 0 评论 -
以太网传输数据格式
EThernetII格式:前同步码:这个字段有7个字节(56位)交替出现的0和1,它的作用就是提醒接收系统有帧的到来,以及使到来的帧与计时器进行同步。前同步码其实是在物理层添加上去的,并不是(正式的)帧的一部分。前同步码的目标是允许物理层在接收到实际的帧起始符之前检测载波,并且与接收到的帧时序达到稳定同步。帧起始定界符:这原创 2012-02-06 10:45:20 · 5449 阅读 · 1 评论 -
Button input interrupt under linux kernel 2.6.35.7 send message button event
//****************************************************************// Button-ts.c// 2011-11-25// Light //****************************************************************#include #include #includ原创 2011-11-29 16:41:15 · 1102 阅读 · 0 评论 -
数组和指针
先举个例子:从char a[5]取a[2]和char *b 取b[2]来讲两者取出的都收hello中的第三个字符l但是a[2]是直接用a中保存的地址+2得到的地址,取内容得到的b[2]是对b的地址取内容,以内容作为地址,然后+2,然后再取内容得到的两者获取的途径不一样。1、数组与指针的共同点:数组是特殊的指针:他是指针常量。即:当你char a[5]="hello“这样定义后,原创 2012-02-21 15:38:52 · 690 阅读 · 0 评论 -
VC非模态对话框
1.创建非模态对话框。首先添加对话框,然后添加相关的类。利用建成的类(要新建的对话框的类)创建对话框。CRelay *CRdlg = new CRelay;CRdlg->Create(IDD_DLG_RELAY);CRdlg->ShowWindow(SW_NORMAL);利用Create和ShowWindow可以将新建的对话框显示出来。在退出函数中应该销毁。调用 D原创 2013-09-14 01:24:36 · 1335 阅读 · 0 评论 -
C语言堆栈入门
C语言堆栈入门在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对转载 2012-07-03 10:33:02 · 1084 阅读 · 0 评论 -
嵌入式C语言之内存操作
C语言嵌入式系统编程修炼之内存操作数据指针 在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中,多借助C语言指针所具有的对绝对地址单元内容的读写能力。以指针直接操作内存多发生在如下几种情况:(1) 某I/O芯片被定位在CPU的存储空间而非I/O空间,而且寄存器对应于某特转载 2012-06-19 14:51:03 · 1319 阅读 · 0 评论 -
枚举用法总结
1、枚举enum的用途浅例 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。 更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即: const int input = 1;转载 2012-05-24 09:57:04 · 19529 阅读 · 1 评论 -
结构体和联合体
结构体:struct ,是由一系列相同类型或不同类型的数据构成数据的集合,也叫结构。其最主要的作用就是封装。联合体:union,几个不同的变量存放在同一块内存区域中。也就是使用覆盖技术,几个变量互相覆盖。“联合”与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间,一个联合变原创 2012-02-21 15:24:16 · 4129 阅读 · 0 评论 -
内存地址对齐及大小端 (转)
内存地址对齐及大小端 我们常常看到“alignment", "endian"之类的字眼, 但很少有C语言教材提到这些概念. 实际上它们是与处理器与内存接口, 编译器类型密切相关的.考虑这样一个例子: 两个异构的CPU进行通信, 定义了这样一个结构来传递消息:struct Message{ short opcode; char原创 2012-06-01 10:51:09 · 1687 阅读 · 0 评论 -
指针基础知识
空指针假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000;那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10.现在定义:int *p; p=&a;当编译器遇到语句int *p时,它也会在内存中给指针变量p分配一原创 2012-04-17 15:17:39 · 1113 阅读 · 0 评论 -
LPC1768之系统滴答定时器
滴答定时器可作为实时系统的滴答时钟。MDK新建工程完成后,添加core_me.h到工程,static __INLINE uint32_t SysTick_Config(uint32_t ticks),在core_m3.h文件中。初始化时候调用即可。然后直接添加定时器中断处理函数即可。/*******************************************************原创 2012-04-16 20:19:35 · 4888 阅读 · 1 评论 -
对论坛中有关数据类型转换的整理
<br /> 对论坛中有关数据类型转换的整理 收藏 <br />--------------------------------------------------------------------------------<br />说明:本文纯粹是总结一下有关类型转换的贴子,<br />本人并未对所有方法都做测试,仅仅是为了给大家一个参考。<br />读者层次:初学<br />int i = 100;<br />long l = 2001;<br />float f=300.2;<br />doubl转载 2011-05-23 12:56:00 · 2052 阅读 · 0 评论 -
摄像头驱动小软件
<br />利用MFC建立一个对话框。拉一个组框作为图像显示窗口。<br />在对话框头文件中添加包含库代码<br />#include "vfw.h"<br />#pragma comment(lib,"vfw32.lib")<br />#include <afxmt.h><br />在公共成员变量中添加窗口句柄变量,和事件变量<br /> HWND m_hVideoWnd; //窗口句柄<br /> CEvent m_Event; //事件<br />再添加自定义线程函数的声明,注意是静态STAT原创 2010-07-24 22:20:00 · 643 阅读 · 0 评论 -
VC小知识(转)
<br />(1) 如何通过代码获得应用程序主窗口的 指针?<br />主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。<br />AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)<br />//使程序最大化.<br /><br />(2) 确定应用程序的路径<br />Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。<br />Example:<br />TCHAR<br原创 2010-07-24 21:03:00 · 2073 阅读 · 0 评论 -
WinApi实现串口通信
<br />GetDlgItem(IDC_CLOSEPORT)->EnableWindow(false); //使关闭按钮失效<br />建立对话框,并给发送接收关联变量。<br />头文件中加入如下代码:<br /> HANDLE hCom; //定义串口句柄<br /> OVERLAPPED Wol; //写操作OVERLAPPED结构变量<br /> OVERLAPPED Rol; //写操作OVERLAPPED结构变量<br /> BYTE myWByte[300]; //存放欲写的原创 2010-07-24 20:58:00 · 1808 阅读 · 0 评论 -
使用WinAPI写的小串口(不完善无法接收)
利用MFC建立一个单文档程序。界面设计,设置一个对话框,进行串口设置。在菜单项中添加一个“通信”菜单,添加三个命令子菜单,分别是“串口设置”、“打开串口”、“关闭串口”。变量声明:先在视图类中添加#include "SetupDlg.h";#include "MainFrm.h"。然后再视图类的public区声明如下变量: HANDLE hCom; //串口句柄 OVERLAPPED Wol; //写操作OVERLAPPED结构变量 BYTE myWByte[300]; //存放欲写的数据 lon原创 2010-07-17 20:31:00 · 1540 阅读 · 0 评论 -
双线程操作
建立一个对话框,添加一个进度条控件和两个按钮控件。将两个按钮名字分别改为“启动线程1”,“启动线程2”,ID分别改为IDC_THREAD1和IDC_THREAD2。然后为对话框插入一个MENU资源并编辑,ID为IDR_MENU1.并在对话框属性中的菜单(M)项中将IDR_MENU1选中,即将菜单添加到对黄框中。再插入一个位图资源并编辑,ID号为IDI_HEART,用于线程1,平行移动。在头文件中定义四个protected变量 BOOL m_bSuspend1; //判断线程1是否启动 BOOL m_bSu原创 2010-07-20 18:05:00 · 1954 阅读 · 0 评论 -
进度条和滑块的应用
建立一个对话框的文档名字jindu。1。进度条进度条默认进度范围是0到100,可以在OnInitDIalog()函数中条用SetRange()指定进度的范围,调用SetPos()函数指定初始化进度。CProgressCtrl* pProc=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); //定义进度条指针pProc->SetRange(0,100); //设置进度条范围pProc->SetPos(75); //设置进度条的进度值在对话框头文件中原创 2010-07-20 17:45:00 · 1020 阅读 · 0 评论 -
VC串口小程序(用SerialPort类)
先建立一个基于对话框的小程序,做好界面有串口号,打开串口按钮,关闭串口按钮,发送按钮,接收数据区和发送数据区。然后给串口号即组合框添加变量 CComboBox m_ctrlComPort;给接收数据编辑框添加关联变量 CString m_strRxMsg;给发送数据编辑框添加关联变量 CString m_strTxMsg;然后将SerialPort类的头文件和C++文件复制到工程中区,然后将它们添加到工程中去,将SerialPort的头文件包含到对话框中文件中去。在对话框头文件中定义一个布尔变量,用来表示标原创 2010-07-16 21:57:00 · 13051 阅读 · 4 评论 -
CSerialPort类的源码(程序文件和头文件)
//头文件.h#ifndef __SERIALPORT_H__#define __SERIALPORT_H__#define WM_COMM_BREAK_DETECTED WM_USER+1 // A break was detected on input.#define WM_COMM_CTS_DETECTED WM_USER+2 // The CTS (clear-to-send) signal changed state. #define WM_COMM_DSR_DETECTED WM_USER原创 2010-07-16 20:23:00 · 6827 阅读 · 2 评论 -
讲讲volatile的作用(转)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br /> 1). 并行设备的硬件寄存器(如:状态寄存器) <br /> 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) <br /> 3). 多线程应用中被几个任务共享的变量 <br /原创 2010-07-31 17:05:00 · 429 阅读 · 0 评论 -
C指针(转)
第一章指针的概念<br />指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。<br /> <br />要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的<br />类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让<br />我们分别说明。<br />先声明几个指针放着做例子:<br />例一:<br />(1)int *ptr; <br />(2)char *ptr; <br />(3)int **ptr; <br />(4)int (*ptr)[3]原创 2010-08-04 13:37:00 · 576 阅读 · 0 评论 -
C语言 条件编译详解(转)
C语言 条件编译详解<br />预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。<br />在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空转载 2010-08-04 14:36:00 · 586 阅读 · 0 评论 -
TCP/IP通信(服务器)
<br />首先建立对话框,上面含有编辑框,启动按钮,取消,发送按钮。<br />关联变量接收编辑框CString m_rxdata;发送编辑框CString m_txdata;<br />在StdAfx.h文件中包含头文件#include<afxsock.h> //include MFC sock extensions<br />定义宏#define WM_CLIENT_ACCEPT WM_USER+101<br />#define WM_CLIENT_READCLOSE WM_USER+102<br原创 2010-11-16 19:09:00 · 648 阅读 · 0 评论 -
VC++CString_成员函数用法
<br />VC++CString 成员函数用法大全:<br />CString的构造函数<br />CString( );<br />例:CString csStr;<br />CString( const CString& stringSrc );<br />例:CString csStr("ABCDEF中文123456");<br /> CString csStr2(csStr);<br />CString( TCHAR ch, int nRepeat = 1 );<br />例:CStrin原创 2010-11-16 19:15:00 · 1746 阅读 · 0 评论 -
滑块控制三种颜色并显示
<br />先创建一个对话框,三个滑块,三个编辑框,并且添加关联变量。<br />分别为:<br /> DDX_Control(pDX, IDC_GSCROLLBAR, m_Green_ScrollBar);<br /> DDX_Control(pDX, IDC_RSCROLLBAR, m_Red_Scrollbar);<br /> DDX_Control(pDX, IDC_BSCROLLBAR, m_Blue_Scrollbar);<br /> DDX_Control(pDX, IDC_EDITB, m_原创 2010-09-08 23:51:00 · 2924 阅读 · 0 评论 -
itoa/atoi(转)
<br />itoa<br />功 能:把一整数转换为字符串<br />用 法:char *itoa(int value, char *string, int radix);<br />详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,之后在保存在string中.<br />备注:该函数的头文件是"stdlib.h" <br />程原创 2010-09-08 20:47:00 · 8999 阅读 · 0 评论 -
利用MSComm控件写串口小软件
<br />先利用MFC建立对话框,然后添加MSComm控件。将控件拖入对话框作为宿主。<br />Add To Project->Components and Controls …->Gallery->Registered ActiveX Controls->Microsoft Communications Control, version 6.0->Insert.---OK.<br />然后给接收编辑框,发送编辑框,控件MSComm1添加关联变量。<br />分别是CString m_strRxD原创 2010-08-10 00:42:00 · 1179 阅读 · 0 评论 -
Windows内部运行机制
<br />一:Windows是事件驱动方式的程序设计、<br />二:消息队列<br />三:Windows程序入口 WinMain函数<br />四:创建一个窗口要经过下面四个步骤<br />1。设计一个窗口类。WNDCLASS wndclass<br />2。注册窗口类。RegisterClass(&wndclass)<br />3。创建窗口。CreateWindow()<br />4。显示及更新窗口。ShowWindow(),UpdateWindow()<br />销毁窗口用DestroyWind原创 2010-08-05 10:26:00 · 631 阅读 · 0 评论 -
MFC 消息类型
MFC 消息类型<br />1、命令消息(WM_COMMAND) <br />所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 <br /><br />2、Window消息(WM_xxx) <br />所有派生自 CWnd 的类都有资格接受 WM_xxx。 <br /><br />3、控件消息(WM_NOTIFY) <br />控件向其父窗口通知消息。 <br /><br />消息处理 <br />1、WM_xxx 消息处理 <br />窗口类(自身)处理→基类处理→CWnd∷Def原创 2010-08-04 22:37:00 · 787 阅读 · 0 评论 -
Wparam与Lparam的区别(转)
<br />Wparam与Lparam的区别<br />在Win32 SDK中消息本身是作为一个结构体记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。这个记录类型叫做MSG,它在window中是这样声明的: <br />typedef struct tagMSG { // msg <br />HWND hwnd; //窗口句柄 <br />UINT message; //消息常量标识符 <br />WPARAM wParam; //32位消息的特定附加信息,具体表示什么处决于message <原创 2010-08-04 22:36:00 · 11705 阅读 · 1 评论