社区
Delphi
帖子详情
delphi怎么编写串口程序〉? 答对送分!20分
962veiri
2001-10-29 11:14:01
我现在要实现用delphi从串口取得数据,怎么做?
能给一个源程序嘛?
...全文
151
14
打赏
收藏
delphi怎么编写串口程序〉? 答对送分!20分
我现在要实现用delphi从串口取得数据,怎么做? 能给一个源程序嘛?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wenzm
2001-10-30
打赏
举报
回复
my email:wenzm@sina.com
Thank u !!!
yanguozhu
2001-10-29
打赏
举报
回复
delphi资源大全里有介绍!
Bob7946
2001-10-29
打赏
举报
回复
算了,太累了,你的邮箱是什末,我发给你!
Bob7946
2001-10-29
打赏
举报
回复
(接上面)
procedure Tform1.comminitialize;
//串行口初始化
var
lpdcb:Tdcb;
Begin
hcom:=createfile('com2',generic_read or generic_write,0,nil,open_exist
ing,
file_attribute_normal or file_flag_overlapped,0);//打开串行口
cobi
2001-10-29
打赏
举报
回复
关注
Bob7946
2001-10-29
打赏
举报
回复
CSDN有bug,怎么总是说回复不能为空?
Bob7946
2001-10-29
打赏
举报
回复
程序:
unit comdemou;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialo
gs;
const
Wm_commNotify=Wm_User+12;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
Procedure comminitialize;
Procedure MsgcommProcess(Var Message:Tmessage); Message Wm_commnotify;
{ Private declarations }
public
{ Public declarations }
end;
//线程声明
TComm=Class(TThread)
protected
procedure Execute;override;
end;
var
Form1: TForm1;
hcom,Post_Event:Thandle;
lpol:Poverlapped;
implementation
{$R *.DFM}
Procedure TComm.Execute;
//线程执行过程
var
dwEvtMask:Dword;
Wait:Boolean;
Begin
fillchar(lpol,sizeof(toverlapped),0);
While True do Begin
dwEvtMask:=0;
Wait:=WaitCommEvent(hcom,dwevtmask,lpol);
//等待串行口事件;
if Wait Then Begin
waitforsingleobject(post_event,infinite); //等待同步事件置位;
resetevent(post_event);
//同步事件复位;
PostMessage(Form1.Handle,WM_COMMNOTIFY,0,0);//发送消息;
end;
end;
end;
Bob7946
2001-10-29
打赏
举报
回复
给你点资料:
基于Windows 95/NT的串行通信机制
Windows操作系统禁止应用程序直接访问计算机硬件,但它为程序员提供了一系列标
准API函数,使得应用程序的编制更加方便,并且免除了对有关硬件调试的麻烦。在Windo
ws 95/NT中,原来Windows 3.X的WM_COMMNOTIFY消息已被取消,操作系统为每个通信设备
开辟了用户可定义大小的读/写缓冲区,数据进出通信口均由操作系统后台完成,应用程序
只需对读/写缓冲区操作即可。Windows 95/NT中几个常用的串行通信操作函数如下:
@@0474300.JPG;表1@@
除上述几个函数外,还要经常用到一个重要的记录DCB(设备控制块)。DCB中记录有可
定义的串行口参数,设置串行口参数时必须先用GetCommState函数将系统默认值填入DCB
控制块,然后才可设定用户想改变的自定义值。
在Windows 95/NT中实现串行通信除了要了解基本的通信操作函数外,还要掌握多线
程编程。线程是进程内部执行的路径,是操作系统分配CPU时间的基本实体,每个进程都由
单线程开始完成应用程序的执行。串行通信需要利用多线程技术实现,其主要的处理逻辑
可以表述如下:进程一开始先由主线程做一些必要的初始化工作,然后主线程根据需要在
适当时候建立线程监视通信口,当指定的串行口事件发生时,向主线程发送WM_COMMNO
FY消息(由于Windows 95取消了WM_COMMNOTIFY消息,因此程序员必须自己创建),主线程
对其进行处理。若不需要WM_COMMNOTIFY消息,则主线程终止通信监视线程。
多线程同时执行可能会引起对共享资源的冲突,为避免冲突,需要用同步多线程对共
享资源进行访问。Windows 95提供了许多保持线程同步的方法,笔者采用创建事件对象来
保持线程同步。通过CreateEvent()创建事件对象,使用SetEvent()或PulseEvent()函数
将事件对象设置成信号同步。在应用程序中,利用WaitSingleObject()函数等待同步的触
发,等到指定的事件被其它线程设置为有信号时,才继续向下执行程序。
Delphi下的具体实现方法
Delphi的强大功能和支持多线程的面向对象编程技术,使得实现串行通信非常简单方
便。它通过调用外部的API函数来实现,主要步骤如下。
1. 利用CreateFile函数打开串行口,以确定本应用程序对此串行口的占有权,并封锁
其它应用程序对此串口的操作;
2. 通过GetCommState函数填充设备控制块DCB,再通过调用SetCommState函数配置串
行口的波特率、数据位、校验位和停止位;
3. 创建串行口监视线程监视串行口事件,在此基础上就可以在相应的串口上操作数
据的传输;
4. 用CloseHandle函数关闭串行口(具体的程序如下)。本程序用Delphi3.0编写,在
Windows 95环境下调试通过,已投入实际应用中,供广大读者参考。
962veiri
2001-10-29
打赏
举报
回复
wenzm(喜欢拉磨的驴子)
you email?
962veiri
2001-10-29
打赏
举报
回复
Bob7946(X度空间) :
已经给你了,谢谢!!我现在去看看
wenzm(喜欢拉磨的驴子) :
没问题,不过我的网络速度很慢,不知道能不能发过去,
Bob7946
2001-10-29
打赏
举报
回复
to 962veiri(风尘旅人):发过去了,是txt格式的。给分?
wenzm
2001-10-29
打赏
举报
回复
to 962veiri:Plase Mail it to me if u recept,ok!?
962veiri
2001-10-29
打赏
举报
回复
我的邮箱 962veiri@sina.com.cn 谢谢
962veiri
2001-10-29
打赏
举报
回复
Bob7946(X度空间)
能不能在详细一点??? 谢谢
Delphi
无法运行,提示EditorLineEnds.ttr另一个
程序
正在使用此文件,进程无法访问
由于微软补丁KB2982791, KB2970228的缘故,导致
Delphi
8-
Delphi
XE在不重起系统的情况下无法被重启两次!提示%TEMP%\EditorLineEnds.ttr另一个
程序
正在使用此文件,进程无法访问.工具为包括所有版本的修复补丁,请根据需要的版本执行补丁!
Delphi
20
07
分
WIN8版和其它版的支持
《实战
Delphi
6/Kylix2/SOAP/Web Service
程序
设计篇》(
《实战
Delphi
6/Kylix2/SOAP/Web Service
程序
设计篇》(李维著)
Delphi
7正式企业版
Delphi
7正式企业版 ISO 文件内附 CD key感谢恶魔天使
读钱龙数据画股票K线图范例
Delphi
提供了功能强大的TeeChart 控件组标准版,利用它我们可以轻松的画出描述股票开盘价、收盘价、最高价、最低价的阴阳K线图,至于读数据,由于本人没钱入市,所以找了一个钱龙的日线数据文件(600734.Day)权且示范,并且笔者对股票实在一窍不通,而且对钱龙的数据结构具体数据名称也不甚了解,所以本文仅作示范,以求抛砖引玉,贡献
Delphi
社区。相信读者定会举一反三。 注:TeeChart增强版中提供了画K线图的功能,本范例是使用
Delphi
自带的标准版用
程序
绘制,如果您要做商品软件建议您使用增强版。通过这个例子您可以学习到如何读取钱龙数据。 济南上士软件工作室出品 欢迎访问上士网
Delphi
7高级应用开发随书源码
Delphi
7高级应用开发随书源码
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章