Visual C++6.0中的调试工具使用及常见错误

Visual C++6.0中的调试工具使用及常见错误
Visual C++6.0中的调试工具使用及常见错误

C语言常见错误及解决方法

(注:红色粗体是常见的错误,请大家检查自己的程序,并注意尽量不要犯这些常见的错误。其余它体是避免错误的方法和正确的写法)

一、基础知识和数据类型、表达式

1、拼写错误,尤其是include,main,void,float等词。C语言的32个关键字与基本含义如下:double:声明双精度变量或函数

int:声明整型变量或函数

char:声明字符型变量或函数

float:声明浮点型变量或函数

void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

auto:声明自动变量一般不使用

struct:声明结构体变量或函数

break:跳出当前循环

else:条件语句否定分支(与if连用)

long:声明长整型变量或函数

switch:用于开关语句

case:开关语句分支

enum:声明枚举类型

register:声明积存器变量

typedef:用以给数据类型取别名(当然还有其他作用)

extern:声明变量是在其他文件正声明(也可以看做是引用变量)

return:子程序返回语句(可以带参数,也看不带参数)

union:声明联合数据类型

const:声明只读变量

short:声明短整型变量或函数

unsigned:声明无符号类型变量或函数

continue:结束当前循环,开始下一轮循环

for:一种循环语句(可意会不可言传)

signed:生命有符号类型变量或函数

default:开关语句中的“其他”分支

goto:无条件跳转语句

sizeof:计算数据类型长度

volatile:说明变量在程序执行中可被隐含地改变

do:循环语句的循环体

while:循环语句的循环条件

static:声明静态变量

if:条件语句

2、{},[],(),‘’,“”不配对。解决这个问题最好的方法就是每当写这些符号的时候就

先写成一对,然后再在中间加内容。

3、忘记在语句的末尾加分号,或在预处理命令后多加分号。记住:每一个语句的后边都要

加分号,而预处理命令并不是语句,所以不加分号,他们必须每行一条,不能把多个命

令写在一行。

4、混淆/和\;注释对应的符号是/**/,而转义字符是以\开头,除号是/。

5、printf()和scanf()的参数设置有误,主要表现在以下几方面:

●类型不匹配的问题。(例如:有float a=3.5,但输出的时候printf(“a=%d”,a);则屏幕上会

显示出a=0.00000或者提示其它运行错误)。基本原则是:float对应%f,int对应%d,char 对应%c。

●个数不匹配。无论是哪个函数,都可以有n个参数,第一个永远是“”括起来的内容,

表示输出格式。剩下的n-1个是输出的变量或者输入的变量的地址。需要注意的是,如果后边有n-1个参数,那么前边一定对应n-1个%f一类的格式说明符。

●scanf()中变量前忘了加&。记住:scanf()中变量前要有&(但后边学到的字符数组名和指

针前不用加)

6、定义标识符的时候经常出现使用非法字符的情况,例如:标识符中不能用空格,也就是

说不能有这样的定义:int radium of circle;一般情况下可用下划线将三个单词连接在一起。

7、在使用变量前未定义,或未初始化。例如:若下边的sum未定义,则在编译时会提示相

应的错误信息,而若未初始化为0,则求和的结果一定是错误的。

void main()

{int I,a[10],sum=0;/*只要下边要用,这个定义就必须要有,一般情况下也要有初始值*/ for(I=0;I<10;I++)sum+=a[I];

printf(“%d”,sum);

}

8、符号常量定义错误。例如:#define PI=3.14159,这里的=应该换成空格。

9、计算错误。主要注意:++,――和其它运算符一起运算时,除根据优先级进行计算时,

还要考虑先后位置的特殊含义;数据类型不一致时发生的自动转换也会导致计算的误差;还要注意求模结果的符号与被除数相同;某些特殊情况下使用懒惰求值法。

10、不能除以0,要做合法性检查;

11、类型溢出。记住每种数据类型的取值范围,确保数据在所定义类型范围之内;

12、数学表达式的格式有误。常见的有:(1)数学与C语言运算表达式的混淆(例如:

=表示赋值,而==才表示我们数学中的相等关系)。(2)、忽略了运算的优先级。解决这个问题的最好方法就是写数学表达式时不要从左到右,而是按优先级的顺序写,写完优先级高的一个表达式后加上()再写下一级的表达式,例如:计算梯形的面积时,要s=((a+b)*h)/2,不要1/2*a+b*h.(3)忽略了计算和赋值时的自动转换。例如:float half=1/2;

这样,因为=右边是整数相除的结果为整数0,不会得到0.5存入half,进而会影响下边的计算结果。要想不在这儿绊跟头,当计算不同类型的数据时,一定注意会不会出现引起错误的自动转换,建议最好加上强制转换。(4)赋值号左边不是变量,例如:若有#define PI3.14,程序中又出现PI=3.14159。又例如:f(n)=f(n-1)*n(这是典型的数学语言,在C 语言中右边的乘积不能正确存储,而左边又是一个函数调用)。

13、使用库函数前,尤其是数学函数忘了加#include

二、流程控制

1、丢掉语句结束标记“;”,尤其是for语句中表达式后或do-while语句后的分号,或在预

处理命令后边、while()后、for()后加“;”;

2、If语句或循环语句中逻辑表达式或关系表达式书写错误。一定要注意C语言的条件与数

学表达式的区别(例如我们数学中经常写到的0≤x≤9,在C语言中应该写成

x>=0&&x<=9)。

3、if-else嵌套时不配对。最好在写每个条件时要用两个{}分别将两个分支先括起来,再

添加其中的语句,以保证其配对不易错。

4、switch()语句中的格式不正确。()中的表达式结果一定是一些明确的值,不能是区间;

表达式的所有可能结果要列在case后边,case与常量之间有一空格,不要丢掉必要的break;

5、随意修改循环控制变量i的值,导致循环次数的改变,尤其是当循环有嵌套时。在循环

体中,不要将循环控制变量进行另外的改变。

6、分不清什么情况下用双重循环,什么情况下用两个控制变量写成一重循环。当I不变,

j又循环一遍的时候用双重循环。当I,j同时变化的时候用一重循环,此时,循环控制变量有两个,但条件只写一个就可以,因为另一个总是进行相应的变化的。

7、忽略循环体与循环控制变量的关系。其实,很多情况下,循环控制变量都在循环体中起

到非常重要的作用。应该利用上这种关系。

三、数组与指针

1、字符串的输入有错误:主要表现在使用scanf()或gets()时加了&,或输入字符串时用循

环,(这样的话,字符个数无论多长,都不会为自动加\0,将来引用的时候也就不能以字符串的形式引用。)

