搜索
bottom↓
回复: 225

玩串口通信的一定要看了--自己写的串口调试助手,开源共享

  [复制链接]

出0入0汤圆

发表于 2009-6-10 22:05:43 | 显示全部楼层 |阅读模式
声明:不得用于商业用途.
基本功能都有了,大家可以改进,如果有什么好的建议欢迎留言或与我联系.
我的QQ:570733482
VC做的,难看懂的地方我都注释了,还有不明白的欢迎跟帖.有些地方如果处理不当,欢迎指正.
用到一个DLL库,过几天也会公开出来,大家不用担心.
来个帖图吧,呵呵,习惯.

运行时图片 (原文件名:Pic.jpg)
以下是工程文件与源码的下载
工程文件与源码ourdev_452478.rar(文件大小:279K) (原文件名:EasySerialAssistant.rar)

出0入0汤圆

发表于 2009-6-10 22:52:43 | 显示全部楼层
支持!

出0入0汤圆

发表于 2009-6-10 23:07:02 | 显示全部楼层
支持!
小声问下,你的《从零开始学VC系列教程》写完了没有吖?

出0入0汤圆

发表于 2009-6-10 23:08:16 | 显示全部楼层
先顶下

出0入0汤圆

 楼主| 发表于 2009-6-10 23:16:02 | 显示全部楼层
居然还有人记得<从零开始学VC系列教程>,真是非常感谢,也非常荣幸. 这个教程也还是想写的,并且一直在写,主要是最近忙得不行,每天弄到晚上十一二点,所以一直放在心上而力不足.而这个串口助手也只是用了一天不到的时间来写,匆匆而为之,希望还能带起大家学VC的兴趣,只要有时间,一定会继续写下去.

出0入0汤圆

发表于 2009-6-10 23:21:29 | 显示全部楼层
不错,我也写了个串口调试工具eagleCom,免费+绿色的。
不过是用BCB写的。

出0入0汤圆

发表于 2009-6-10 23:42:21 | 显示全部楼层
支持一下

出0入10汤圆

发表于 2009-6-11 00:01:18 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2009-6-11 14:42:19 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2009-6-11 14:49:22 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2009-6-11 15:25:15 | 显示全部楼层
MFC的,要MARK一下

出0入0汤圆

发表于 2009-6-11 16:23:58 | 显示全部楼层
谢谢LZ,期待LZ的VC教程,很精彩!

出0入0汤圆

发表于 2009-6-11 16:28:34 | 显示全部楼层
大家都在造轮子。

我用C#也造了一个。

出0入0汤圆

发表于 2009-6-11 16:28:38 | 显示全部楼层
谢谢楼主共享的资料,等忙过了抽空学习下。

出0入0汤圆

发表于 2009-6-11 16:47:41 | 显示全部楼层
一次能发多少字节

出0入0汤圆

发表于 2009-6-11 17:07:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-11 18:32:24 | 显示全部楼层
感谢楼主分享!

出0入0汤圆

 楼主| 发表于 2009-6-11 19:04:42 | 显示全部楼层
回14楼。现在串口缓冲区为2048字节,也就是说如果不及时读出来,一次最多接收2048个字节,如果读出来就可以随便发了,需要可以自己定义更大一点。实际上在接收过程中也处理数据,读到另一个缓冲,这个缓冲有0xffff字节。接收过程用到一个循环队列存储数据

出0入0汤圆

发表于 2009-6-11 19:57:19 | 显示全部楼层
先标记一下,有空研究研究。

出0入0汤圆

发表于 2009-6-11 22:02:16 | 显示全部楼层
我也写了个免费的串口调试软件eagleCom,BCB写的.

出0入0汤圆

发表于 2009-6-11 22:17:35 | 显示全部楼层
正打算在写个串口loader,下下来参考下!

出0入0汤圆

发表于 2009-6-11 22:26:45 | 显示全部楼层
LZ,能否把ThreadSerial.lib的代码共享一下呢!我上传一个Tera Term Pro的源码!Tera Term Pro源码ourdev_452664.zip(文件大小:308K) (原文件名:ttsrcp23.zip)

出0入0汤圆

发表于 2009-6-11 22:29:48 | 显示全部楼层
支持一下。

