Delphi一个月学习笔记,顺带交个作业:简单的串口通讯和波形实时显示
从开始学Delphi到现在差不多一个月了,今天终于将自己一直想要的一个东东实现了,我的上位机学习先要告一段落了,接下来又要接着搞ARM了,所以趁此机会总结下。一、工具的选择:
提到上位机开发,初学者最头痛的应该是选择那个开发工具好呢?VC、VB、Delphi、BCB、C#……当时我更是困惑,从没有搞过上位机,大学中倒是学过VB,可早就忘光光了。而且当时只知道VC,没听说过BCB和Delphi是什么东东。VC开始就被俺否决了,因为论坛上都说VC难,就没看到谁说VC简单的,再加上俺的编程功底本来就差,所以VC想都不敢想。VB的话,虽然资料众多,但是好像有些陈旧。然后在论坛上看到Delphi和BCB都简单易上手,而且使用者也很多,还有人说他们也不逊于VC,于是开始转向这两个。然后了解到这两个是同一家公司出的,只是Delphi以Pascal语言编程,BCB以C/C++编程,尽管很多人都说Pascal语言好学,我还是不敢想象从一门新的语言学起。于是选择BCB,用BCB6+ComPort控件写了个基本的串口通讯,真的很快,但是在BCB6中安装Iocomp画图控件时总安装不成功,所以不得不又硬着头皮转向了Delphi。真正开始用才发现Pascal语言不是很难学,基本上一边做一边学。Delphi的版本很多,现在都有Delphi2009了,不过还是Delphi7最为经典,使用者众多,交流方便。
二、说一下我做的这个东东:
前一段时间做了一个信号采集模块,采到的数据不知道对不对,只能一个个字节看或使用同事写好的Matlab程序验证,总是不太方便,想来想去自己也要写一个,顺便学习下什么是上位机。这个东东主要在于波形显示部分。串口发送接收使用控件很简单实现。使用的是24位AD、8个通道,而且还要任意时候可以关闭和显示某个通道。将采集到的数据转化进制,并跟参考电压计算后,显示出实际采样的电压值。串口控件采用开源的ComPort3.0,图形控件采用Iocomp控件。要写的程序不是很多,由于数学基础不咋的,搞得比较慢。
三、Delphi的编程思想:
面向对象的程序设计OOP(Object Oriented Programming)是Delphi的精髓。那怎么理解这个面向对象呢?我们一般写的基于单片机的程序都是在一个main函数按顺序执行和中断驱动的,主要操作外设,写驱动,设置外设相关寄存器,响应外部和内部中断,或者直接使用厂家封装好的的固件库。而Dlephi操作的对象就是“对象”,Delphi中没有main函数,也不是顺序执行或中断驱动,而是事件驱动机制,通过操作对象的接口来编程,具体来说对象可能是某个按钮、文本框,也可能是某个可视化组件或者外部安装的控件。对象的接口就是:对象的属性、方法、事件。其实Delphi中的对象可以相当于单片机编程中的外设,其属性就相当于外设的某个寄存器,方法就是封装好的外设固件库,事件就相当于中断。其实熟悉后会发现比单片机的编程更简单。
四、学到的东西:不管做什么,结果如何,学到东西就好。这个过程中,由于语句简单、也不涉及算法,所以编程上可以说没啥长进,不过让我见识了自己的编程基础真的很薄弱,重新认识了很多基本的概念。
1、Byte和Char不分:开始总认为是一回事,后来查书才知道Byte是单字节无符号整型,取值范围0~255;Char是字符型。用单引号‘’或#加ASCII码的形式表示。进而学习到Pascal中,整型包括有符号整型和无符号整型,前者又包括Shortint(1)、SmallInt(2)、Integer(4)、Int64(8);后者包括Byte(1)、Word(2)、Longword(4),括号中表示所占的字节数。
2、AScII码:以前写程序从没有注意到过AscII码,但是在Delphi中要用到,ASCII:The American Standard Code for Information Interchange ,美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩展ASCII。基本的 ASCII 字符集共有 128 个字符,其中有 96 个可打印字符,包括常用的字母、数字、标点符号等,另外还有 32 个控制字符。标准 ASCII 码使用 7 个二进位对字符进行编码,对应的 ISO 标准为 ISO646 标准。由于标准 ASCII 字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了 ISO2022 标准,它规定了在保持与 ISO646 兼容的前提下将 ASCII 字符集扩充为 8 位代码的统一方法。 ISO 陆续制定了一批适用于不同地区的扩充 ASCII 字符集,每种扩充 ASCII 字符集分别可以扩充 128 个字符,这些扩充字符的编码均为高位为 1 的 8 位代码(即十进制数 128~255 ),称为扩展 ASCII 码。
说了这么多,说来说去就是说,AScII码不过是用0~127或0~255表示的字符编码。在Iocomp的图形控件的事件字符中要使用AscII码,其实是表示一个字符,只不过是用AscII码的形式表示,所以前面要加上#,比如说,事件字符设为0X0a,这是十六进制,转化为十进制为10,所以表示为#10,事件字符如果是0x55,就可以表示为#85。
在Pascal中有两个系统函数完成AscII码的转换:Chr(X:Byte):Char--将AScII码转化为字符型,比如:chr(97)就表示a字符即'a';如果是十六进制的话,比如说0x0a,chr($0a),$在Delphi中表示十六进制。同样字符型转化为AScII码可以用ord(x),适用于所有的顺序类型。比如:ord('a')就转化为97.
3、学习Delphi不得不说String?字符串类型:String号称是Delphi中最灵活的数据类型,可是开始的时候,我感觉String是最讨厌的,为什么很多数据都用String表示嘛,串口接收到的数据明明是十六进制数据,用String表示多不方便呀,现在虽然能够理解,还未得String的精髓。而且字符串型还有其他两种怪怪的类型:AnsiString、WideString,还有一个UniCode,他们的区别很多资料上都有讲,可惜还没使用过,有些东西只有应用了才能参悟。
先断断续续写到这儿吧,以后有啥心得再补充。
凉凉我的作业:
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_438819.JPG
1 (原文件名:1.JPG)
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_438820.JPG
2 (原文件名:2.JPG)
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_438821.JPG
3 (原文件名:3.JPG)
源代码:
My Com V0.1ourdev_438822.rar(文件大小:509K) (原文件名:DataPack.rar) 很好啊,还有这么长的总结,对像我这样打算学上位机编程的初学者来说是无疑的极大的帮助 这个东东还不是很完善,就是基本满足现在的应用,还应该做以下改进:
1、首先把界面做的更漂亮点
2、界面应该更大一下,接收区应该分两列,一列是字符串,一列是十六进制的
3、发送接收应该添加文件支持
4、至少做一个简单的Help文件,现在里面只有一个简单的readme
5、要是能够自定义串口数据帧开始位、结束位等参数以及AD的参考电压、前级放大倍数、动态范围就好了
这段学习Delphi的过程中得到了很多网友的指点,向他们表示深深的感谢,其中包括ourdev的knight_avr 、rube 永丰庵、zhchyl 指挥等朋友,还有CSDN的wound979、lovelymelon、jadeluo等网友,再次向他们表示感谢。
有空我会逐渐完善这些功能的,有好的建议和批评还请不吝指出,请联系:
QQ:277565600
Email:ch2003_23'at'163.com 一看就是有一定功底的作品,继续努力~~~
mark 有朋友在QQ上问编译出现错误的问题,说明:
1、首先正确安装ComPort3.10串口控件和iocomps v3.0.4 SP2 R1 曲线图控件,这两个控件在Gougou上都可以搜索下载,也可以在本站伍奇网友发的帖子:18B20温度采集+上位机实时曲线,附源程序 里面有上传,在此也感谢伍奇网友,安装方法Help文件都有详细说明;
2、按照Readme修改文件夹 mark 不错 看了半天,楼主是熟人 mark 楼主高手啊 标记 向楼主学习!! String之强大是其它语言所没有的
从Delphi2009起引入新的RawByteString用于处理原始字节级数据 mark 好东西,收藏了 收藏 不会用啊! 好样的,支持一个! 顶一下,,LZ学习一个月, 偶学了几年了,还不会画曲线图~! Cool ! 一个月就这么强了 佩服楼主啊 Mark 收藏 顶了 最近正想做个类似的呢 拿来分享了啊 jh mark 學習中............ 学习中,顶 收藏 一个月,很厉害啊!偶像! mark 顶! mark 楼主真厉害,看了你的帖子,我也决定用DELPHI了 mark mark 好啊,信心十足! mark 收下了,Iocomp控件 带了吗? 好作品,继续努力~~~
mark 楼主一个月时间就这么厉害,请问使用串口能不能直接采样数字信号,高低电平?再把信号记录下来? mark,挺让人心动的。 mark! 回复【42楼】moon0213
-----------------------------------------------------------------------
《delphi串口通信与工程实践》可能会对大家有所帮助,我这是电子版的,一直在用感觉不错
很不错的一本关于delphi串口通讯的书ourdev_530561.pdf(文件大小:3.28M) (原文件名:Delphi串口编程与工程实践.pdf) 学习要会总结,楼主做的太棒了 delephi怎么调用VB谢谢程序
对VB的文本框text combo command
进行调用,谢谢各位啊 mark mark mark 简单的串口通讯和波形实时显示 mark 请教楼主:你的下位机发送的数据时怎样的啊?起始字符、终止字符各是什么啊?
各通道数据如何鉴别的呢?
不胜感激,O(∩_∩)O谢谢 第一手资料,必须收藏 不错,值得参考 mark 顶 mark之。。学习 Iocomp就是不错,特别是做控件界面 楼主牛人!!看了之后,我都有点想去学了. mark mark mark mark 谢谢,见识了写上位机的方法,受益很多 mark mark· mark 回复【4楼】ch2003_23 猪
有朋友在qq上问编译出现错误的问题,说明:
1、首先正确安装comport3.10串口控件和iocomps v3.0.4 sp2 r1 曲线图控件,这两个控件在gougou上都可以搜索下载,也可以在本站伍奇网友发的帖子:18b20温度采集+上位机实时曲线,附源程序 里面有上传,在此也感谢伍奇网友,安装方法help文件都有详细说明;
2、按照readme修改文件夹
-----------------------------------------------------------------------
搜不到这个帖子呢?
谁给一个连接?谢谢! mark 我在delphi7中安装了楼主要求的两个控件,然后打开楼主的源代码,编译时出现以下的提示:
Could not create output file 'C:\Program Files\Borland\Delphi7\Projects\Project1.exe'
请高人指点一下,这是什么问题呀?
非常感谢! delphi确实方便。。 好
坚持下去
会要好的收获的! 好东西啊,收藏了 VC也不是那么难学吧,我最开始选择编程语言时就选了VC,也学了一个月,也做出了自己想要的串口东西
就算是用纯C也能把程序干出来的,同时能巩固C,好搞下位机 想问下学习DELPHI,先得看什么书,各位帮忙推荐一下 佩服,一个月就这么厉害了! mark mark 我也要开始学上位机啦 ok,我也开始学啦 学习了,正打算学学上位机的编程 看看了 lz 请教一下安装comport的方法 没成功啊!!! 谢谢,需要啊 mark mark mark先。 mark看来d比c简单~~ 我也mark一回 学习去!在学校学的都忘记了! 楼主的经验之谈 学习了 我是新手,谢谢你的学习经历和感想。目前上位机的编写我计划用C#,不知道能给一些建议吗? mark一下 不错,记一下 mark mark 好东西 Iocomp挺好用的,之前在QT里面集成出来了,还没有仔细研究这个控件,学习之。 mark
页:
[1]
2