搜索
bottom↓
回复: 136

Delphi一个月学习笔记,顺带交个作业:简单的串口通讯和波形实时显示

[复制链接]

出0入0汤圆

发表于 2009-4-22 20:31:13 | 显示全部楼层 |阅读模式
从开始学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,他们的区别很多资料上都有讲,可惜还没使用过,有些东西只有应用了才能参悟。

先断断续续写到这儿吧,以后有啥心得再补充。

凉凉我的作业:

1 (原文件名:1.JPG)


2 (原文件名:2.JPG)


3 (原文件名:3.JPG)

源代码:
My Com V0.1ourdev_438822.rar(文件大小:509K) (原文件名:DataPack.rar)

出0入134汤圆

发表于 2009-4-22 20:35:40 | 显示全部楼层
很好啊,还有这么长的总结,对像我这样打算学上位机编程的初学者来说是无疑的极大的帮助

出0入0汤圆

 楼主| 发表于 2009-4-22 21:01:11 | 显示全部楼层
这个东东还不是很完善,就是基本满足现在的应用,还应该做以下改进:
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

出0入0汤圆

发表于 2009-4-22 22:57:28 | 显示全部楼层
一看就是有一定功底的作品,继续努力~~~

mark

出0入0汤圆

 楼主| 发表于 2009-4-23 08:56:03 | 显示全部楼层
有朋友在QQ上问编译出现错误的问题,说明:
1、首先正确安装ComPort3.10串口控件和iocomps v3.0.4 SP2 R1 曲线图控件,这两个控件在Gougou上都可以搜索下载,也可以在本站伍奇网友发的帖子:18B20温度采集+上位机实时曲线,附源程序 里面有上传,在此也感谢伍奇网友,安装方法Help文件都有详细说明;
2、按照Readme修改文件夹

出0入0汤圆

发表于 2009-5-28 14:30:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-28 15:25:20 | 显示全部楼层
不错

出0入8汤圆

发表于 2009-5-28 18:40:50 | 显示全部楼层
看了半天,楼主是熟人

出0入84汤圆

发表于 2009-5-28 23:39:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-29 01:22:06 | 显示全部楼层
楼主高手啊

出0入0汤圆

发表于 2009-5-29 03:44:04 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-6-21 16:48:15 | 显示全部楼层
向楼主学习!!

出0入0汤圆

发表于 2009-6-21 18:04:15 | 显示全部楼层
String之强大是其它语言所没有的
从Delphi2009起引入新的RawByteString用于处理原始字节级数据

出0入84汤圆

发表于 2009-6-23 12:11:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-25 13:40:12 | 显示全部楼层
好东西,收藏了

出0入0汤圆

发表于 2009-6-25 14:29:47 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-7-23 21:31:58 | 显示全部楼层
不会用啊!

出0入0汤圆

发表于 2009-7-23 21:40:25 | 显示全部楼层
好样的,支持一个!

出0入0汤圆

发表于 2009-7-23 22:51:51 | 显示全部楼层
顶一下,,LZ学习一个月, 偶学了几年了,还不会画曲线图~!
头像被屏蔽

出0入0汤圆

发表于 2009-7-24 00:07:10 | 显示全部楼层
Cool !

出0入0汤圆

发表于 2009-8-2 22:59:09 | 显示全部楼层
一个月就这么强了 佩服楼主啊

出0入0汤圆

发表于 2009-8-30 02:49:53 | 显示全部楼层
Mark

出0入0汤圆

发表于 2009-8-30 09:55:19 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-8-31 23:03:04 | 显示全部楼层
顶了 最近正想做个类似的呢 拿来分享了啊

出0入0汤圆

发表于 2009-8-31 23:59:00 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-9-17 10:44:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-28 11:14:22 | 显示全部楼层
學習中............

出0入0汤圆

发表于 2009-10-8 09:02:55 | 显示全部楼层
学习中,顶

出0入0汤圆