出0入0汤圆

发表于 2009-6-11 22:37:01 | 显示全部楼层
LZ发的帖子都很实用啊

出0入0汤圆

发表于 2009-6-12 08:03:19 | 显示全部楼层
对串口的关键操作代码没有,楼主能不能公开ThreadSerial.lib的代码?

出0入0汤圆

 楼主| 发表于 2009-6-12 12:31:11 | 显示全部楼层
ThreadSerial.DLL的代码一定公开的,没有一起公开是有原因的,ThreadSerial是多线程访问串口的封装,代码很长也比较复杂,如果一起发布出来,估计大家一看ThreadSerial就不会想学了,因为确实不容易看明白,所以还是希望大家先把现在发布的应用层的东西弄明白了,ThreadSerial就自然看得明白了。
公布源码是让大家共同学习研讨的,而不是直接编译过了就拿来用,如果这样,还不如直接下载一个应用程序就OK了,呵呵。

出0入0汤圆

发表于 2009-6-12 12:37:15 | 显示全部楼层
何谓线程访问?支持多线程么?

多年前,用api实现过串口多写,也封装到dll中去过,但不明白你的线程访问是什么意思?

出0入0汤圆

 楼主| 发表于 2009-6-12 12:59:15 | 显示全部楼层
呵呵,就是多线程了,少打几个字缩写了一下.楼上一定高手了,还望多多指教.

出0入0汤圆

发表于 2009-6-12 13:13:14 | 显示全部楼层
我写eagleCom过程中,主要有以下几个难点,想与楼主探讨\交流:
1\枚举串口,需要枚举系统中存在的串口.我是参考网上一个EnumSerial的源码.
2\中文处理,接收时,有可能一个中文的2个字节被分成2次接收到,需要处理,否则会在Memo控件中显示成乱码.我搞的比较繁琐,虽然速度还是满足要求.
3\多线程,接收/发送在独立的线程,而显示等界面在主线程.
4\界面的排布,腾出最大的屏幕给接收显示.
5\USB串口线拔除后死机的问题.聂小猛的sscom32很好用,但是拔除USB串口线后,会导致死机,必须重启.不知有什么好的解决方法.
  我的eagleCom以前做出了拔除后自动关闭串口,再插上又打开的效果.不过会导致兼容性问题.后来去掉了.

出0入0汤圆

发表于 2009-6-12 18:33:32 | 显示全部楼层
我最关心的就是楼主没有一起发出的ThreadSerial是多线程访问串口的封装,不知道能不能发到我的邮箱?

alexmayer@sina.com

先谢啦。

出0入0汤圆

发表于 2009-6-12 18:38:45 | 显示全部楼层
我写eagleCom过程中,主要有以下几个难点,想与楼主探讨\交流:
1\枚举串口,需要枚举系统中存在的串口.我是参考网上一个EnumSerial的源码.

===============================================================================
从注册表里可以获得串口列表,然后可以尝试打开,没有成功的估计是被内部占用。

2\中文处理,接收时,有可能一个中文的2个字节被分成2次接收到,需要处理,否则会在Memo控件中显示成乱码.我搞的比较繁琐,虽然速度还是满足要求.

===============================================================================
这个我也很头疼,一般靠协议来避免,比如有明显的包头、包尾,收完整后再处理。不知道楼主有没有好办法,我想看他的dll源码的目的也在此,比方ModBus的RTU模式,你就需要用超时来确定接收完整。

出0入0汤圆

发表于 2009-6-12 18:41:51 | 显示全部楼层
我也写了一个简单的串调试助手,相当简单,我是用定时器去定时收串口数据,不知道如果去实现接收事件,而且还没有完善它

出0入0汤圆

 楼主| 发表于 2009-6-12 18:43:01 | 显示全部楼层
回28楼:
1.串口打开是差不多了。
2.中文接收跟其它是一样处理的,虽然中文是两个字节的,但其实终端发过来就是完整数据了,直接显示就行,我是直接接收数据,然后直接显示,不管是中文还是英文.但要考虑超时时间问题.因为我的显示线程总是滞后一点点的,所以数据一般都完整收到了
3.显示我是放在另一个线程的,这样就不会造成大量的,短时的发送数据时软件好像是变得像死机一样。
5.这个问题我还没注意,因为这个东东只用了一天时间来写,很多地方还没考虑到,呵呵,大家一起修正。。