2、对字符串的处理中,循环条件仍然写成I

般为str[I]!=’\0’或I

3、而输入所对应的变量是指针时(常见的有:输入的变量是字符数组名或指向字符串的指

针)不能加&。

4、指针定义后未赋值就引用。如果在定义时不知道赋什么值,可以用p=NULL赋初值,以

避免引起的灾难性错误。

5、分不清p和*p。前者是指针,即地址,后者表示指针所间接引用的数据,但如果是二

级指针或多级指针,取*以后得到的仍然可能是地址。

四、函数

1、函数定义的时候,函数头部加分号,而函数声明的地方忘了加分号

2、函数实参格式不对,主要表现在:给出实参时,多给出数组类型,或者,形参是数组int

a[];的时候,给出的a[]或a[I].

3、递归时忘了设置边界条件,这样易造成死循环调用。

4、使用函数之前未声明(包括C库函数的声明)。建议大家,将所定义的一切函数都在程序开始的预处理命令后加上函数原型的声明,这样做不仅可以避免错误,而且整个程序的结构看起来更清楚。

五、结构体共用体

1、结构体类型定义有误,主要表现在:结构体类型里还有嵌套的时候,忘记了成员名称。

(例如:下边的例子中,有些同学经常忽略了birthday)

2、结构体类型名和结构体变量名混淆。例如:

struct STU

{….

Struct data

{int year,month,day;

}birthday

};

struct STU a;struct STU是类型名称,而且不分配空间,且不能直接引用。只有定义了结构体类型struct STU的变量a以后,才为a分配相应的内存空间,引用时也要是a.??? 3、结构体变量的成员引用不正确,尤其是当结构体类型中有嵌套定义的时候。一定要一级

一级的引用。例如:上边的例子:如果引用其中的年的话,一定是a.birthday.year.不能直接a.year.

4、对结构体变量进行输入输出的时候,整体输入或整体输出。除作为函数参数外,不能对

结构体变量整体操作,只能一个成员一个成员地输入、输出。

5、不理解共用体的“共占内存”。对共用体中的成员变量,一定要靠一个标记区别它们,

并分别按不同类型引用它们。切记:共用体变量不能做函数形参。

六、文件

1、使用之前没有打开文件,使用之后没有关闭文件。

2、相关函数的调用格式有误。请一定注意实参的类型、顺序、个数上与函数原型(或函数

声明)的一致。

Visual C++6.0中的调试工具使用入门

一、程序开发过程中出现的错误类型

我们在进行程序设计时,不可避免地会犯错误。程序中的错误可以分为三类:编译错误、运行时错误和逻辑错误。

编译错误(Compile errors)又称为编译时错误(Compiling-time errors):是由于错误的编码产生的。例如关键字拼写错误、将中文标点符号当成英文符号使用、遗漏了某些必要的标点符号或者使用了一个没有定义的标识符。

编译错误一般都是语法错误,当编译器对程序进行语法检查时,都能发现这些错误,并能够指出产生错误的位置(标出行号)。我们可以根据编译出错信息指出的行号找到对应的源代码行改正错误,重新编译源程序。只有当所有的编译错误被改正后,才能通过编译检查,产生目标代码文件。

改正编译错误的关键是要能正确理解编译器给出的编译错误信息。VC++环境中的编译、链接错误信息是用英文表示的。对于英文基础薄弱的读者,可以参考本实验指导书后面的“VC++编译、链接常见错误和警告信息中英文对照”。

通常情况下,一个语法错误可能产生多条编译错误信息,这是由于株连错误造成的,建议读者在处理编译错误时,找到第一个出现错误的位置改正后重新编译。这样能够避免被株连错误迷惑。值得指出的是,现在大部分编译器对错误的定位不精确,如果在编译器指出的行没有发现错误,应该向前查找错误。例如,当提示第10行发生错误时,如果在第10行没有发现错误,请从第10行开始往前查找错误并修改之。

运行时错误(Run-time errors)是在程序的运行阶段出现的,当运行环境检测到程序的某些操作无法执行,例如除数为零时,就会出现运行时错误。当运行环境检测到程序的某些操作是被禁止的,也会产生运行时错误。例如,访问数组时超越数组的边界,空指针引用(NULL pointer assignment,空指针赋值,即有指针未赋具体地址就使用了)等等。

逻辑错误(Logic errors):当程序没有按照程序员的意图执行时,就表明程序中

存在逻辑错误。一个应用程序可能既没有语法错误,运行时也没有执行任何无效的操作,但是有可能产生错误的结果,这种错误结果一般都是程序内部的逻辑错误造成的。只有通过测试应用程序并分析它产生的结果,我们才能核实应用程序是否正确地执行了。

当然,如果输入了错误的或者无效的数据,执行程序后肯定也得不到正确的结果。软件行业中有一句名言“输入的是垃圾,输出也是垃圾。(Garbage in,garbage out.)”因此,一般的实用程序还需要对输入数据的正确性和有效性进行检验。

很显然,必须找出并改正程序中的错误,才能得到正确的执行结果。对于语法错误,我们可以根据编译错误信息指出的位置和错误原因来改正错误。请记住:编译器不能发现程序中的逻辑错误和运行时错误。我们可以通过仔细阅读源程序来发现逻辑错误,还可以借助开发环境中提供的调试工具来查找程序中的逻辑错误和运行时错误。

所谓调试(debug)就是定位程序中的错误并改正错误的过程。为了帮助程序员找出并改正程序中的错误,微软公司在Visual C++6.0环境中集成了调试器(debugger),调试器就是调试工具(debugging tools)。下面我们将介绍Visual C++6.0中的调试工具及其使用方法。

二、Visual C++6.0中的调试工具简介

Visual C++6.0环境中的调试工具功能十分强大,既可以支持C++语言源代码级的调试,也可以支持汇编语言级和机器语言级的调试。我们在此仅介绍C++语言源代码级的调试。Visual C++6.0中的调试器允许我们在程序中设置断点(breakpoint),单步运行程序(step),运行到光标处(run to cursor),监视(watch)变量值等等。

断点是我们通过调试器在源程序中设置的一个位置。当运行到断点时,程序中断执行,这样我们可以观察断点处各个相关变量的值,通过变量的值分析、判断到断点处时程序的执行是否符合我们的期望。断点是最常用、最基本的技巧。在Visual C++6.0中设置断点的最简单方法就是通过点击Build工具条上的插入断点按钮(手掌形状按钮)或者按键盘上的功能键F9。如图13所示,

图13在源程序中设置断点插入/移去断点按钮

小红点表示断点按功能键F9也能在当前行插入断点

开始调试

