- 博客(148)
- 收藏
- 关注
原创 随笔
近来由于需要,针对没有接触过的ARM,花了两周的时间,实现了pxa255的串口下载NK,pxa270的USB下载NK,感觉颇多,对于硬件是极为欠缺,虽然实现了要求的功能,但还是没有入门,呵呵,还是需要努力
2009-03-06 22:39:00
845
原创 编写基于DSP程序的注意事项
使用C/C++语言编写基于DSP程序的注意事项 1、 不影响执行速度的情况下,可以使用c或c/c++语言提供的函数库,也可以自己设计函数。2、 要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。 3、 一定要非常重视中断向量表的问题。中断向量表中的中断名是任意取定的,dsp是不认名字的,它只认地址!!中断向量表要重新定位。 4、 要明确dsp软件开发的
2008-05-25 09:31:00
1798
转载 八皇后
#include graphics.h>#include stdlib.h>#include stdio.h>#include dos.h>char n[3]=...{0,0};/**//*用于记录第几组解*/int a[8],b[15],c[24],i;int h[8]=...{127,177,227,277,327,377,427,477};/**//*每个皇后的行坐标*/int
2008-05-22 23:39:00
1147
原创 卡尔曼滤波
卡尔曼滤波算法 首先引入一个离散控制过程的系统,用一个线性随机微分方程来描述:X(k)=A X(k-1)+B U(k)+W(k),系统的测量值: Z(k)=H X(k)+V(k) 。X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H 是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(
2008-05-22 20:28:00
1391
原创 食物链
#include#includestruct node{ int TYPE; long x; long y; struct node *next;};/*************************************/ struct node * inputfun(long k)/*K表示说话的句数*/ { int i; struct no
2008-05-10 10:18:00
805
转载 行编辑器
#define NULL 0#define OK 0#include #include #include #include #include typedef struct text{ char string[80];//存储每一行的元素 struct text *next;//指向后一个节点的指针 struct text *pre;//指向前一个节点的指针 int num;//每一行元素的长度 i
2008-05-10 09:31:00
1326
1
原创 快速傅立叶变换原理
要计算一个N点的离散傅立叶变换需要同一个N*N点的W矩阵(关于W矩阵请参阅信号与系统方面的书籍)相运算,随着N值的增大,运算次数显著上升,当点数达到1024时,需要进行复数乘法运算1,048,576次,显然这种算法在实际运用中无法保证当点数较大时的运算速度,无法满足对信号的实时处理。 根据W矩阵中W元素的周期性和对称性我们可以将一个N点的DFT运算分解为两组N/2点的DFT运算,然后取和
2008-05-05 20:18:00
10951
3
转载 vector结构体 删除
现在用stl的人越来越多, stl确实是套很漂亮的算法和数据结构库. 但是初用stl的人往往会遇上很多问题.从一个容器中删除元素,是很常用的操作,但是也是初学者常会犯错误的地方,上次baosong就发现了删除map和list中元素会犯的错误. vector是stl里很常用的一个容器, 和map,list等容器相比, 从vector中删符合某些条件的元素有更多的麻烦.比如,我们要完成如下的任务.有下
2008-05-04 21:26:00
7205
原创 二维数组魔方
#include iostream>using namespace std;#define n 16void main() ...{ int a[n][n]=...{0}; int b,c,d,e,f; printf("请输入魔方阵的阶数:"); scanf("%d",&b); e=b/2; d=0; for(c=1;cb*b;c++)
2008-05-03 22:33:00
5549
8
原创 fopen的实现
/*** *fopen.c - open a file * * Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved. * *Purpose: * defin
2008-04-30 18:10:00
4418
转载 c linux 串口函数
Listing 1 - Opening a serial port. #include stdio.h> /**//* Standard input/output definitions */ #include string.h> /**//* String function definitions */ #include unistd.h> /**//*
2008-04-29 20:06:00
1511
3
转载 读取bmp文件
.显示一个bmp文件的C程序下面的函数LoadBmpFile,其功能是从一个.bmp文件中读取数据(包括BITMAPINFOHEADER,调色板和实际图象数据)将其存储在一个全局内存句柄hImgData中,这个hImgData将在以后的图象处理程序中用到。同时填写一个类型为HBITMAP的全局变量hBitmap和一个类型为HPALETTE的全局变量hPalette。这两个变量将在处理WM_PA
2008-04-26 15:27:00
1676
转载 输出从0到max_num中用二进制和十进制表示都是回文数的整数
#include iostream>#include iomanip>using namespace std;static int is_circle_num(int number,int radius);int main()...{ int num,max_num; cout"Please input an interger (for example 1200) :"; cin>
2008-04-26 14:57:00
1874
原创 常见内存错误
1. 内存泄露。大家都知道,在堆上分配的内存,如果不再使用了,应该把它释放掉,以便后面其它地方可以重用。在C/C++中,内存管理器不会帮你自动回收不再使用的内存。如果你忘了释放不再使用的内存,这些内存就不能被重用,就造成了所谓的内存泄露。 把内存泄露列为首位,倒并不是因为它有多么严重的后果,而因为它是最为常见的一类错误。一两处内存泄露通常不至于让程序崩溃,也不会出现逻辑上的错误
2008-04-26 09:27:00
1618
2
原创 C++程序中的内存划分
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储
2008-04-26 08:34:00
1640
1
原创 二维指针与二维数组
在实际工作中,可能需要用二维指针来指向二维数组,但是不能简单的就用一个二维指针指向二维数组,这里简单的介绍两种方法int A[2][2]={{1,2},{3,4}};int **p=new int *[2];for(int i=0;i{p=new int ;}for(i=0;ifor(int j=0;j{p[i][j]=A[i][j];}这样就可以
2008-04-19 00:25:00
1858
转载 事件与消息编程
(一) 利用用户定义的消息通信 在Windows程序设计中,应用程序的每一个线程都拥有自己的消息队列,甚至工作线程也不例外,这样一来,就使得线程之间利用消息来传递信息就变的非常简单。首先用户要定义一个用户消息,如下所示:#define WM_USERMSG WMUSER+100;在需要的时候,在一个线程中调用::PostMessage((HWND)param,WM_USERMSG,0,0)或Cw
2008-02-14 09:48:00
1321
转载 消息与事件
事件就是“当....的时候” 消息就是“嗨!你该干....了” 我们一般都是在 "当...的时候" 干 XXX0 或者 XXX1 XXX2 .... 也可以 “这件事情我不想理会”(让Windows去干)。 我们也可能在正干XXXn中突然想起: “嗨!我该晚餐了!” 再附上不经典的描述:事件是一个动作——用户触发的动作。 消息是一个信息——传递给系统的信息。 事件与消息的概念在计算机中较易混淆,但
2008-02-14 09:45:00
834
转载 32位彩色图像转换成256级灰度图的算法
void GrayConversionXu(HDIB& hDib) { HDIB hGreyDIB=NULL; DWORD nWide,nHeight,i,j; LPBYTE lpBit=(LPBYTE)GlobalLock(hDib); LPBITMAPINFOHEADER pHeader=(LPBITMAPINFOHEADER
2007-10-19 19:35:00
2713
转载 给工具条加标题
工具条也是窗口,是窗口就有标题,如何给工具条加标题? [程序实现] 不想动态改变工具条的标题就在CMainFrame::OnCreate()中: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ...... m_wndToolBar.SetWindowText(_T("Standdard")); return
2007-10-17 20:44:00
870
转载 oracle rowid介绍
一.rowid简介 rowid就是唯一标志记录物理位置的一个id,在oracle 8版本以前,rowid由file#+block#+row#组成,占用6个bytes的空间,10 bit 的 file# ,22bit 的 block# ,16 bit 的 row#。 从oracle 8开始rowid变成了extend rowid,由data_object_id#+
2007-10-09 20:07:00
1697
原创 WM_ACTIVE的消息
WM_ACTIVE的消息参数 wParam的低阶word指示窗口是被激活还是失去激活:WA_ACTIVE,被鼠标点击以外的方法激活;WA_CLICKACTIVE,由鼠标点击激活;WA_INACTIVE,失去激活;wParam的高阶word指示窗口是否被最小化;非零表示最小化;lPararm表示将激活的窗口句柄(WA_INACTIVE),或者将失去激活的窗口句柄(WA_C
2007-09-27 20:32:00
12599
转载 fork
pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!此时程序寄存器pc,在父、子进程的上下文中都声称,这个进程目前执行到fork调用即将返回(此时子进程不占有CPU,子进程的pc不是真正保存在寄存器中,而是作为进程上下文保存在进程
2007-09-24 22:10:00
885
转载 半角转全角
public string ToSBC(string input) { //半角转全角: char[] c=input.ToCharArray(); for (int i = 0; i 65280 && c[i]<65375) c[i]=(char)(c[i]-65248); } return new string(c); }
2007-09-22 21:29:00
851
转载 GB_Unicode对照表
Uni. GB Uni. GB Uni. GB Uni. GB Uni. GB 00A4 A1E8 ¤ 00A7 A1EC § 00A8 A1A7 ¨ 00B0 A1E3 ° 00B1 A1C0 ±00B7 A1A4 · 00D7 A1C1 × 00E0 A8A4 à 00E1 A8A2 á 00E8 A8A8
2007-09-20 23:04:00
1311
转载 构建unicode 码表
构建 GB2312 汉字库的 unicode 码表嵌入式系统总离不了处理汉字。一般汉字的处理方法是(以手机接受短信为例):比如你收到了一封短信,该短信解码后是按照 UTF-16 表示的,那么我们需要根据每一个汉字的unicode 码找到它在 GB2312 库中的位置,然后再用对应的点阵数据在屏幕上显示出来。 于是乎,必须有一种手段将 unicode 码和汉字字模的数据对应起来。最常用的手段是做一
2007-09-20 22:52:00
1028
转载 中文内码转换代码
输入Big5字符,返回Gb简体字符 //--------------------------------------------------------------------------- //函数输入Big5字符,返回Gb简体字符 //-----------------------------------------------------------------------
2007-09-20 22:42:00
1291
转载 MultiByteToWideChar WideCharToMultiByte
char sText[20] = {"多字节字符串!OK!"};将MultiByteToWideChar()的第四个形参设为-1,即可返回所需的短字符数组空间的个数: DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0); wchar_t *pwText; pwText = new wchar_t[dwNum]; if
2007-09-20 22:34:00
1014
转载 全角转换为半角
void __fastcall tform1::button1click(tobject *sender){ int nlength=edit1->text.length(); if (nlength==0) return; ansistring str=""; char *ctmp=new char[nleng
2007-09-19 22:43:00
1129
原创 二维数组和指针
二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组下面我们讨论指针和二维数组元
2007-09-12 19:45:00
88163
32
转载 CString的工作原理介绍
看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。 CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多和字符串有关,典型的有:缓冲溢出、 内存泄漏等。而且这些bug都是致命的,会造成系统的瘫痪。因此c++里
2007-08-27 20:55:00
1569
原创 N阶魔方阵
#include#include #define N 7void main(){ int a[N+1][N+1]; int i,j,k,l=0; for(i=0;i for(j=0;j a[i][j]=0; i=1; j=N/2+1; a[i][j]=1; for(k=2;k { if((k-1)%N==0) i++; else { i=i==1?N:i-1; j=j==N?
2007-08-25 17:45:00
1042
原创 wingdi 错误
在画图和创建新的字体中,往往出现很多wingdi。h的错误究其根源就是因为只能attach一次,所以在调用的时候应该deleteobject 或detach这样才能消除错误
2007-08-25 08:43:00
1313
原创 vc dlgdata.cpp 问题
近来在vc中遇到 dlgdata.cpp的问题,一般情况下,出现这种问题的原因:1、在移植对话框的过程中,对话框中的控件的参数类型不正确 例如:本来为IDC_List,显示为1000 修改方法:就是把相应的类型改为 IDC_List2、在ddx控制中出现的一些参数在dlg中没有 解决办法:删掉相应的参数希望以上办法对大家有所帮助
2007-08-15 22:22:00
2095
1
转载 dll反汇编
首先是使用的工具,ida/win32dasm/ollydbg win32dasm分析的速度快一些,但是智能程度不如ida,ida这个2001开发工具亚军绝对不是浪得虚名的,它的智能程度非常高,可是识别出常用的函数,这两个都是静态反汇编的工具,必须配以动态分析的工具,毕竟你很难一下子就分析对(至少我是这样),当然你可以使用s-ice或者trw,但是这些工具都有限制,trw不支持200
2007-08-13 22:40:00
3461
转载 取CPU信息
#pragma hdrstop#pragma inline#pragma argsusedint main(int argc, char **argv){char OEMString[13];int iEAXValue,iEBXValue,iECXValue,iEDXValue;_asm { mov eax,0 cpuid mov DWORD PTR OEMString,ebx m
2007-08-13 22:30:00
779
转载 实现DLL注入的另一种方法
将DLL注入进程技术在实现Api函数的监视程序中不可缺少的一项工作。其中最常见的就是用SetWindowsHookEx函数实现了。不过,该方法的缺点是被监视的目标进程必须有窗口,这样,SetWindowsHookEx才能将DLL注入目标进程中。而且,目标程序已经运行了,那么,在窗口创建之前的Api函数就不能被Hook了。另外一种方法用Debug方案,就可以实现在程序创建时监视所有的Api了,缺
2007-08-13 22:27:00
2349
原创 atl介绍
ATL 中 所 使 用 的 基 本 技 术 : COM 技 术 C++ 模 板 类 技 术(Template) C++ 多 继 承 技 术(Multi-Inheritance) 模 板 类 的 定 义 格 式: template class MyTemp{ MyTemp( ) { }; ~MyTemp( ) {
2007-08-13 22:21:00
905
转载 vc6 256色位图的显示
具体实现步骤如下:---- 1、装载位图并创建调色板。 ---- 首先装入一幅位图,该位图既可以以资源的形式与程序绑在一起,也可以以文件的形式从外部装入。然后将该位图与一个Cbitmap对象联系(Attach) 起来。在这儿我们应使用API函数LoadImage(),而不是CBitmap类的成员函数CBitmap::LoadBitmap(),因为我们需要 得到该位图的DIBSECTION结
2007-08-13 22:14:00
3737
1
转载 VC++编译错误信息
1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h") 2、fatal error C1083: Cannot open include file: R…….h
2007-07-22 15:34:00
928
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人