回29楼:
读写线程网上源码太多了,随便抄一个都能用啊,呵呵,其实我也是借阅了一部分网上程序的,自己修改了一下,过几天就发上来,不要着急.

出0入0汤圆

发表于 2009-6-12 18:52:04 | 显示全部楼层
ding


顶顶



顶顶顶~~~~~~~~~~~~~
太好了,想学习

出0入0汤圆

发表于 2009-6-12 19:56:18 | 显示全部楼层
我正在写个SPI flash的loader,通过串口当代码,串口通信一直没有成功,参考的是Tera Term Pro的源码,郁闷中,本人PC编程比较薄弱,期望lz的串口核心库做下参考!

出0入0汤圆

发表于 2009-6-12 20:18:21 | 显示全部楼层
我觉得手头已有的串口调试助手已经非常好用,没有必要自己写这样的软件了,倒是有些项目会需要的专用的串口收发指令,写些这样的软件还实用一点。为了方便调试,我有时会花一两个小时写一个这样的程序,如果时间长,我也懒得写了,还不如把精力花在单片机的程序上。

出0入0汤圆

发表于 2009-6-12 20:46:02 | 显示全部楼层
也想搞搞这个东西..收了.支持一下LZ

出0入0汤圆

 楼主| 发表于 2009-6-12 21:48:37 | 显示全部楼层
更新一个DLL,修正USB虚拟串口拔掉后会出现错误的问题.
DLL库更新ourdev_452858.rar(文件大小:232K) (原文件名:ThreadSerial.rar)
顺便回35楼:其实做这个并不是为了用,只是为了学习.开始说了,如果是为了使用,直接从网上下载一个就行了,方便快捷,可以说还绝对会比这个好,呵呵.学单片机时候我们不也一次又一次做着网上已经有的东西吗?此外也是因为我真想不出一个更好的东西来说明串口通信了,当然也不能用一个具体项目来说明,因为具体项目还涉及到单片机的程序及通信协议,如果这个串口助手能自己理解并做出来了,估计做一个软件来收发数据应该是不会有问题了.

再说一下串口通信的协议吧.以终端是单片机为例,这是大家都关心的.
一般单片机同PC机的通信会使用大致如下的协议:起始帧+数据长+数据+校验+结束帧    接收过程允许超时控制,这样就不会死在数据接收上了.
校验方式有多种,CRC,求和,求异或,等等都是可以的..求异或比较方便,并且也只占一个字节数据.
例如.要发一个指令到上位机,可以按以下格式
起始帧     数据长     数据                     检验         结束帧
0x3c        0x03      0x01 0x02 0x03           异或值       0x0d
上位收数据时,如果收到0x3c认为下位机开始发数据了,下一个收到长度,然后等待接收指定长度字符,最后计算校验

出0入0汤圆

发表于 2009-6-12 22:52:24 | 显示全部楼层
好东西,得收藏

出10入95汤圆

发表于 2009-6-12 23:49:50 | 显示全部楼层
好一个多线程

出0入0汤圆

发表于 2009-6-13 18:49:41 | 显示全部楼层
等楼主继续……

出0入0汤圆

发表于 2009-6-13 19:11:41 | 显示全部楼层
我用C++ builder有个:Victor 串口 VCL 控件
很好用啊,也是线程读写.

出0入0汤圆

发表于 2009-6-13 22:45:04 | 显示全部楼层
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3397887&bbs_id=3041


(示意图)

出0入0汤圆

 楼主| 发表于 2009-6-13 23:34:25 | 显示全部楼层
楼上的真不错,看来这里的确藏龙卧虎啊,我得归隐山林闭门修练才行了,呵呵

出200入0汤圆

发表于 2009-6-13 23:46:28 | 显示全部楼层
MARK~~  好好学习

出0入0汤圆

发表于 2009-6-16 18:23:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-16 22:41:29 | 显示全部楼层
不错!用一下试试

出0入0汤圆

发表于 2009-6-20 14:09:34 | 显示全部楼层
楼主还会继续么?