程序按钮

图14开始调试程序

一次可以设置多个断点,设置了断点之后,就可以通过点击Build工具条上的开始调试程序按钮或者按键盘上的功能键F5开始调试程序。如图14所示,

程序运行至断点处暂停

在断点暂停处可以通过Watch

(监视)窗口观察有关变量的值

图15程序运行至断点处暂停

当程序运行至断点处会暂停,我们可以在断点暂停处通过Watch窗口观察有关变量的值,如图15所示。如果Watch窗口没有显示我们所关心的变量,可以自行添加。

另外还有一个更简单的观看变量的值方法:当程序运行到断点时,把鼠标光标移动到源程序中的某个变量上,停留一秒钟就可以看到这个变量的值。

移去断点:把键盘光标(插入符)移动到断点所在的行,再次按功能键F9就可以移去断点。也可以通过点击Build工具条上的插入/移去断点按钮(手掌形状按钮)取消断点。

单步运行程序就是每一次只执行一条语句就暂停。Visual C++6.0中的调试工具提供三种单步运行方式:Step Into,Step Over,Step Out ,如图16所示。Step Into 命令的快捷键是功能键F11,Step Over 命令的快捷键是功能键F10,Step Out 命令的快捷键是功能键Shift+F9。Run to Cursor (运行到光标处)命令的快捷键是功能键Ctrl+F10。

图16单步运行

每次单步运行一条语句后,都可以通过Watch (监视)窗口观察有关变量的值,或者将鼠标光标移动到源程序中的某个需要观察的变量上,停留一秒钟就可以看到这个变量的值,如图17所示。

如果我们确认当前函数中没有错误时,可以使用Step Out 命令快速地执行完毕当前的函数,暂停在该函数调用的下一条语句上。

如果我们确认某一段源代码中没有错误时,可以将键盘光标(插入符)放置在这段代码的末尾处,使用Run to Cursor (运行到光标处)命令快速地执行完毕这一段代码,暂停在光标所在语句上。例如我们可以将键盘光标移动到main 函数的结尾处,然后按功能键Ctrl+F10执行Run to Cursor 命令。这样程序将运行到结束处停止。单步运行,可以进入函数内部

单步运行,不进

入函数内部从当前函数调用中

出来

运行到光标处

将鼠标光标停留在变量上一秒

钟,就可以看到这个变量的值

单步运行后,可以通过Watch

(监视)窗口观察有关变量的值

图17单步运行后观察相关变量的值

需要停止调试程序时,可以执行Stop Debugging(停止调试)命令,如图18所示。Stop Debugging命令的快捷键是功能键Shift+F5,Restart(重新开始调试程序)命令的快捷键是功能键Ctrl+Shift+F5。Go(开始调试程序)命令的快捷键是功能键F5。

Go命令还可以使程序从当前语句运行到下一个断点处,如果后面没有断点,就运行到到程序的结尾。

除了使用快捷键和Debug(调试)菜单执行调试命令,还可以使用Debug工具条,如图19所示。使用工具条上的QuickWatch可以添加要观察的变量或者表达式。工具条上还有一些其他工具可以帮助我们查看CPU内部的寄存器(Registers)、内存单元(Memory)和堆栈(Stack)的情况。

Visual C++6.0中的调试工具功能强大,在这里我们只介绍最基本的操作。当读者积累了一定的调试经验后可以继续学习调试工具的高级使用方法。

最后要强调一点,当程序员对程序进行调试时,一定要理解程序的算法,熟悉程序的结构和流程,准确估计变量和表达式的期望值。这样才能做出正确的分析和判断。调试的过程实质上是一个思考的过程。

图18停止调试命令等

图19调试工具条停止调试命令

重新开始调试程序命令

开始调试程序命令调试工具条

QuickWatch

按钮

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':No such file or directory

不能打开包含文件“R…….h”:没有这样的文件或目录。

3、error C2011:'C……':'class'type redefinition

类“C……”重复定义。

4、error C2018:unknown character'0xa3'

不认识的字符'0xa3'。(一般是汉字或中文标点符号)

5、error C2057:expected constant expression

希望是常量表达式。(一般出现在switch语句的case分支中)

6、error C2065:'IDD_MYDIALOG':undeclared identifier

“IDD_MYDIALOG”:未声明过的标识符。

7、error C2082:redefinition of formal parameter'bReset'

函数参数“bReset”在函数体中重定义。

8、error C2143:syntax error:missing':'before'{'

句法错误:“{”前缺少“:”。

9、error C2146:syntax error:missing';'before identifier'dc'

句法错误:在“dc”前丢了“;”。

10、error C2196:case value'69'already used

值69已经用过。(一般出现在switch语句的case分支中)

11、error C2509:'OnTimer':member function not declared in'CHelloView'

成员函数“OnTimer”没有在“CHelloView”中声明。

12、error C2511:'reset':overloaded member function'void(int)'not found in'B'

重载的函数“void reset(int)”在类“B”中找不到。

13、error C2555:'B::f1':overriding virtual function differs from'A::f1'only by return type or calling convention类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。14、error C2660:'SetTimer':function does not take2parameters“SetTimer”函数不传递2个参数。

15、warning C4035:'f……':no return value f……”函数f……没有返回值。

16、warning C4553:'==':operator has no effect;did you intend'='?

没有效果的运算符“==”;是否改为“=”?

17、warning C4700:local variable'bReset'used without having been initialized

局部变量“bReset”没有初始化就使用。

18、error C4716:'CMyApp::InitInstance':must return a value

“CMyApp::InitInstance”函数必须返回一个值。

19、LINK:fatal error LNK1168:cannot open Debug/P1.exe for writing

连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)20、error LNK2001:unresolved external symbol"……"

连接时发现没有实现的外部符号(没有定义的变量、没有定义的函数等)。

KEIL中如何用虚拟串口调试串口程序

KEIL中如何用虚拟串口调试串口程序 发表于2008/5/7 15:30:22 以前没接触过串口,一直都以为串口很复杂。最近在做一个新项目,用单片机控制GSM模块。单片机和GSM模块接口就是串口。调试完后觉得串口其实很简单。“不过如此”。这可能是工程师做完一个项目后的共同心态吧。下面详细介绍下如何用虚拟串口调试串口发送接收程序。 需要用到三个软件:KEIL,VSPD XP5(virtual serial ports driver xp5.1虚拟串口软件),串口调试助手。 1、首先在KEIL里编译写好的程序。 2、打开VSPD,界面如下图所示: 左边栏最上面的是电脑自带的物理串口。点右边的add pair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。 3、接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL 绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入MODE COM3 4800,0,8,1(设置串口3的波特率、奇偶校验位、数据位、停止位,打开COM3串口,注意设置的波特率和程序里设置的波特率应该一样)ASSIGN COM3 SOUT(把单片机的串口和COM3绑定到一起。因为我用的单片机是AT892051,只有一个串口,所以用SIN,SOUT,如果单片机有几个串口,可以选择S0IN,S0OUT,S1IN,S1OUT。)