发表于 2009-10-8 09:27:01 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-10-11 22:14:09 | 显示全部楼层
一个月,很厉害啊!偶像!

出0入0汤圆

发表于 2009-10-11 22:21:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-10 14:11:07 | 显示全部楼层
顶!

出0入0汤圆

发表于 2009-12-20 19:02:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-27 11:31:02 | 显示全部楼层
楼主真厉害,看了你的帖子,我也决定用DELPHI了

出0入0汤圆

发表于 2010-1-5 22:47:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-5 23:25:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-12 14:30:45 | 显示全部楼层
好啊,信心十足!

出0入0汤圆

发表于 2010-1-12 15:33:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-12 15:46:11 | 显示全部楼层
收下了,Iocomp控件 带了吗?

出0入0汤圆

发表于 2010-1-13 15:16:23 | 显示全部楼层
好作品,继续努力~~~

mark

出0入0汤圆

发表于 2010-1-23 16:50:30 | 显示全部楼层
楼主一个月时间就这么厉害,请问使用串口能不能直接采样数字信号,高低电平?再把信号记录下来?

出0入0汤圆

发表于 2010-1-27 20:53:58 | 显示全部楼层
mark,挺让人心动的。

出0入0汤圆

发表于 2010-1-27 23:31:11 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-1-29 19:17:34 | 显示全部楼层
回复【42楼】moon0213  
-----------------------------------------------------------------------

《delphi串口通信与工程实践》可能会对大家有所帮助,我这是电子版的,一直在用感觉不错
很不错的一本关于delphi串口通讯的书ourdev_530561.pdf(文件大小:3.28M) (原文件名:Delphi串口编程与工程实践.pdf)

出0入0汤圆

发表于 2010-2-8 19:09:00 | 显示全部楼层
学习要会总结,楼主做的太棒了

出0入0汤圆

发表于 2010-3-17 22:07:54 | 显示全部楼层
delephi怎么调用VB谢谢程序
对VB的文本框  text   combo   command
进行调用,谢谢各位啊

出0入0汤圆

发表于 2010-3-18 09:28:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-18 09:51:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-24 14:16:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-14 18:07:28 | 显示全部楼层
简单的串口通讯和波形实时显示

出0入0汤圆

发表于 2010-4-20 16:37:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-20 17:32:06 | 显示全部楼层
请教楼主:你的下位机发送的数据时怎样的啊?起始字符、终止字符各是什么啊?
          各通道数据如何鉴别的呢?
          不胜感激,O(∩_∩)O谢谢

出0入0汤圆

发表于 2010-4-28 10:01:17 | 显示全部楼层
第一手资料,必须收藏

出0入0汤圆

发表于 2010-4-28 10:19:16 | 显示全部楼层
不错,值得参考

出0入0汤圆

发表于 2010-5-15 17:53:21 | 显示全部楼层
mark

出150入0汤圆

发表于 2010-5-21 11:53:19 | 显示全部楼层

出0入0汤圆

发表于 2010-5-21 12:37:58 | 显示全部楼层
mark之。。学习

出0入4汤圆

发表于 2010-5-21 12:40:11 | 显示全部楼层
Iocomp就是不错,特别是做控件界面

出0入0汤圆

发表于 2010-5-24 22:41:47 | 显示全部楼层
楼主牛人!!看了之后,我都有点想去学了.

出0入0汤圆

发表于 2010-5-25 01:02:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-29 15:22:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-7 17:51:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-11 19:54:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-16 17:44:00 | 显示全部楼层
谢谢,见识了写上位机的方法,受益很多

出0入46汤圆

发表于 2010-6-16 18:49:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-17 23:20:24 | 显示全部楼层
mark·

出0入0汤圆

