自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(418)
  • 收藏
  • 关注

转载 标准模版库

STL (标准模版库,Standard Template Library)和MFC相比,STL更加复杂和强大。STL有以下的一些优点:---可以方便容易地实现搜索数据或对数据排序等一系列的算法;---调试程序时更加安全和方便;---STL是跨平台的一些基础概念的定义模板(Template)——类(以及结构等各种数据类型和函数)的宏(macro)。正规名称叫范型(

2012-04-10 10:04:11 469

转载 std::vector介绍

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限

2012-04-10 10:03:05 563

转载 std:string学习

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。   好了,进入正题………首先,为了在我们的程序中使用s

2012-04-09 18:05:25 498

转载 CSocket socket相关方法 知识点

问题一:自己做了个自定义控件,在里面使用CSocket进行连接,对该控件进行调试的时候发送和接受都是好用的,但是当把控件嵌入到一个应用中时,发送OK,但是却接受不到东西实验证明,要把这个CSOCKT的创建及发送都放在应用的主线程中就是可以接受到数据了,这是问什么呢? 问题二:关于使用socket接口的tcp与udp连接:(文章末尾有实例代码)

2012-04-07 17:18:15 2681

原创 新发地,物流港,锦绣大地

新发地,物流港,锦绣大地

2012-04-07 13:15:47 4526

转载 CListCtrl基本用法

CListCtrl是列表控件类,列表控件的每一行叫做一个item,每一列叫做一个subitem。每一行和每一列都有个ID号,可以确定唯一的单元格。最近使用了这个控件,有心得总结如下:      (Dialog模式)

2012-04-07 11:15:53 659

转载 CAsyncSocket发广播包

1.#include 2.定义CAsyncSocket类的指针CAsyncSocket *pSocket;3.初始化Socketif (!AfxSocketInit()){   AfxMessageBox("Error");//IDP_SOCKETS_INIT_FAILED   return FALSE;}4.初始化pSocketpSocket = new

2012-04-06 15:21:53 2059

转载 linux fgets

fgets (buf, size, fp)其行为方式如下:(1)遇到换行或文件结束EOF则返回。(2)按行读取。(3)每一行结束处的换行字符‘\n’也算该行字符。(4)对于大小为size的buf,最多只读取size-1个字符。(5)自动地把buf中最后一个字符(通常是换行符)的后面一个字节填充零结束符('\0')。因此如果想把buf中的换行符去掉,可以这样:buf[

2012-04-01 12:10:12 2514

转载 CAsyncSocket运作流程

使用CAsyncSocket时,Send流程和Recieve流程是不同的,不理解这一点就不可能顺利使用CAsyncSocket。编辑摘要目录1 概述2 相关 CAsyncSocket运作流程 - 概述MSDN对CAsyncSocket的解释很容易让你理解为:只有OnSend被触发时你Send才有意义,你才应该S

2012-03-27 21:46:53 757

转载 CAsyncSocket的用法

这几天都在研么MFC的套接字类CAsyncSocket的用法, 将一些心得和实践中遇到的问题总结一下。 一、        一些网络的基本概念1.       同步:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。2.       异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。3.       阻塞:指调用某函数时,直到该函数完

2012-03-27 20:53:47 1009

转载 MFC疑难注解:CAsyncSocket及CSocket

MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。一、CAsyncSocket与CSocket的区别前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻

2012-03-27 20:18:04 902

转载 FileZilla客户端实现分析

Content List:Source File ClassificationMain Framework of FileZilla ClientNetwork Implementation AnalysisGet Nuggets from MiscExplore FileZilla Client GUIKnowledge RepositorySummarizeReference

2012-03-27 20:11:36 2957

转载 FileZilla FTP服务器源代码分析

FileZilla是开源的FTP服务器,用C++写的,通过分析它的源代码,可以掌握C++网络编程以及高并发服务器的设计。FileZilla 是http://sourceforge.net上的项 目,主页是http://sourceforge.net/projects/filezilla, 我们要研究的版本是:FileZilla Server 0_9_18,其实FileZilla还包括客户端

2012-03-27 18:19:15 12251

转载 FileZilla Server源码分析(1)

之所以有本系列的分析,是因为两点:FileZilla 是目前非常火爆的开源ftp项目,整个项目采用C++代码编写,代码紧凑可读性高,值得学习(缺陷是注释太少)。网络上已有的对该源码的分析基于的版本是0.9.18,分析比较粗略,无论是框架还是细节。这里仅仅是我个人对FileZilla Server源码0.9.34版本的分析,能力有限,不足和错误之处还希望大家不吝斧正。本片作为开篇

2012-03-27 17:32:13 9001

转载 Warning - bad CRC, using default environment问题解决

环境:RedHat 9.0+u-boot-1.1.2+cross-2.95.3现象:配置好u-boot,在RAM里正常启动如下:--------------------------------U-Boot 1.1.2 (Aug 17 2006 - 14:07:56)U-Boot code: 21F00000 -> 21F156CC  BSS: -> 21F198D0

2012-03-22 23:49:15 22618

转载 U-Boot在AT91RM9200上的移植及启动分析

1 引 言    U-Boot(Universal Boot Loader)是遵循GPL条款的开放源码项目,他支持多种体系结构的上百种开发板,并且支持多种嵌入式操作系统内核,具有较高的可靠性和稳定性,已经成为功能最多、灵活性最强并且开发最积极的开放源码BootLoader。作为通用的BootLoader,U-Boot可以方便地移植到其他硬件平台上。    本文基于AT91RM9

2012-03-21 19:40:56 1319

原创 在SourceInsight中加入对.S文件的支持

选择菜单 Option -> Documentation Option,  并Document Type中选择C Source file, 然后在File filter中添加";*.S", 选择Close退出。 然后在Add or Remove file for project 中选择要添加的文件即可。

2012-03-21 14:25:55 6172

转载 三极管的工作原理

三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E。分成NPN和PNP两种。我们仅以NPN三极管的共发射极放大电路为例明一下三极管放大电路的基本原理。一、电流放大下面的分析仅对于NPN型硅三极管。如上图,我们把从基极B流至发射极E的电流叫做基极电流Ib;把从集电极C流至发射极E的电流叫做集电极电流 Ic。这两个电流的方向都是流出发射极的,

2012-03-20 22:47:15 1433

转载 CAN波特率的计算

CAN是controller Area Network的简称,中文为控制器局域网络。主要应用于汽车领域。在平时的硬件的设计中主要有两个控制器来实现扩展CAN设备,分别是SJA1000和MCP2515。其中SJA1000被设计替代原来的PCA82C200。SJA1000SJA1000为并行输入的CAN控制器。SJA1000有两种独立的工作模式:BasicCAN Mode(PCA82C20

2012-03-14 19:51:33 6450 1

转载 CAN波特率计算

Can控制器器只需要进行少量的设置就可以进行通信,就可以像RS232/48那样使用。其中较难设置的部分就是通信波特率的计算。CAN总线能够在一定的范围内容忍总线上CAN节点的通信波特率的偏差,这种机能使得CAN总线有很强的容错性,同时也降低了对每个节点的振荡器精度。实际上,CAN总线的波特率是一个范围。假设定义的波特率是250KB/S,但是实际上根据对寄存器的设置,实际的波特率可能为200

2012-03-14 18:30:14 1683

转载 一些VC的快捷键以及调试方法技巧

1.检测程序中的括号是否匹配  - u6 Q( Q$ I/ L! Y- ^* B把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号 . W* W- F" y0 I" L; |2.查看一个宏(或变量、函数)的宏定义    k6 q& w2 ~4 w2 w& S& o把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE

2012-03-13 11:10:25 600

转载 VC开发环境快捷键

ctrl+u 可将大写转换成小写 相反的操作是ctrl+shift+u按着alt用鼠标可以选种一列列ctrl + ‘(’或 ‘)’ 可以找匹配的括号ctrl + shift+‘(’或 ‘)’可以选中括号内的ctrl + F2可以设置临时书签F2可在书签间跳转按着ctrl + 方向  可以一个词一个词的跳Ctrl+]括号匹配匹配光标所在位置的括号,包括大、小、中括号F

2012-03-13 11:09:22 608

转载 详细讲解 关于Linux静态库和动态库的分析

基本概念 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 ln -s libhello.so.1.0 libhello.so

2012-03-12 21:18:46 593

转载 博创2410-S平台上AX88796网卡驱动(linux-2.6.24)

linux内核中已经提供了AX88796的驱动,需要我们配置一下。 首先,在arch/arm/mach-s3c2410/mach-smdk.c中添加如下内容:static struct ax_plat_data ax88796_platdata = {    .wordlength = 2,    .dcr_val = 0x1,    .rcr_

2012-03-06 13:07:20 1629

转载 郁闷的串口中断 nobody cared

这几天碰到一个很奇怪的问题, kernel 启动的时候,会碰到 抱怨 irq 19: nobody cared. 这个中断是串口中断. 而且我确认串口是可以work的. 因为在 early console->console 已经成功了. 经过一番搜索, 发现把kernel_init 函数中的 /* Open the /dev/console on the rootfs, this

2012-03-06 12:16:35 5232 1

原创 如何打印内核调用堆栈及函数名

static void__report_bad_irq(unsigned int irq, struct irq_desc *desc,irqreturn_t action_ret){struct irqaction *action;if (action_ret != IRQ_HANDLED && action_ret != IRQ_NONE) {printk(KE

2012-03-06 12:08:49 3858

转载 C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)

多个值定义时,需要用以下的方式:#if  defined(CONFIG_X2_700) || defined(CONFIG_X2_900)预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些

2012-03-06 11:50:04 798

转载 linux下串口通信帖子汇总

最近,关于串口通信的帖子发问的比较多。给大家提供几个很好的帖子。串口编程入门:写的非常好。http://www.ibm.com/developerworks/cn/linux/l-serials/index.html对于串口,大家不能发送接收,数据,或者只有一方能接收或者发送,都是串口设置的问题。大家可以把自己串口通信的经验在后面进行回复,以便他人查看。

2012-03-04 21:02:30 1472

转载 LINUX串口简明解析[修正版]

From http://www.cnblogs.com/pingf/archive/2009/09/19/1570187.html09-14上周的时候,发了篇文章,关于linux串口的【当然程序师转别人的(还是发布在IBM开发者社区的嘞)】,虽然当时能跑的通,但这周在用的时候却发现不行了,于是决定仔细研究下linux下串口这东西!当然那个程序有问题,就要自己重新写啦。。。。。。OT

2012-03-04 20:58:01 1668

转载 Linux串口编程详解

串口本身,标准和硬件 †串口是计算机上的串行通讯的物理接口。计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备。虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。虽然现在在很多个人计算机上,原来用以连接外部设备的串口已经广泛的被USB和Firewire替代;而原来用以连接网络的串口则被以太网替

2012-03-04 19:07:07 918

转载 Linux 环境下串口通信的编程

作者:david zhou原文地址:http://blog.tom.com/blog/read.php?bloggerid=611041&blogid=30021    串口设备无论是在工控领域,还是在嵌入式设备领域,应用都非常广泛。而串口编程也就显得必不可少。偶然的一次机会,需要使用串口,而且操作系统还要求是Linux,因此,趁着这次机会,综合别人的代码,进行了一次整理和封装。

2012-03-04 18:56:24 972

转载 [电路设计心得] 什么是硬件设计?——成功的硬件设计需要什么?

硬件设计就是根据产品经理的需求PRS(Product Requirement Specification),在COGS(Cost of Goods Sale)的要求下,利用目前业界成熟的芯片方案或者技术,在规定时间内完成符合PRS功能(Function),性能(Performance),电源设计(Power Supply), 功耗(Power Consumption),散热(Thermal/C

2012-03-02 16:38:08 4907

转载 485总线简述及使用注意事项

在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。485总线由于其布线简单,稳定可靠从而广泛的应用于视频监控,门禁对讲,楼宇报警等各个领域中,但是,在485总线布线过程中由于有很多不完全准确的概念导致出现很多问题。

2012-03-02 16:22:37 1516

转载 C语言当中位段的使用

位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。 含有位段的结构体类型称为位段结构。位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。位段结构中位段的定义格式为:         unsigned :例如:struct bytedata{unsigned a:2;   /*位段a,

2012-03-02 15:43:19 444

转载 s3c2410/s3c2440的USB HOST不稳定的原因及解决方法

今天tpu拿出一块2440板子调试,发现尽管采取了种种措施,USBHOST总是会偶尔不工作.把UCLK通过CLKOUT0引出,用示波器查看,发现不工作的时候,UCLK根本就没有稳定下来.于是仔细思考,影响USB的有这几个地方: 1.外部晶振16.9344Mhz 2.LOCKTIME寄存器的UPLL LOCKTIME 3.UPLLCON 4.CLKSLOW寄存器的UPLL开关

2012-02-28 21:00:32 966

原创 外部晶振(external crystal)和外部时钟(external clock)有什么区别?

外部晶振(external crystal),就是晶体。外部时钟(external clock) ,就是一个时钟信号。外部晶振,就是时钟产生电路在内部,只是使用了一个外部的晶振。外部时钟,则时钟产生电路在外部,至于是否使用晶振,要看它的具体实现。晶振,是一个元器件。在电路板上你可以肉眼看到。时钟,是一个电信号。你无法直接看到,只能通过仪器去测量出来。前者产生

2012-02-28 15:42:49 11030

转载 使用BusyBox制作linux根文件系统(CramFS+mdev)

操作系统:Ubuntu9.04内核版本:linux-2.6.24.7  开发板:博创arm2410s    交叉编译工具:arm-linux-gcc-4.1.1 BusyBox:busybox-1.11.1      CramFS:CramFS-1.1 注意:由于要制作的根文件系统使用了mdev(BusyBox简化版的udev),因此,需要内

2012-02-27 14:58:42 1780

原创 移植2440遇到的错误

Error: unrecognized/unsupported machine ID (r1 = 0x00000294).Available machine support:ID (hex)        NAME000000c1        SMDK2410000005d2        JIVE000003fe        SMDK241300000

2012-02-23 14:06:03 585

转载 让linux2.6.18支持4G的SD卡

linux-2.6.20.x 以上版本对SD卡有较好支持,可以支持1.0及2.0 SD卡的协议,所以linux2.6.2x 以上的版本都支持大容量(>=4G)的SD卡,而linux-2.6.1x 对SD卡的支持只能到 2G,大于2G的SD就无法识别.发送CMD8,检查卡是否SD2.0。SD1.1是不支持CMD8的,因此在SD2.0 Spec中提出了先发送CMD8,如响应为无效命令,则卡为S

2012-02-23 12:00:21 1171

原创 在ARM下编译chat和pppd

1) 把ppp的源码解开   tar zxvf ppp-2.4.5.tar.gz2) 进入ppp-2.4.5/pppd目录    修改Makefile.linux    设置 CC = /usr/local/arm/3.4.1/bin/arm-linux-gcc3) make -f Makefile.linux  即可编译出pppd4) 同样进入ppp-2.4.5/chat

2012-02-21 21:06:48 2275

空空如也

空空如也

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

TA关注的人

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