4、打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率4800,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。这种方法的好处是不用硬件就可以调试。这是网上一篇文章介绍的方法,联系我实际的使用做了整理。有用的着的人就不用继续摸索了

经典的串口调试工具源代码(一)

经典的串口调试助手源代码(一) Dim OutputAscii As Boolean Dim InputString As String Dim OutputString As String '============================================================================== ======= ' 变量定义 '============================================================================== ======= Option Explicit ' 强制显式声明 Dim ComSwitch As Boolean ' 串口开关状态判断 Dim FileData As String ' 要发送的文件暂存Dim SendCount As Long ' 发送数据字节计数器 Dim ReceiveCount As Long ' 接收数据字节计数器Dim InputSignal As String ' 接收缓冲暂存 Dim OutputSignal As String ' 发送数据暂存 Dim DisplaySwitch As Boolean ' 显示开关 Dim ModeSend As Boolean ' 发送方式判断

Dim Savetime As Single ' 时间数据暂存延时用Dim SaveTextPath As String ' 保存文本路径 ' 网页超链接申明 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub CloseCom() '关闭串口 On Error GoTo Err If MSComm.PortOpen = True Then MSComm.PortOpen = False ' 先判断串口是否打 开,如果打开则先关闭 txtstatus.Text = "STATUS:COM Port Cloced" ' 串口状态显示 mnuconnect.Caption = "断开串口" cmdswitch.Caption = "打开串口" 'ImgSwitch.Picture = LoadPicture("f:\我的VB\串口调试软件\图片\guan.jpg") ' 显示串口已经关闭 的图标 ImgSwitchoff.Visible = True ImgSwitchon.Visible = False Err: End Sub Private Sub UpdateStatus() If MSComm.PortOpen Then StatusBar1.Panels(1).Text = "Connected" mnuautosend.Caption = "自动发送" mnuconnect.Caption = "断开串口" Else StatusBar1.Panels(1).Text = "断开串口" mnuautosend.Caption = "disautosend" mnuconnect.Caption = "打开串口" End If StatusBar1.Panels(2).Text = "COM" & https://www.360docs.net/doc/62856756.html,mPort StatusBar1.Panels(3).Text = MSComm.Settings If (OutputAscii) Then StatusBar1.Panels(4) = "ASCII" Else StatusBar1.Panels(4) = "HEX" End If ' On Error GoTo Err If ChkAutoSend.Value = 1 Then ' 如果有效则,自动发送

VisualCMFC入门教程版

V i s u a l C M F C入门教 程版 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

Visual C++MFC入门教程目录 +-- 第一章 VC入门 |------ |------ |------ |------ |------ +-- 第二章图形输出 |------ |------ |------ |------ |------ |------ +-- 第三章文档视结构 |------ |------ |------ |------ |------ |------ +-- 第四章窗口控件 |------

|------ |------ |------ |------ |------ |------ |------ |------ |------ |------ |------ |------ |------ +-- 第五章对话框 |------ |------ |------ |------ |------ |------ |------ |------ |------ +-- 第六章网络通信开发

|------ +------ 《》闻怡洋/文 如何学好VC 这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下: 1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数。 3、一定要理解MFC中消息映射的作用。 4、训练自己在编写代码时不使用参考书而是使用Help Online。 5、记住一些常用的消息名称和参数的意义。 6、学会看别人的代码。 7、多看书,少买书,买书前一定要慎重。 8、闲下来的时候就看参考书。 9、多来我的主页。^O^ 后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。 此外我将一些我在选择参考书时的原则: 对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生击。?

Pintos调试心得

Pintos调试心得 一、如何用GDB调试内核: Ctrl+Alt+F1打开终端,cd切换到你的pintos/src/threads/build目录下 输入命令pintos –gdb –run alarm-multiple(注意是双线- -,注意run前的空格)出现下面的界面:(注意uilts文件下已经编译通过,还有bochs打开终端调试) 然后,Ctrl+Alt+F2打开第二个终端登录并切换到pintos/src/threads/build目录下 输入命令pintos-gdb -tui 看到如下界面:

按enter键继续,此时为进入gdb调试控制台 输入命令target remote localhost:1234(默认端口,应该与第一个终端里显示的一致)接着输入命令file kernel.o(载入要调试的内核程序),看到如下界面: 输入y继续,这样开始调试啦 (首先自己在网上百度一下gdb常用的调试命令) break main(在main函数入口插入断点) 接着c(continue的意思跟VS、VC++中的调试命令对应) 看到如下界面

注意划红线部分 输入n(执行下一步,不会进入函数体内部,step单步运行命令会进入函数内部)然后大家可以在第一个终端里查看运行结果。比如我在第79行添加了一行 Ctrl+Alt+F1打开第一个终端可以看到执行结果 接下来自己慢慢探索吧,感受一下gdb调试器的强大之处。 下面介绍一下我对pintos的理解 二、Pintos内部函数调用 内核加载完成后,进入main函数(pintos主程序) 开始boot bss_init (); 初始化BSS,(BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS 段会自动清0。) argv = read_command_line ();//读取命令行 argv = parse_options (argv);//分析命令行

展讯工具使用

展讯工具使用 1.校准工具CFT A B C D E A : 选择测试机种 B : 将所有的勾打上,记录测试数据 C : Log处可随意选择本机目录,用于存储测试的纪录。FDL处必须选择展讯正式发布给工厂的软件包中的Fdl_amd.bin文件,对于6600M平台来说,FDL不需要,NV处必须选择展讯正式发布给工厂软件包中NV_Parameters目录下的NVitem_release.prj文件; D : 校准用的项目 F : 相关的FT测试数据,在校准时将所有勾去除 2.DOWNLOAD 程序

根据不同的项目导入FDL , BOOTLOADER ,PS ,MMIRES,NV BOOTLOADER , PS ,MMI, 在DOWNLOAD 时候可以不选,FDL必须选上 地址选项PRODUCT为NAND,相关的地址与底层有关

NAND FLASH选项为SMALL PAGE REPARTITION SETTING 默认为2 。 校准数据保留,将backup calibration 打上将保留全部nv数据3.Mobile test 使用说明

