- 1、本文档共96页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi串口通信编程;第一章 基本概念;1、通信;数据传送;传送的方式;通信的种类;字符传输;位和字节;文本编码;非文本编码;帧;2、串行通信;RS-232串行通信;RS-485串行通信;USB(Universal Serial Bus)接口;IEEE-1394;USB与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简述;串行通信相关函数;串行通信相关函数;HANDLE CreateFile(
LPCTSTR lpFileName, //文件名指针
DWORD dwDesiredAccess, //存取(读/写)模式
DWORD dwShareMode,//共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttribute, //security attribute结构指针
DWORD dwCreationDistribution, //打开文件的方式
DWORD dwAttrsAndFlags, //文件属性
HANDLE hTemplateFile//带属性复制的文件句柄
);;有关参数说明;BOOL CloseHandle(HANDLE hObject);
hObject:要关闭对象的句柄
当函数返回True时,表示关闭动作完成。;Var
Fhandle:THandle;
ComName:array[0..4] of char; // ComName:string;
Begin
ComName:=‘COM1’;
// PCHAR(ComName)
FHandle := CreateFile(ComName, GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if FHandleINVALID_HANDLE_VALUE then
showmessage(‘串口打开成功!’)
Else
showmessage(‘串口打开失败!’);
CloseHandle(FHandle);
End;;GetCommState;_DCB = packed record
DCBlength: DWORD; //DCB结构的长度
BaudRate: DWORD;
文档评论(0)