出0入0汤圆

发表于 2009-6-20 15:02:18 | 显示全部楼层
记号一下!!!

出0入0汤圆

发表于 2009-6-21 10:39:18 | 显示全部楼层
正好学习一下VC,以后多向LZ请教

出0入0汤圆

发表于 2009-7-2 10:20:28 | 显示全部楼层
正在学习,向楼主学习....

出0入0汤圆

发表于 2009-7-2 10:29:56 | 显示全部楼层
楼主,ThreadSerial.DLL的代码公开了没有,在等待楼主...谢谢

出10入10汤圆

发表于 2009-7-2 19:59:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-7-2 21:03:31 | 显示全部楼层
顶楼主,期待楼主的《从零开始学VC系列教程》

出0入0汤圆

发表于 2009-7-2 21:11:05 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-7-10 15:12:07 | 显示全部楼层
mark,向大虾学习!

出0入0汤圆

发表于 2009-7-23 13:14:02 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2009-7-23 14:42:15 | 显示全部楼层
支持

出0入0汤圆

发表于 2009-7-23 21:13:17 | 显示全部楼层
我来追星了……
    都是高手啊!

出0入4汤圆

发表于 2009-7-23 21:22:40 | 显示全部楼层
记号。

出0入0汤圆

发表于 2009-7-23 21:32:01 | 显示全部楼层
有空也教教我写这东西啊。学习下。

出0入0汤圆

发表于 2009-7-24 10:01:59 | 显示全部楼层
十分有用,学习下,谢谢!

出0入0汤圆

发表于 2009-7-29 17:16:54 | 显示全部楼层
好东西都要顶

出0入0汤圆

发表于 2009-8-1 11:29:06 | 显示全部楼层
不能release

出0入0汤圆

发表于 2009-8-1 11:32:05 | 显示全部楼层
1>Linking...
1>EasySerialAssistant.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CComPort::~CComPort(void)" (__imp_??1CComPort@@UAE@XZ) referenced in function "public: virtual __thiscall CEasySerialAssistantDlg::~CEasySerialAssistantDlg(void)" (??1CEasySerialAssistantDlg@@UAE@XZ)
1>EasySerialAssistantDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CComPort::~CComPort(void)" (__imp_??1CComPort@@UAE@XZ)
1>EasySerialAssistantDlg.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall CComPort::Close(void)" (__imp_?Close@CComPort@@QAEXXZ) referenced in function "protected: void __thiscall CEasySerialAssistantDlg::OnDestroy(void)" (?OnDestroy@CEasySerialAssistantDlg@@IAEXXZ)
1>EasySerialAssistantDlg.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall CComPort::CComPort(void)" (__imp_??0CComPort@@QAE@XZ) referenced in function "public: __thiscall CEasySerialAssistantDlg::CEasySerialAssistantDlg(class CWnd *)" (??0CEasySerialAssistantDlg@@QAE@PAVCWnd@@@Z)
1>EasySerialAssistantDlg.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: int __thiscall CComPort::Open(int,enum CComPort::ReceiveMode,unsigned long,enum CComPort::Parity,unsigned char,enum CComPort::StopBits,enum CComPort::FlowControl)" (__imp_?Open@CComPort@@QAEHHW4ReceiveMode@1@KW4Parity@1@EW4StopBits@1@W4FlowControl@1@@Z) referenced in function "protected: void __thiscall CEasySerialAssistantDlg::OnBtnPortopen(void)" (?OnBtnPortopen@CEasySerialAssistantDlg@@IAEXXZ)
1>EasySerialAssistantDlg.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: unsigned long __thiscall CComPort::Output(void *,unsigned long)" (__imp_?Output@CComPort@@QAEKPAXK@Z) referenced in function "public: void __thiscall CEasySerialAssistantDlg::SendData(void)" (?SendData@CEasySerialAssistantDlg@@QAEXXZ)
1>EasySerialAssistantDlg.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall CComPort::SetBreakHandleFunc(void (__cdecl*)(void *,unsigned long,struct _COMSTAT))" (__imp_?SetBreakHandleFunc@CComPort@@QAEXP6AXPAXKU_COMSTAT@@@Z@Z) referenced in function "protected: virtual int __thiscall CEasySerialAssistantDlg::OnInitDialog(void)" (?OnInitDialog@CEasySerialAssistantDlg@@MAEHXZ)
1>EasySerialAssistantDlg.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall CComPort::SetReceiveFunc(void (__cdecl*)(void *,void *,unsigned long),void *)" (__imp_?SetReceiveFunc@CComPort@@QAEXP6AXPAX0K@Z0@Z) referenced in function "protected: virtual int __thiscall CEasySerialAssistantDlg::OnInitDialog(void)" (?OnInitDialog@CEasySerialAssistantDlg@@MAEHXZ)
1>.\Release/EasySerialAssistant.exe : fatal error LNK1120: 7 unresolved externals