Calibration 说明: 1) 做Calibration 之前,首先要确保手机进入“Calibration mode ”,如果不是,要点击 按钮①进入校准模式(目前不支持)。 2) 接着点击按钮④,连通DSP 与RF 之间的通路。 3) 下一步选择手机的工作频段,共有五种:EGSM900,DCS1800, EGSM-DCS-DUALBAND ,PCS1900,GSM850(在不同的频段arfcn,txpwr lv 有不同的数值),选择好之后点击按钮⑥即可设置好工作频段。进行了2、3步的操作后就可以进行发射或接收的操作了。 4) 点击按钮③可以开发射,它有两个参数:afc,dac 。在DCXO 下有afc,dac 两个参数, 在TCXO 下有dac 一个参数(DCXO ,TCXO 通过⑧来选择)。执行该步操作可以实现AFC 的操作。 5) 按钮②可设置发射时的factor 值。再点击按钮4就可以实现APC 的操作。 6) 按钮⑦可做接收,在这之前要先设置好RX 的各值:type,gain ind,gain val,rach ab. 在Result ⑨处显示RSSI 的值。执行该步操作可以实现AGC 的操作。 7) 选中Multi Ramp(⑤处) ,即可设置所需PA parameter 和Ramp Up Num 两个参数。 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨

串口调试助手使用方法

串口调试助手使用方法 你可以试试串口监控器,一个功能强大,非常易用的软件。 串口监控器是一个免费的多功能串口通讯监控软件,它能够多种方式显示,接收,分析通讯数据;能够以多种灵活方式发送数据;功能强大,操作简便,在串口通讯监控,设备通讯测试中,能够有效提高工作效率。 主要功能如下: 接收数据: 1. 以十六进制方式显示接收到的数据。 2. 以字符方式显示接收到的数据。 3. 数据帧自动识别,分行显示。 4. 接收数据自动换行设置。 5. 显示或隐藏数据帧的接收时间。 6. 自动清除,自动保存接收到的数据。 7. 接收数据个数计数。 发送数据: 1. 十六进制方式发送数据。 2. 字符串方式发送数据。 3. 发送“发报窗口”当前光标行的数据帧。 4. 循环发送“发报窗口”当前光标行的数据帧。 5. 循环发送“发报窗口”固定行的数据帧。 6. 循环依次发送“发报窗口”的多行数据帧。(设置起始行,行数) 7. 触发发送,接收到“发报窗口”某一行数据,触发发送“发报窗口”另一行数据。 8. 发送数据个数计数。 实用增强功能: 1. 强大易用的进制转换功能。 2. 智能识别当前光标处数据帧的行号,“字符”或“十六进制数”的个数。 3. 智能计算当前选择的“字符”或“十六进制数”的个数。 4. 强大的数据查找功能。 5. 定时保存,定时清除数据。 6. 根据自己的喜好,灵活变换操作界面。

应用场合: 1. 截取和分析设备之间通讯数据流。 2. 串行外围设备硬件开发。 3. 串行设备驱动程序开发。 4. 调试和测试设备和设备之间的串行通讯过程。 5. 记录和分析RS232/422/485通信过程。 6. 模拟某设备通讯过程,对另外设备进行通讯测试。

展讯平台软件调试介绍图文..doc

展讯平台软件调试介绍Spreadtrum 7/21/2009 培训目的 ?能够使用展讯提供的调试工具对开发中的问题进行调试 ?能够分析几种常见ASSERT 主要内容

展讯调试工具简介调试方法 展讯调试工具简介主要的调试工具有: ?Dloader ?NVEditor ?Channel Server ?Logel ?Phone Tester ?DSP Log Dloader(1 功能:下载程序

设置界面: 双击可以选择下载文件路径 选择端口 选择项目 选择下载速率 制作打包文件 选择是否下载 Nand Flash下载配置: 大小页选择分区策略选择分区策略?始终分区 ?出现不兼容分区

时停止下载 ?出现不兼容分区,使用Flash中原有分区进行下载?出现不兼容分区,使用FDL中的分区方式进行分区注:此配置项只对NAND FLASH有效 备份信息配置: 将NV保存到本地 选择需要保留的信息 正在下载: 下载成功: 下载失败: Dloader(4

打包文件特别说明: 展讯升级工具中使用打包文件来进行升级操作,打包文件中不仅包含了所有的下载文件,还包含了下载项目的地址信息,这样可以降低产线升级工具配置出错的可能性,同时简化了操作。 打包文件的制作方法:DloadeR 在配置好所有的配置项后,点击左图中的按钮,然后按照提示即可完成打包文件的制作。 点击这个按钮 进行打包操作 展讯调试工具简介 ?Downloader ?NVEditor ?Channel Server ?Logel ?Phone Tester

?DSP Log 功能: ?对fixed NV参数进行读取,编辑,保存,下载?擦除NV ?从手机中读出NV Item

常用通讯测试工具使用

常用通讯测试工具 鉴于很多MCGS用户和技术人员对通讯测试工具并不很熟悉,本文档将针对实际的测试情况,对串口、以太网通讯调试过程中所涉及到的常用的测试软件进行相关的讲解。 1. 串口测试工具: 串口调试工具:用来模拟上下位机收发数据的串口工具,占用串口资源。如:串口调试助手,串口精灵,Comm等。 串口监听工具:用来监听上下位机串口相关操作,并截获收发数据的串口工具。不占用串口资源。如:PortMon,ComSky等。 串口模拟工具:用来模拟物理串口的操作,其模拟生成的串口为成对出现,并可被大多数串口调试和监听软件正常识别,是串口测试的绝好工具。如:Visual Serial Port等。 下面将分别介绍串口调试助手、Comm、PortMon和Visual Serial Port的使用。

1.1. 串口调试助手: 为最常用的串口收发测试工具,其各区域说明及操作过程如下: 串口状态 打开/关闭串口 十六进制/ASCII 切换 串口数据 接收区 串口参数 设置区 串口数据 发送区 串口收发计数区 发送数据功能区 保存数据功能区 操作流程如下: ? 设置串口参数(之前先关闭串口)。 ? 设置接收字符类型(十六进制/ASCII 码) ? 设置保存数据的目录路径。 ? 打开串口。 ? 输入发送数据(类型应与接收相同)。 ? 手动或自动发送数据。 ? 点击“保存显示数据”保存接收数据区数据到文件RecXX.txt。 ? 关闭串口。 注:如果没有相应串口或串口被占用时,软件会弹出“没有发现此串口”的提示。

1.2. PortMon 串口监听工具: 用来监听上下位机串口相关操作,并截获收发数据的串口工具。不占用串口资源, 但在进行监听前,要保证相应串口不被占用,否则无法正常监听数据。 连接状态 菜单栏 工具栏 截获数据显示区 PortMon 设置及使用: 1). 确保要监听的串口未被占用。 如果串口被占用,请关闭相应串口的应用程序。比如:要监视MCGS 软件与串口1设备通讯,应该先关闭MCGS 软件。 说明:PortMon 虽不占用串口资源,但在使用前必须确保要监听的串口未被占用,否则无法进行监视。 2). 运行PortMon,并进行相应设置。 ? 连接设置: 在菜单栏选择“计算机(M)”->“连接本地(L)”。如果连接成功,则连接状态显示为“PortMon 于\\计算机名(本地)”。如下图:

