预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共95页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Delphi串口通信编程第一章基本概念1、通信数据传送传送的方式通信的种类字符传输位和字节文本编码非文本编码帧2、串行通信RS-232串行通信RS-485串行通信USB(UniversalSerialBus)接口IEEE-1394USB与IEEE-1394的比较3、硬件基础知识常用的9条RS-232信号线一次应答呼叫过程数据终端DTE的控制软件持续监视振铃指示RI,等待该 信号有效 响铃后,RI信号在ON和OFF状态之间交替变化。 DTE的通信控制软件在检测到振铃指示后,开始通过计 算机振铃指示的ON和OFF状态的变化次数来进行计数。 当达到程序设计的次数时,控制软件发出终端就绪信号 (DTR)有效,使Modem进行摘机状态,开始应答电话 Modem在等待一小段时间后,自动地发送它的应答载波 信号。同时Modem发出数据设备就绪信号(DSR),通 知DTE已经完成所有准备工作,正在等待对方的载波信 号在DTE发出数据终端就绪信号(DTR)期间,DTE的控制软件监视数据设备就绪信号(DSR)是否有效,当DSR为ON状态后,DTE便知道Modem已准备建立数据链路,于是DTE开始检测载波信号(DCD),以检查数据链路是否已经建立 当主叫Modem的载波信号出现在电话线上时,被叫Modem发出载波信号(DCD),以检查数据链路是否已经建立 在数据链路连接期间,发送数据(TxD)和接收数据(RxD)线上即开始了全又工通信。同时,DTE仍监视载波信号(DCD),以确定数据链路是否连接 数据传输结束后,DTE使数据终端就绪信号(DTR)无效,Modem撤消载波检测(DCD),并且使设备数据就绪信号(DSR)信号无效。数据候链路释放后,Modem和DTE返回到初始状态。 通信参数数据的传送速度数据的传送单位起始位及停止位校验位的检查4、模式及流量工作模式串行数据的流动方式握手硬件握手计算机->设备设备->计算机软件握手5、接线和错误预防接线方法当使用RS-232与Modem进行连接时,直接连接即可 当使用RS-232和其他的设备进行连接时,有时就必须做必要的跳线跳线错误预防错误预防原理: 将所传送的数值做相加的操作后与一个固定的除 数进行除法运算,所得的余数即为校验码。传送 与接收的双方只要针对其固定的检查方法分别进 行运算,比较后只要双方均一致,即正确;若不 一致,数据重传。6、错误排除波特率失配校验错误字长不匹配停止位错帧错第2章串行通信程序及组件建立1、串行通信的WindowsAPI简述串行通信相关函数串行通信相关函数HANDLECreateFile( LPCTSTRlpFileName,//文件名指针 DWORDdwDesiredAccess,//存取(读/写)模式 DWORDdwShareMode,//共享模式 LPSECURITY_ATTRIBUTESlpSecurityAttribute,//securityattribute结构指针 DWORDdwCreationDistribution,//打开文件的方式 DWORDdwAttrsAndFlags,//文件属性 HANDLEhTemplateFile//带属性复制的文件句柄 );有关参数说明BOOLCloseHandle(HANDLEhObject); hObject:要关闭对象的句柄 当函数返回True时,表示关闭动作完成。Var Fhandle:THandle; ComName:array[0..4]ofchar;//ComName:string; Begin ComName:=‘COM1’; //PCHAR(ComName) FHandle:=CreateFile(ComName,GENERIC_READorGENERIC_WRITE, 0,nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0); ifFHandle<>INVALID_HANDLE_VALUEthen showmessage(‘串口打开成功!’) Else showmessage(‘串口打开失败!’); CloseHandle(FHandle); End;GetCommState_DCB=packedrecord DCBlength:DWORD;//DCB结构的长度 BaudRate:DWORD;//当前波特率 Flags:Longint;// wReserved:Word;//保留,未使用 XonLim:Word;//传送XON阈值 XoffLim:Word;//传送XOFF阈值 ByteSize:Byte;//每字节位数(4-8) Parity:Byte;//0-4:no,odd,even,mark,space StopBits:Byt