2011年8月3日
摘要: TeeChart里有一个Tools,TPageNumTool.可以用于在Chart上显示当前页和总页数.还有一个TChartPageNavigator,可以用于控制Chart的最前页,前一页,后一页,最终页.Chart可以显示2个轴,1个是Bottom,1个是Top,代码里做了限制,如果添加Series的时候指定了asDateTime,那么上下2个轴都会显示为时间.不可以一个显示时间,另外一个显示别的.这里,如果要分别显示,需要修改源代码,修改方式如下:在TeEngine.Unit的TChartAxis里,增加一个Public的属性:property NeedDateTime : Boolea 阅读全文
posted @ 2011-08-03 20:29 solokey 阅读(2303) 评论(0) 推荐(0) 编辑
摘要: Excel的曲线中有一个小功能,可以点击曲线后,显示出这条曲线的名称.当一个Chart里显示Series过多时,颜色已经无法作为区分的手段,这个时候可以提供一个Selector的功能.使用TeeChart的自带Tool实现.使用SelectorTool(负责判断鼠标的点击对象)以及RectangTool(负责显示Series的Title等信息).这里做了判断,如果点击的不是Series,则不进行操作并清除选择.描述的话,就这些了.下面直接放源码.dfm文件: 1 object Form1: TForm1 2 Left = 192 3 Top = 175 4 Width = 870 5 Heig 阅读全文
posted @ 2011-08-03 20:25 solokey 阅读(1590) 评论(0) 推荐(0) 编辑
摘要: 这几天调试CQM1H,碰到了传说中的扩展指令下载错误的问题,折腾了2天,问题解决.首先,要将DIP开关的PIN 4拨到On.如果不是ON,下载时会出现DIP开关或设置错误,SysWin和CX-P都会报这个错误.如果拨到后也无法下载,请尝试断电,断电时间长一点..貌似CPU里有个不小的电容.使用CX-P(SysWin也一样)下载的话,在扩展指令中,将需要使用的扩展指令设置好.但是要注意一点..扩展指令的设置中有陷阱...1.所有的扩展指令必须指定,不可以空着.2.有些扩展指令,CQM1H并不支持,但是可以选择(在CX-P中,SysWin没这个问题),比如TMHH.这2点如果任何一个有问题,都会出 阅读全文
posted @ 2011-08-03 20:23 solokey 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 进程通常被定义为一个正在运行的程序的实例.它由两个部分组成:一个是操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方.另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据.也包含动态内存分配的空间,如线程堆栈和堆分配的空间.进程是不活泼的.也就是说,进程是没有执行能力的,它仅仅是代码和数据的集合.它必须拥有一个在它环境中运行的线程,并由这个线程负责执行包含在进程地址空间内的代码.单个进程可以包含多个线程.每个线程都有自己的一组CPU寄存器和它自己的堆栈.每个进程至少拥有一个线程,如果进程一个线程都没有,也就失去了存在的意义,系统就会自动撤销该进程和它的地 阅读全文
posted @ 2011-08-03 20:21 solokey 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 当一个进程被初始化时,系统要为它分配一个句柄表.这个句柄表只用于内核对象,不用于用户对象或GDI对象.进程句柄表是一个数据结构的数组,每个结构都包括一个指向内核对象的指针,一个访问屏蔽和一些标志.当进程初次被初始化时,它的句柄表是空的.当进程中的线程调用创建内核对象的函数后时,内核就为该对象分配一个内存块,并将其初始化.这时,内核对进程的句柄表进行扫描,找到一个空项.将该索引位置上结构中的指针成员设置为该内核对象数据结构的内存地址,并设置访问屏蔽,以及标志位.1 function CreateEvent(lpEventAttributes: PSecurityAttributes; 2 bMa 阅读全文
posted @ 2011-08-03 20:20 solokey 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 会不会很奇怪,说多线程的故事,为什么会说内核对象.因为说到线程就要说进程,说到进程呢,又要说内核对象,并且解决多线程的同步问题,多要用内核对象.所以,先废话一下内核对象.什么是内核对象?简单的说,就是只有windows内核才能直接访问的对象(内存区域),就是内核对象(进程中的访问是通过句柄).比如:存取符号对象,事件对象,文件对象,文件映射对象,I/O完成端口对象,作业对象,信箱对象,互斥对象,管道对象,进程对象,信标对象,线程对象和等待计时器对象等等.这些对象由一些名为CreateXXXX函数创建,并返回一个内核对象的句柄,由CloseHandle关闭,因为内核对象是使用计数器管理生命周期, 阅读全文
posted @ 2011-08-03 20:18 solokey 阅读(542) 评论(0) 推荐(0) 编辑
摘要: ReadFile: 读取串口接收缓冲区内的数据.WriteFile: 将数据写入串口发送缓冲区.CloseHandle: 关闭用CreateFile打开的串口句柄.Windows的内核对象,大多都是用这个函数来关闭句柄.1 function ReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; 2 var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall; 3 function WriteFile(hFile: THandle; 阅读全文
posted @ 2011-08-03 20:16 solokey 阅读(2482) 评论(0) 推荐(0) 编辑
摘要: PurgeComm:清空缓冲区.ClearCommError:返回串口错误和报告.(也可以查看缓冲区状态)顺便提一下SetCommBreak:将传输状态挂起,直到调用ClearCommBreak;ClearCommBreak:恢复由SetCommBreak挂起的通信线路.1 function PurgeComm(hFile: THandle; dwFlags: DWORD): BOOL; stdcall; 2 function ClearCommError(hFile: THandle; var lpErrors: DWORD; lpStat: PComStat): BOOL; stdcall 阅读全文
posted @ 2011-08-03 20:14 solokey 阅读(8955) 评论(0) 推荐(0) 编辑
摘要: 卡巴斯基是个好同志..就是强大的有点太过分了...老和下载软件冲突,我就重装,结果杯具,重装失败.查了半天..都让我删注册表..删了也没用..后来找到一个方法,一试就OK...删除C:\WINDOWS\inf\INFCACHE.1这个文件,然后重启电脑,再装,就OK了.还有说修改系统时间的方法..那个就没尝试了... 阅读全文
posted @ 2011-08-03 20:13 solokey 阅读(1973) 评论(0) 推荐(0) 编辑
摘要: 金山迷你背单词默认的MIKE的声音实在是太二了,而且还不允许修改.下载了一个NeoSpeech,在控制面板->语音里设置了默认,却还是那难听的MIKE.网上找到一个解决办法,公布如下:先提供2个好听点的TTS男声:ed2k://|file|Neospeech.%E8%8B%B1%E8%AF%AD.Text-To-Speech.English.Paul.rar|234646887|7ada791554a32648bd10962622a51ad4|女声:ed2k://|file|NeoSpeech.英语.Text-To-Speech.English.Kate.rar|235151367|f2 阅读全文
posted @ 2011-08-03 20:12 solokey 阅读(543) 评论(0) 推荐(0) 编辑