发表于 2010-6-18 09:40:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-22 16:21:09 | 显示全部楼层
回复【4楼】ch2003_23 猪
有朋友在qq上问编译出现错误的问题,说明:
1、首先正确安装comport3.10串口控件和iocomps v3.0.4 sp2 r1 曲线图控件,这两个控件在gougou上都可以搜索下载,也可以在本站伍奇网友发的帖子:18b20温度采集+上位机实时曲线,附源程序 里面有上传,在此也感谢伍奇网友,安装方法help文件都有详细说明;
2、按照readme修改文件夹
-----------------------------------------------------------------------

搜不到这个帖子呢?
谁给一个连接?谢谢!

出0入0汤圆

发表于 2010-6-22 16:29:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-23 10:43:42 | 显示全部楼层
我在delphi7中安装了楼主要求的两个控件,然后打开楼主的源代码,编译时出现以下的提示:
[Fatal Error] Could not create output file 'C:\Program Files\Borland\Delphi7\Projects\Project1.exe'
请高人指点一下,这是什么问题呀?
非常感谢!

出0入0汤圆

发表于 2010-7-7 21:51:44 | 显示全部楼层
delphi确实方便。。

出0入0汤圆

发表于 2010-7-14 17:56:22 | 显示全部楼层

坚持下去
会要好的收获的!

出0入0汤圆

发表于 2010-7-14 19:53:53 | 显示全部楼层
好东西啊,收藏了

出0入0汤圆

发表于 2010-7-24 14:41:21 | 显示全部楼层
VC也不是那么难学吧,我最开始选择编程语言时就选了VC,也学了一个月,也做出了自己想要的串口东西
就算是用纯C也能把程序干出来的,同时能巩固C,好搞下位机

出0入0汤圆

发表于 2010-7-26 16:42:52 | 显示全部楼层
想问下学习DELPHI,先得看什么书,各位帮忙推荐一下

出0入0汤圆

发表于 2010-8-6 20:25:55 | 显示全部楼层
佩服,一个月就这么厉害了!

出0入0汤圆

发表于 2010-8-27 11:24:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-27 16:40:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-26 19:58:19 | 显示全部楼层
我也要开始学上位机啦

出0入0汤圆

发表于 2010-10-26 19:59:43 | 显示全部楼层
ok,我也开始学啦

出0入0汤圆

发表于 2010-11-16 19:55:36 | 显示全部楼层
学习了,正打算学学上位机的编程

出0入0汤圆

发表于 2010-11-16 21:33:30 | 显示全部楼层
看看了

出0入0汤圆

发表于 2010-11-23 19:05:53 | 显示全部楼层
lz 请教一下安装comport的方法 没成功啊!!!

出0入0汤圆

发表于 2010-11-24 20:28:24 | 显示全部楼层
谢谢,需要啊

出0入0汤圆

发表于 2010-12-1 11:26:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-1 11:54:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-4 21:56:34 | 显示全部楼层
mark先。

出0入0汤圆

发表于 2011-2-14 14:37:17 | 显示全部楼层
mark  看来d比c简单~~

出0入0汤圆

发表于 2011-2-14 15:06:03 | 显示全部楼层
我也mark一回

出0入0汤圆

发表于 2011-2-15 12:57:45 | 显示全部楼层
学习去!在学校学的都忘记了!

出0入0汤圆

发表于 2011-3-1 14:01:55 | 显示全部楼层
楼主的经验之谈

出0入0汤圆

发表于 2011-3-9 22:53:05 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-3-10 08:58:24 | 显示全部楼层
我是新手,谢谢你的学习经历和感想。目前上位机的编写我计划用C#,不知道能给一些建议吗?

出0入0汤圆

发表于 2011-3-17 21:04:59 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2011-3-17 21:23:32 | 显示全部楼层
不错,记一下

出0入0汤圆

发表于 2011-3-18 22:38:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-19 12:36:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-19 14:07:47 | 显示全部楼层
好东西

出0入0汤圆

发表于 2011-3-21 10:15:54 | 显示全部楼层
Iocomp挺好用的,之前在QT里面集成出来了,还没有仔细研究这个控件,学习之。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-29 03:16

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

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