串口调试助手VC++6.0程序

串口调试助手源程序 及编程详细过程 作者:龚建伟 2001.6.20 可以任意转载,但必须注明作者和说明来自https://www.360docs.net/doc/62856756.html,,不得作为商用 目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件消息处理函数OnComm() 6.打开和设置串口参数 7.发送数据 在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。(也许本文过于详细,高手就不用看) 开始吧: 1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,

dsp调试can一点心得

dsp调试can一点心得 调试的过程也就是学习的过程,无前人领路,只有自己摸索, 不免要耗费更多的时间和精力,从看书到调试到完全调通,用了差不多一星期的时间,当然不是全满,嘿嘿,偶尔还是要玩玩,在这里总结一下,脑子不好用,日后必定就忘记了这宝贵的经历。 1:如何配置can的问题 首先要按照书上所讲的做基本配置,(ECanaShadow == ECanaRegs) GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1; //定义为can功能 GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1; //定义为can功能ECanaShadow.CANTIOC.bit.TXFUNC = 1; //定义为can发送功能 ECanaShadow.CANRIOC.bit.RXFUNC = 1; //定义为can接收功能 然后再不使能邮箱的情况下作如下设置:ECanaRegs.CANME.all = 0; //不使能邮箱ECanaRegs.CANMD.all = 0xFFFF0000; /*0~15 is TX,16~31 is RX*/ 设置邮箱ID号: /*发送邮箱的ID号*/ ECanaMboxes.MBOX0.MID.all = 0xa0000000; //mid.aam=1 自动应答模式ECanaMboxes.MBOX1.MID.all = 0x9555AAA1; ECanaMboxes.MBOX2.MID.all = 0x9555AAA2; ECanaMboxes.MBOX3.MID.all = 0x9555AAA3; ECanaMboxes.MBOX4.MID.all = 0x9555AAA4; ECanaMboxes.MBOX5.MID.all = 0x9555AAA5; ECanaMboxes.MBOX6.MID.all = 0x9555AAA6; ECanaMboxes.MBOX7.MID.all = 0x9555AAA7; ECanaMboxes.MBOX8.MID.all = 0x9555AAA8; ECanaMboxes.MBOX9.MID.all = 0x9555AAA9; ECanaMboxes.MBOX10.MID.all = 0x9555AAAA; ECanaMboxes.MBOX11.MID.all = 0x9555AAAB; ECanaMboxes.MBOX12.MID.all = 0x9555AAAC; ECanaMboxes.MBOX13.MID.all = 0x9555AAAD; ECanaMboxes.MBOX14.MID.all = 0x9555AAAE; ECanaMboxes.MBOX15.MID.all = 0x9555AAAF; /*接收邮箱的ID号*/ ECanaMboxes.MBOX16.MID.all = 0x80000000; ECanaMboxes.MBOX17.MID.all = 0x9555AAA1; ECanaMboxes.MBOX18.MID.all = 0x9555AAA1; ECanaMboxes.MBOX19.MID.all = 0x9555AAA1; ECanaMboxes.MBOX20.MID.all = 0x9555AAA1; ECanaMboxes.MBOX21.MID.all = 0x9555AAA1; ECanaMboxes.MBOX22.MID.all = 0x9555AAA1; ECanaMboxes.MBOX23.MID.all = 0x9555AAA1; ECanaMboxes.MBOX24.MID.all = 0x9555AAA1; ECanaMboxes.MBOX25.MID.all = 0x9555AAA1;

串口调试助手使用规范V15.01(试用)

串口调试助手使用规范(试用) ——截取指令方法
版本:V15.01 日期:2015.0128 类别:APP 使用规范
1
串口调试助手使用规范(试用) 截取指令方法
广州市英沙电子系统有限公司 2015-01-28 发布

串口调试助手使用规范(试用) ——截取指令方法
版本:V15.01 日期:2015.0128 类别:APP 使用规范
2
目 录
1 引言 ................................................................................................................................................................................... 3 2 使用前准备........................................................................................................................................................................ 3 3 串口调试助手及其安装 ................................................................................................................................................... 3 4 串口线与设备的物理连接 ............................................................................................................................................... 4 5 串口调试助手截取指令步骤 ............................................................................................................................................ 4 6 分析截取的指令............................................................................................................................................................... 6?

很好的串口调试工具--ComTools

一个很好的串口调试工具,可以根据自己的需求设置参数。界面也很美观。ComTools是功能齐全,操作方便的串口调试工具,是单片机通讯开发的最佳助 手! 本软件完全免费,无任何功能时间限制。 主要功能如下: 1.可设置各种通讯速率、奇偶校验、数据位和停止位; 2.可分别设置ASCII码(包括中文)或十六进制数据格式的发送模式或接收模式; 3.能将接收数据保存成文本文件,便于观察分析; 4.自动保存设置参数,无需每次重新设置; 5.可以设置16条定时自动发送的数据,以及每条数据发送后的延时时间; 6.可以同时监控2个串口,利用特制电缆可监听2个串口设备之间的通讯过程; 7.发送数据时,可自动计算并添加和校验发送; 8.DTR自动控制是为了方便RS485通讯测试而添加的功能; 9.方便的查找功能,使你可以轻松搜索接收文本框中的字符; 10.使用快捷键可快速调用最近五次发送的不同数据。 使用帮助 1.主窗口上12个指示灯分别代表两个串口以及DTR,RTS,CTS,DSR,CD各信号当前状态。 绿色代表“有效”状态,红色代表“无效”状态。 点击左边的一个'端口状态'指示灯,可以打开和关闭相应串口。 点击'DTR'或'RTS'状态指示灯,可以切换'DTR'线或'RTS'线的当前有效或无效状态。 2.选定'数据记录'功能后,通讯过程中两个串口接收的数据都将按HEX格式写入指定的文本文件中。 您可以修改默认的文件名称。