出0入0汤圆

发表于 2009-8-1 11:33:25 | 显示全部楼层
cccckkkk

错误怎么解决?

出0入0汤圆

发表于 2009-8-3 10:24:47 | 显示全部楼层
楼上的兄弟一定是编译release出现的错误。楼主的代码,project setting中debug的Link引入了ThreadSerial.lib,而release却没有,所以会出错。你看一下debug的设置就知道了。

可惜楼主不继续了……,这个也只是看看好了。

出0入0汤圆

发表于 2009-8-3 10:27:45 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-8-3 10:37:51 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-8-3 10:45:43 | 显示全部楼层
请教楼主一个问题:为什么工程打开后看到的对话框样式和按钮样式是WIN2000风格,运行时却变成了漂亮的XP风格.

出0入0汤圆

发表于 2009-8-3 17:18:18 | 显示全部楼层
楼上的问题,是这个文件的功劳哦:XPStyle.manifest

Google一下,就知道原理了。我就不再废话了。

出0入0汤圆

发表于 2009-8-3 17:53:16 | 显示全部楼层
谢谢了楼上的.找到已下说明:

VC无负担实现XP风格界面     选择自 goodname008 的 Blog  
关键字   VC无负担实现XP风格界面
出处   

关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。

有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数(已经废除,不建议使用)或者InitCommonControlsEx函数从comctl32.dll中注册组件类。这一步在VB中是必须的,但是在VC(MFC程序)中,我们好像并没有调用这个函数,可是编译后的程序为什么还能实现XP风格呢?原因是MFC替我们做了这件事。如果我们是让MFC注册的窗口类,它会调用_AfxInitCommonControls函数,而_AfxInitCommonControls的主要操作就是把comctl32.dll装载进来,然后判断.dll文件中有没有InitCommonControlsEx函数,如果有就调用,没有则调用InitCommonControls,到此真相大白。可能有人和我一样,看着以“afx”开头的窗口类名称很不舒服,于是喜欢自己注册窗口类,但在我们注册自己的窗口类时一定要确保调用过InitCommonControlsEx函数,这点一定要记得,如果忘记的话你将会看到一个空白的窗口。

说了这么多,有点跑题了,呵呵。现在回到正题。我上面提到的方法很多网站上都有介绍,但是却有一个致命的缺点,就是必须有那个.manifest文件如影随形,exe文件到哪,它就得到哪,这当然是我们不愿意看到的。有没有办法能把它“合”到exe文件中呢?答案是肯定的,这也正是本文题目中“无负担”三个字的意思。

当然了,那个.manifest文件还是要有的,只不过不是和.exe文件放在同一目录中,而是把它放到资源文件中,编译后生成.res文件,link后自然就和.exe文件“合”到一起了。

首先,请出.manifest文件:



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity

  name="XP style manifest"

  processorArchitecture="x86"

  version="1.0.0.0"

  type="win32"/>

<dependency>

  <dependentAssembly>

    <assemblyIdentity

      type="win32"

      name="Microsoft.Windows.Common-Controls"

      version="6.0.0.0"

      processorArchitecture="x86"

      publicKeyToken="6595b64144ccf1df"

      language="*"

    />

  </dependentAssembly>

</dependency>

</assembly>




大家也看到了,这其实是一个XML文件,打开记事本,复制上面的内容,然后存盘,文件名任意,这里我存为XPStyle.manifest。