3.在发送文本框输入你要发送的数据,点击按钮"发送[PortA]"数据将从端口PortA发送, 点击按钮"发送[PortB]"数据将从端口PortB发送。 本软件启动时,串口状态默认为关闭,点击发送按钮将自动打开相应串口。 发送数据前,可以选择发送模式为"ASC"或"HEX"。 另外,也可以单独设置接收模式为"ASC"或"HEX"。 4.打开"串口设置"对话框,可以分别设置PortA 和 PortB 的串口参数。 格式如下: "BBBB,P,D,S" BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。 本软件的缺省值是:"9600,N,8,1" 合法的波特 率:110,300,600,1200,2400,9600,14400,19200,28800,38400,56000,128000,25 6000 合法的奇偶校验值: "E" 偶数 (Even) ; "M" 标记 (Mark) ; "N" 无校验(None) ; "O" 奇数 (Odd) ; "S" 空格 (Space) 合法的数据位值: 4,5,6,7,8 合法的停止位值: 1, 1.5, 2 PortA 和 PortB 的串口设置分别显示在主窗口状态栏左右两侧。 5.如果将'DTR控制'设为"YES",发送数据时DTR线将保持'有效'状态, 数据发送完毕DTR线将立即设为'无效"状态。 12个状态指示灯,每隔0.5秒刷新一次状态。 6.插入空格功能是为方便观察接收数据,打开'插入空格'功能后, 每接收一个字节数据将在接收文本框插入一个空格。

visualc期末考试试题

湖南城市学院 G 卷 Windows程序设计考试专业:软件工程、信息管理与信息系统 一、单项选择题(每小题2分,共36分) 1、对于类中定义的成员,其隐含访问权限为( B ) A、protected B、private C、public D、static 2、一个类的友元函数或友元类能够通过成员操作符访问该类的(B ) A、私有成员 B、所有成员 C、公用成员 D、保护成员 3、下面说法正确的是( A ) A、构造函数可以重载,析构函数不能重载。 B、构造函数不能重载,析构函数可以重载。 C、构造函数可以重载,析构函数也可以重载。 D、构造函数和析构函数都不可以重载。 4、类AB的缺省构造函数和析构函数是(A ) A、AB( )和~AB( ) B、AB(int)和~AB( ) C、AB( )和~AB(delete ) D、AB( )和int~AB( ) 5、在C++中,若对函数未加说明,则函数的隐含类型是(A ) A、int B、double C、void D、char 6、已知类A是类B的友元,类B是类C的友元,则( D ) A、类A一定是类C的友元 B、类C一定是类A的友元 C、类C的成员函数可以访问类B的对象的任何成员 D、类A的成员函数可以访问类B的对象的任何成员 7、下列说法中正确的是( B ) A、类定义中只能说明函数成员的函数头,不能定义函数体 B、类中的函数成员可以在类体中定义,也可以在类体之外定义 C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中 D、在类体之外定义的函数成员不能操作该类的私有数据成员 8、以下不属于成员函数的是( B ) A、静态成员函数 B、友元函数 C、构造函数 D、析构函数 9、对于消息队列的描述正确的是( D ) A、在Windows中只有一个消息系统,即系统消息队列。消息队列是 Icefish Corporation 一个系统定义的数据结构,用于临时存储消息。 B、系统可从消息队列将信息直接发给窗口。另外,每个正在Windows 下运行的应用程序都有自己的消息队列。 C、系统消息队列中的每个消息最终都要被USER模块传送到应用程 序的消息队列中去。应用程序的消息对列中存储了程序的所有窗口的全部消息。 D、以上都正确 10、一个视图对象能连接(A)文档对象,一个文档对象能连接() 视图对象。 A、一个,多个 B、多个,一个 C、一个,一个 D、多个,多个 11、MFC类库中的类按层次关系可知,CStatic 的直接父类为( B ) A、CObject B、CWnd C、CcmdTarget D、CFrameWnd 12、可以利用控件的(C )属性和Tab键顺序来为控件分组。 A、ID B、Tab stop C、Group D、Caption 13、根据对话框的行为性质,对话框可以分为两类:(B ) A、对话框资源和对话框类 B、模式对话框和非模式对话框 C、对话框资源和对话框模板 D、消息对话框和模式对话框 14、以下控件中,(C)没有Caption属性。 A、按钮 B、群组框 C、编辑控件 D、静态控件 15、菜单项助记符前用(B )引导。 A、% B、& C、# D、$ 16、更新菜单状态的消息是(C )。 A、WM_COMMAND B、UPDATE C、ON_UPDATE_COMMAND_UI D、INV ALIDATE 1

win7下串口调试工具超级终端和secureCRT

1.win7下使用超级终端 我们知道在XP系统中,超级终端是系统自带的工具,但是在win7中,这一工具系统不再附带。但是这款工具在win7中确实是可以使用 的。使用方法如下: 1.在XP系统中C:ProgramFiles->Windows NT复制文件 hypertrm.exe到win7系统中的C:Windows->system中 2.在XP系统中C:Windows->System32赋值文件hypertrm.dll到 win7系统中的C:Windows->system中 3.在XP系统中C:Windows->System32赋值文件hticons.dll到win7 系统中的C:Windows->system中 其实完成第一步和第二步就可以使用了,第三步的文件只是图标文件,但是有了使用起来更好。可能很多人手边上没有XP系统,我将在 附件中上传这几个文件,供大家下载使用。 赋值完成之后的C:Windows->system文件夹截图如下:

完成上述步骤后,打开开始菜单,找到附件选项,我们就能看见超级终端了: 点击上图标记地方的文件,我们就可以在win7下使用超级终端了。 2.使用secureCRT调试串口的步骤: 1.打开secureCRT之后

点击上图标记处,开始进行连接。 2.点击下图中标记处,新建一个连接

3.在下图的协议选择框里,选择serial,串行协议,然后下一步

4.在下图对串口进行串口号,波特率等的设置,然后下一步 5.给所建的串口连接起一个名字,然后下一步 点击完成,至此我们就新建了一个串口连接。 我们可以看见我们刚才新建的串口的连接:

展讯平台Trace工具使用

展讯平台Trace 工具使用 对于专业的测试人员,测试应该始终接上log 线进行测试,这样就会尽可能保留出错时候的信息,这些信息不一定对于每一类的bug 都有用,但对于一些难重现的问题有可能这样的习惯就记录下了一些重要的Debug 信息,给软件人员解决问题极大的帮助。 测试人员遇到ASSERT 的时候,一定要尽可能详细的记录下操作步骤,测试此问题的重现概率,同时记录下全部的ASSERT 信息,关于ASSERT 信息详见本文档3.2.1。 需要注意的是,测试人员一定要用对应版本的ChannelServer 和log 工具进行测试,否则会导致底层的一些消息的解析不正确,给解决一些和底层有关的bug 带来困难。 1、ChannelServer 的设置使用 ? 运行ChannelServer.exe ? 点击右下角托盘中的ChannelServer 小图标 ? 在弹出的对话框中的进行配置(成功后,小图标变绿色) 图一 2、Logel –使用说明 ? 选择Server — IP Setting 配置ChannelServer 的IP 地址和端口 ――和ChannelServer 中的设置保持一致(一般不需要修改) ? 连结到ChannelServer ,并开始记录 ――需要先运行ChannelServer 以下为刚开始启动Logel 工具的界面:

图二 以下为正在抓Trace 信息的界面: 图三 测试版本一定要用debug 版本,release 版本遇到assert 会自动重启,debug 版本会断在程序assert 的地方,这样可以获得assert 时的现场信息,以便于debug 。当然,重要版本根据情况也应该同时用release 版本做一些各个功能模块的自动重启的测试,电流测试等,以保证release 版本也没有问题。 测试过程中遇到assert ,不要拔下电池,打开ChanelServer.exe 和Logel.exe , 连上手机,选择logel 里面菜单 Assert / Open Assert Frame , 打开一个调试窗口,在此窗口下输入0,会出现了下图所示的信息(如果是测试的时候连着log ,此窗口会自动弹出):

大傻串口调试软件2.0 使用手册

ComMonitor大傻串口调试软件 使用说明书 (2.0) 编写:大傻 Email: david_parkins@https://www.360docs.net/doc/62856756.html, 大傻工作室 二零零六年三月

目录 一、介绍 (2) 二、软件界面 (3) 2.1 软件主界面 (3) 2.2 最大化界面 (4) 2.3窗口置顶 (4) 2.4关于程序 (5) 三、显示区控制 (7) 3.1显示发送 (7) 3.2帧换行 (7) 3.3显示保存发送和接收时间 (8) 3.4关键字过滤 (9) 3.5 保存显示区内容 (9) 四、发送区数据发送控制 (11) 4.1 发送区数据格式说明 (11) 4.2手动控制 (11) 4.3自动发送 (12) 4.4 校验码计算 (12) 五、轮发功能 (14) 5.1 发送区轮发 (14) 5.2文件轮发 (14) 5.3定时轮发 (16) 5.4 帧回应轮发 (17) 六、常见问题索引 (19) 6.1 串口不能打开 (19) 6.2 接收到的数据不对 (19) 6.3 接收区没有显示 (19) 6.4 自动发送为什么没有发送数据 (19) 6.5 谁是大傻 (19) 6.6 如何联系大傻 (19) 6.7 如何获得最新的ComMonitor软件 (19) 6.8 关于ComMonitor软件源代码 (20)

一、介绍 ComMonitor是大傻两年前写的一个软件,当初由于工作的原因,常常需要调试串口通讯,又没有找到合适的串口调试软件,就在两年前的十一放假期间自己写了一个。之后一直都是自己和同事使用。后来很多同事反映很好用,建议我放到网上共享。再后来又根据同事和网友的建议,进行了一些修改,就形成了今天的版本。 ComMonitor追求的是方便易用,能调试大多数的串口通讯应用。所以,在界面上都没有做什么处理。当初写这个软件的时候,参考了串口调试助手,但又根据自己工作中的需求,添加了更多的功能。具体来讲,它除了具备一般的串口调试工具的功能以外,还具有以下特别之处: 1、支持多达20个串口,对于使用多串口卡或虚拟串口的用户是很必要的; 2、加入了接收显示与保存的关键字过滤功能; 3、具备接收显示与保存时帧换行功能,40ms未受到数据,认为一帧结束; 4、具有记录发送和接收时间的功能; 5、支持3个独立的发送区; 6、3个发送区可以以定时或响应等两种方式进行轮发; 7、具有计算CRC16、CRC8等校验码的功能; 8、自动保存上一次使用的端口配置; 9、自动保存上一次发送区的数据; 10、具有文件按行发送轮发功能,发送方式也可以采用定时和响应两种方式; 11、轮发响应方式中,加入了超时判断,和自定义多次重发功能; 12、所有参数和数据支持运行时改变,不需要重新启动; ComMonitor设计伊始就是针对调试串口设备通讯的。所以,上面的很多特点为调试各种带串口通讯的智能设备提供了极大的方便。ComMonitor也可以用来模拟带串口通讯的智能设备,与您的上位机监控系统进行通讯。ComMonitor 虽然还只是一个小的工具软件,但他是大傻工作经验、一些想法和辛勤劳动的结晶。希望能给大家的工作带来方便。如果您对ComMonitor有什么建议,也请不吝赐教。 在ComMonitor以后的版本中,大傻还打算做一些升级,包括提供一些更实用的功能,界面美化等等。为了保证大家能及时拿到最新版的ComMonitor软件,请大家发email给大傻告诉大傻你的email。

VisualCMFC简要介绍(外文翻译)

Introduction to MFC Programming with Visual C++ Version 6.x by Marshall Brain Visual C++ is much more than a compiler. It is a complete application development environment that, when used as intended, lets you fully exploit the object oriented nature of C++ to create professional Windows applications. In order to take advantage of these features, you need to understand the C++ programming language. If you have never used C++, please turn to the C++ tutorials in the C/C++ Tutorials page for an introduction. You must then understand the Microsoft Foundation Class (MFC) hierarchy. This class hierarchy encapsulates the user interface portion of the Windows API, and makes it significantly easier to create Windows applications in an object oriented way. This hierarchy is available for and compatible with all versions of Windows. The code you create in MFC is extremely portable. These tutorials introduce the fundamental concepts and vocabulary behind MFC and event driven programming. In this tutorial you will enter, compile, and run a simple MFC program using Visual C++. Tutotial 2 provides a detailed explanation of the code used in Tutorial 1. Tutorial 3 discusses MFC controls and their customization. Tutorial 4 covers message maps, which let you handle events in MFC. What is the Microsoft Foundations Class Library Let's say you want to create a Windows application. You might, for example, need to create a specialized text or drawing editor, or a program that finds files on a large hard disk, or an application that lets a user visualize the interrelationships in a big data set. Where do you begin A good starting place is the design of the user interface. First, decide what the user should be able to do with the program and then pick a set of user interface objects accordingly. The Windows user interface has a number of standard controls, such as buttons, menus, scroll bars, and lists, that are already familiar to Windows users. With this in mind, the programmer must choose a set of controls and decide how they should be arranged on screen. A time-honored procedure is to make a rough sketch of the proposed user interface (by tradition on a napkin or the back of an envelope) and play with the elements until they feel right. For small projects, or for the early

相关文档
最新文档