然后在VC中新建一个MFC AppWizard(exe)工程,Document/View或Dialog均可,接着把XPStyle.manifest复制到工程所在目录,再用记事本或其它文本编辑工具手动修改工程目录下的资源文件(.rc),在文件最后加上一行:



1 24 “XPStyle.manifest”




在VC中编译并连接工程生成.exe可执行文件,运行一下看看。

就这么简单?就这么简单。   :D

这里我再多解释一下,最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。最后面引号中的东西我就不再啰嗦了。

好了,编译后的这个.exe文件拿到哪都可以,都是XP风格的界面,不用再依赖.manifest文件了。哦,当然了,必须在XP或2003系统下才可以。

出0入12汤圆

发表于 2009-8-3 18:07:49 | 显示全部楼层
这是我做的,用http://www.dywt.com.cn/的"e"语言(类似VB),界面和功能仿照www.daxia.com.斑主丁丁的SSCOM3.2,因为用熟了,所以仿照。相对SSCOM3.2,我做的程序有些功能差了些,但增加了几个功能:1 硬握手和软握手 2 最前,2 自动缩小 4 能定义更多字条,并带解释 5端口号和波特率可随便写(不知道是不是真起作用)。用了e语言的串口控件,所以灵活性比LZ用VC做的会差很多。
点击此处下载 ourdev_466873.rar(文件大小:975K) (原文件名:调试串口工具.rar)

(原文件名:ck.JPG)

出0入0汤圆

 楼主| 发表于 2009-8-3 19:23:38 | 显示全部楼层
楼上真不错...
今晚回家把动态库的源码发布给大家,让等了这么久,真不好意思...

出0入0汤圆

 楼主| 发表于 2009-8-4 12:35:03 | 显示全部楼层
现在把DLL的源码上传了,欢迎交流.
DLL源码ourdev_467355.rar(文件大小:10.17M) (原文件名:ThreadSerial.rar)

出0入0汤圆

发表于 2009-8-11 11:39:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-11 18:10:38 | 显示全部楼层
终于找到一个VC的例子了!!!
谢谢!!!

出0入0汤圆

发表于 2009-8-11 19:42:12 | 显示全部楼层
顶!!!!!!!!
谢谢了,正准备学习VC呢

出0入10汤圆

发表于 2009-8-11 19:50:07 | 显示全部楼层
这个要顶一下

出0入0汤圆

发表于 2009-8-12 16:42:44 | 显示全部楼层
很棒,你使我对VC很感兴趣,非常喜欢你写的<从零开始学VC系列教程>!

出0入0汤圆

发表于 2009-8-19 11:10:06 | 显示全部楼层
程序编译时,在VS2005有2个局部变量i和k没有定义,需要修改。将他的定义从for循环里面拉到外面就可以了。因为for(int i..)中,i的作用域为for循环内部。

出0入0汤圆

发表于 2010-2-4 13:48:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-12 20:43:58 | 显示全部楼层
MARK。就算有范例,也要想动手做。

出0入0汤圆

发表于 2010-3-13 00:46:09 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-13 08:43:00 | 显示全部楼层
马克!!

出0入0汤圆

发表于 2010-3-13 09:41:23 | 显示全部楼层
感谢楼主分享!

出0入0汤圆

发表于 2010-3-13 11:17:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-14 14:51:21 | 显示全部楼层
支持下

出0入0汤圆

发表于 2010-4-14 17:41:28 | 显示全部楼层
LZ强人+好人

出0入0汤圆

发表于 2010-4-14 21:51:20 | 显示全部楼层
好人啊,学习……

出0入0汤圆

发表于 2010-4-14 22:13:40 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2010-4-28 15:11:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-28 19:56:30 | 显示全部楼层
MARK
!

出0入0汤圆

发表于 2010-4-28 19:59:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-28 21:49:56 | 显示全部楼层
回复【楼主位】bqmcu 飞雪浪子
-----------------------------------------------------------------------

支持楼主,佩服...

出0入0汤圆

发表于 2010-4-29 21:44:13 | 显示全部楼层
多谢,有时间研究研究

出0入0汤圆

发表于 2010-4-29 23:43:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-30 00:22:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-30 08:17:56 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-4-30 16:52:20 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 08:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表