




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi串口通信编程魏贇第一章基本概念通信串行通信硬件基础知识模式及流量接线和错误预防错误排除1、通信通信:不同的独立系统通过线路互相交换数据数据通信:终端与计算机之间的通信或计算机与计算机之间的通信网络:构成整个通信的线路数据传送通信的类型字符传输数据传送完整的通信系统包括发送端、接收端、转换数据的接口以及传送数据的实际信道或媒体DTE(DataTerminalEquipment):发送与接收的节点DSE(DataSwitchingEquipment):中间节点,负责数据转送工作DCE(DataCommunicationEquipment):负责数据与电气信号转换的设备DTE与DCE间的数据传输线路通常使用RS-232DTE与DSE间的媒体则包括了双绞线、同轴电缆、光纤或无线电等传送的方式并行传送(Parallel):一次的传输量为8个位(1字节)通过并行端口,如打印机串行传送(Serial):一次只传输1个位通过串行端口,如RS-232通信的种类将数据转换成串行通信有两种方式同步方式:接收设备能自动与发送计算机同步,接收字符有规则的分割开来,以块为单位,没有起始位和停止位,效率高。异步方式:以字符为传送单位,传送的字符之间有无规律的间隔,这样可能使接收设备不能正常接收数据,因为每接收完一个字符都不能确切地知道下一个接收的字符从何时开始。(通过加开始位和停止位实现)传输效率低,成本也低。字符传输位和字节文本编码非文本编码帧位和字节二进制中的每一位0和1,被叫做一个位每8个位构成一个字节一个字节中最右面的位被称为第0位,最左面的位被称为第7位。文本编码文本(字符字母、标点符号等)在计算机中存储时,每个不同的字符都用不同的数值来表示。这些数值的范围通常在0-127或0-255范围。7位:ASCII码,每个字节留一个备用位8位:前128个遵循ASCII码规则,其余的128个用来做扩展字符、数字符号、图形字符等编码。非文本编码某些可执行指令文件和图形图像文件就是以二进制形式而不是ASCII码形式存储的。一个数据可用二进制形式存储,可以占多个字节。在通信领域,常常把这种类型的资料叫做二进制数据。帧帧:在串行异异步通信情况况下,构成一一个字节的那那些数据单元元被称为数据据位,在数据据位的前、后后要加上起始始位、停止位位和奇偶校验验位。一个字符所使使用的位数根根据协议而不不同。称这些位数为为字符位数据据长或字长。。通常不是8位位就是7位。。2、串行通信信RS-232串行通信RS-485串行通信USB接口IEEE-1394RS-232串行通信RS-232的通信端口口是每台计算算机上的必要要配置,通常含有COM!和COM2两个端端口。计算机上的RS-232均是公头一般有两种::9引脚和25引脚RS-485串行通信(差分方式传传输)RS-485的通信方式式可有效地防防止噪声信号号的干扰。RS-485的信号将被被发送出去时时会先分成正正负的两条线线路,当到达达接收端后,,再将信号相相减还原来原原来的信号;;如果将原始始的信号记为为(DT),而被分成成后的信号分分别记为(D+)及(D-),则原始的的信号与离散散的信号在由由发送端发送送出去时:((DT)=(D+)-(D-)如果此线路受受干扰,则两两条传输线上上的信号会分分别成为(D+)+Noise及(D-)+Noise(DT)=[(D+)+Noise]-[(D-)+Noise]=(D+)-(D-)USB(UniversalSerialBus)接接口集成一般计算算机所使用的的外围设备的的连接方式,,而且其所采用用的信号传输输方式也是串串行通信。USB特性::低价位,热热连接,单一一的连接头方方式,连接数数多,线上供供电,不占系系统资源,错错误检测与复复原,节省能能源,支持四四种传输(巨巨量、实时、、中断及控制制4种传输模模式),速度度较快(12Mbps/RS-232最快115bps)IEEE-1394IEEE-1394(也也称FireWire,,火线)与USB一样拥拥有即插即用用的功能,也也是用于解决决计算机与外外围设备复杂杂的连接问题题,并且也是是使用串行通通信的传输方方式。IEEE-1394的传传输速度是400Mbps,而且速速度还向1000Mbps迈进USB与IEEE-1394的比比较比较项项目USBIEEE-1394应用低低速速设备备高高速设设备带宽(Mbps))1.5,12100,200,400电缆长长度5米米4.5米电缆4线线6线线即插即即用支支持持支支持持3、硬硬件基基础知知识PC机机的RS-232接接口名名称尚尚未统统一,,有多多个名名称::RS-232口、、串口口、通通信口口、COM口、、异步步口等等。123456789常用的的9条条RS-232信号号线引脚信号名称信号方向简称信号功能1载波检测DCE-DTEDCD(DataCarrierDetect)数据链路已连接2接收数据DCE-DTERxD(Receive)DTE接收串行数据3发送数据DTE-DCETxD(Transmit)DTE发送串行数据4数据终端就绪DTE-DCEDTR(DataTerminalReady)DTE准备准备就绪5信号地-SG(SignalGround)公共信号地6数据设备就绪DCE-DTEDSR(DataSetReady)DCE准备就绪,可以接收7请求发送DTE-DCERTS(RequesttoSend)DTE通知DCE请求发送8清除发送DCE-DTECTS(CleartoSend)DCE已切换到接收模式9振铃指示DCE-DTERI(RingIndicator)通知DTE有远程呼叫一次应应答呼呼叫过过程Modem从接接收到到振铃铃信号号开始始,到到数据据传输输结束束Modem和和DTE恢恢复到到原来来的空空闲状状态为为止的的过程程。数据据终端端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返回回到初初始状状态。。通信参参数数据据的的传传送送速速度度数据据的的传传送送单单位位数据据的的传传送送速速度度波特特率率::每每秒秒所所能能产产生生的的最最大大电电压压状状态态改改变变率率((一一秒秒钟钟可可以以振振荡荡的的次次数数))bps通信信双双方方必必须须要要取取得得一一样样的的通通信信速速度度。。原原始始信信号号经经过过不不一一样样的的波波特特率率取取样样后后,,所所得得的的结结果果完完全全不不一一样样,,如如取取样样速速度度只只有有原原来来一一半半时时,,信信号号被被跳跳着着取取样样,,数数据据因因此此错错误误。。数据据的的传传送送单单位位一般般串串行行通通信信端端口口所所传传送送的的数数据据是是字字符符类类型型,,若若用用来来传传输输文文件件,,则则会会使使用用二二进进制制的的数数据据类类型型。。起始始位位及及停停止止位位异步步串串行行传传输输时时需需要要当发发送送端端要要开开始始传传送送数数据据时时,,便便将将传传输输线线上上的的电电压压由由低低电电位位提提升升至至高高电电位位,,而而当当传传送送结结束束后后,,再再将将电电压压降降至至低低电电压压。。接接收收端端会会因因起起始始位位的的触触发发((因因电电压压由由低低电电位位升升至至高高电电位位))而而开开始始接接收收数数据据;;并并因因停停止止位位的的通通知知((因因电电压压维维持持在在低低电电位位))而而确确节节知知道道数数据据的的字字符符已已经经结结束束。。校验验位位的的检检查查用来来检检查查所所传传送送数数据据正正确确性性的的一一种种核核对对码码,,其其中中又又分分成成奇奇校校验验((Odd))及及偶偶校校验验((Even))串行行通通信信上上的的字字符符数数据据格格式式起始始位位+传传送送字字符符+校校验验位位+停停止止位位4、、模模式式及及流流量量工作作模模式式硬件件握握手手软件件握握手手工作作模模式式当计计算算机机在在进进行行数数据据的的传传送送与与接接收收时时,,传传输输线线上上的的数数据据流动动情情况况可可分分为为3种种::单工工::传传输输线线上上的的数数据据流流动动只只有有一一个个方方向向半双双工工::数数据据流流动动是是双双向向,,但但同同一一时时间间只只能能一一个个方方向向行行进进全双双工工::传传输输线线同同时时具具有有两两个个方方向向的的传传输输能能力力RS-485属属于于半半双双工工,,RS-232属属于于全全双双工工((引引脚脚在在设设计计时时就就是是接接收收与与传传送送是是分分属属两两个个不不同同的的引引脚脚与与线线路路。。))串行行数数据据的的流流动动方方式式当数数据据要要由由A设设备备传传送送至至B设设备备前前,,数数据据会会先被被送送到到A设设备备的的数数据据输输出出缓缓冲冲区区,,接接着着再由由此此缓缓冲冲区区将将数数据据由由RS-232线线路路传传送送到到B设设备备;;同同样样地地,,当当数数据据通通过过硬硬件件线线路路传传送送到B设设备备时时,,数数据据首首先先会会送送到到接接收收缓缓冲冲区区,,而设设备备B的的CPU再再到到接接收收缓缓冲冲区区将将数数据据读读取取并进进行行处处理理。。握手手握手手信信号号::提提供供一一种种控控制制数数据据流流的的方方法法,,即即接接收收设设备备可可以以控控制制发发送送设设备备的的数数据据发发送送。。如果果接接收收设设备备速速度度比比发发送送速速度度快快,,握握手手信信号号可可以以略略去去。。在异异步步串串行行通通信信中中,,这这称称之之为为握握手手((handshaking))或或流流量量控控制制((flowcontrol))。。流量量控控制制::保保证证传传输输双双方方都都能能正正确确地地传传送送和和接接收收数数据据而而不不会会漏漏失失。。握手手控控制制可可以以具具休休分分为为硬硬件件握握手手和和软软件件握握手手。。硬件件握握手手使用用专专门门的的握握手手电电路路去去控控制制数数据据的的传传输输。。当接接收收设设备备准准备备好好之之后后,,就就通通过过专专用用的的握握手手电电路路传传送送一一个正正电电压压给给发发送送设设备备,,指指示示发发送送设设备备发发送送数数据据。。如如果果接接收设备传传送一个个负电压压给发送送设备,,则指示示发送设设备停止发送数数据。硬件握手手用到DSR、、CTS、DTR、RTS4条硬件件线路,,其中DTR、、RTS指的是是计算机机上的RS-232端端;而DSR、、CTS则是指指被控制制的设备备端。计算机->设备备设备必须须将相对对于计算算机上的的DSR引脚降降为低电电压计算机检检测到DSR引引脚为低低电位后后,暂停停数据的的传输;;同时设设备继续续处理位位于缓冲冲区的数数据等设备的的接收缓缓冲区数数据量下下降到一一定程度度后,设设备将DSR引引脚的标标准电压压升高计算机一一检测到到DSR引脚为为高电压压后,随随即继续续传送数数据给设设备设备->计算机机计算机将将DTR引脚降降为低电电压设备检测测到DTR引脚脚为低电电压后,,暂停数数据的传传输;同同时计算算机也会会继续处处理位于于缓冲区区的数据据待计算机机的接收收缓冲区区中数据据量下降降到一定定程度后后,计算算机将DTR引引脚的标标准电压压升高设备一检检测到DTR引引脚为高高电压后后,随即即继续传传送数据据给计算算机软件握手手以数据线线上的数数据信号号来代替替实际的的硬件线线路最常见的的是XON/XOFF协议::若接收端端欲使发发送端暂暂停数据据的传送送时,它它便向发发送端送出ASCII第19号字符符(十六六进制是是13));而欲欲恢复传传送时,便便向发发送端端送出出ASCII第第17号字字符((十六六进制制是11)),两个字字符的的交互互使用用,便便可控控制发发送端端的传传送操操作了了。其操作作流程程与硬硬件握握手类类似。。5、接接线和和错误误预防防接线方方法错误预预防接线方方法RS-232口口特点点:9引脚脚或25引引脚公头((区别别于打打印机机接头头)123456789543219876计算机机上为为公头头连线上上为公公头当使用用RS-232与Modem进行行连接接时,,直接接连接接即可可当使用用RS-232和其其他的的设备备进行行连接接时,,有时时就必必须做做必要要的跳跳线跳线跳线的的实际际意义义就是是一个个传送送的信信号必必须到到达对对方的的接收引脚脚,如如此才才能形形成一一个完完整的的通路路。跳线::欲将将数据据从一一个地地方传传送至至另一一个地地方,,其实实只要要使用用第2引脚脚、第第3引引脚与与第5引脚脚就可可以形形成一一个最最简单单的通通信线线路。。实际际制作作:将将RS-232线的的一端端接头头拆掉掉,将将里面面的第第2引引脚和和第3引脚脚对调调即可可。跳线的的意义义:甲甲方传传送的的数据据必定定到乙乙方的的接收收信道道;而而乙方方的传传送数数据则则会到到达甲甲方的的接收收信道道,双双方的的传送送与接接收形形成一一个完完整的的回路路。错误预预防检测数数据在在传送送过程程中发发生的的错误误CheckSum:将所所有要要传送送字符符的ASCII码做做加法法运算算,计计算其其总和和后将将此数数目与与一数数字((通常常是255)做做除法法运算算,再再取其其余数数,将将此余余数组组合成成传送送字符符串的的一部部分而而传送送出去去;同同样,,接收收方也也以相相同的的方式式对所所传送送过来来的字字符串串进行行运算算操作作,以以判断断数据据的正正确性性,如如果不不对,,则要要求发发送方方重发发。CRC(CCyclicRedundancyCheckCode循循环冗冗余校校验码码)将欲传传输的的数据据块视视为一一堆连连续位位所构构成的的一个个整数数值,,并将将此数数值除除一个个特定定的除除数。。错误预预防原原理::将所传传送的的数值值做相相加的的操作作后与与一个个固定定的除除数进行行除法法运算算,所所得的的余数数即为为校验验码。。传送送与接收收的双双方只只要针针对其其固定定的检检查方方法分分别进进行运算算,比比较后后只要要双方方均一一致,,即正正确;;若不不一致,,数据据重传传。6、错错误排排除波特率率失配配检验错错误字长不不匹配配停止位位错帧错波特率率失配配如果两两个设设备的的波特特率设设置不不同,,当接接收设备试试图接接受数数据时时,程程序将将报告告校验验错和帧错错。校验错错误指数据据在传传输中中被破破坏,,至少少可以以说明明设备在奇奇偶校校验位位类型型设置置不同同或者者字长长不同。字长不不匹配配发送的的是8位字字长,,接收收采用用7位位字长长发送的的是7位字字长,,接收收采用用8位位字长长停止位位错接收端端要求求一个个停止止位,,而发发送端端发送送了两两个停停止位位接收端端要求求两个个停止止位,,而发发送端端发送送了一一个停停止位位帧错一般指指位数数不匹匹配。。这个类类型的的错误误,通通常是是在没没有接接收到到要求求的停停止位位时出出现。。第2章章串串行通通信程程序及及组件件建立立1、串串行通通信的的WindowsAPII简述2、通通信测测试3、自动与与事件1、串行通通信的WindowsAPI简述串行通信相相关函数串口通信流流程Delphi的Windows.pas单元文文件中已经经将Win32API均声声明进去,,因此在Delphi里面使使用API时只要在uses区区段中加入入Windows,,使其引用用该单元文件即即可串行通信相相关函数CreateFile:建立立文件,在在此用打开开通信端口口CloseHandle:关关闭由CreateFile建立的文文件,在此此用于关闭闭通信端口口GetCommState:取得计算算机串口的的设置参数数SetCommState:设置计算算机串口的的参数WriteFile:将数据据写入文件件,在此用用来将数据据由串口送送出ReadFile:由文件中中读取数据据,在此用用来取得送送到串口的的数据ClearCommError:清除除串行端口口的错误,,并取得信信息串行通信相相关函数PurgeComm:清除串串口上的缓缓冲区EscapeCommFunction:控制制串口的硬硬件状态SetCommMask:设设置事件的的掩码,用用以触发事事件WaitCommEvent:等待设设置事件的的发生GetCommModemStatus:取得得串口上的的硬件线路路状态HANDLECreateFile(LPCTSTRlpFileName,//文件名名指针DWORDdwDesiredAccess,//存取(读读/写)模模式DWORDdwShareMode,//共共享模式LPSECURITY_ATTRIBUTESlpSecurityAttribute,//securityattribute结构构指针DWORDdwCreationDistribution,//打打开文件的的方式DWORDdwAttrsAndFlags,//文件属性性HANDLEhTemplateFile//带属性性复制的文文件句柄);有关参数说说明lpFileName:欲打开的的文件名称称。以串口口通信来说说,就是COM1、、COM2等dwDesiredAccess:读写模式式设备。由由于将会对对串口进行行读写操作作,因此在在此给定GENERIC_READ和和GENERIC_WRITE常数dwShareMode:是否共享享串行端口口。一般不不共享,设设为0lpSecurityAttribute:传入一个SecurityAttribute结构,,指明其返返回的Handle是否可以以被子程序序所继承。。在此设置置为nil,表示不不可继承dwCreationDistribution:指定如何何打开文件件。在打开开设备时,,此参数设设定为OPEN_EXISTINGdwAttrsAndFlags:文件属性性及相关标标志。此项项设置为0hTemplateFile:此项设置置为0BOOLCloseHandle(HANDLEhObject);hObject:要要关闭对象象的句柄当函数返回回True时,表示示关闭动作作完成。VarFhandle:THandle;ComName:array[0..4]ofchar;//ComName:string;BeginComName:=‘COM1’;//PCHAR(ComName)FHandle:=CreateFile(ComName,GENERIC_READorGENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);ifFHandle<>INVALID_HANDLE_VALUEthenshowmessage(‘‘串口打开开成功!’’)Elseshowmessage(‘‘串口打开开失败!’’);CloseHandle(FHandle);End;GetCommStateBOOLGetCommState(HANDLEhFile, //通通信设备备的句柄LPDCBlpDCB//设备备控制块结结构的地址址);_DCB=packedrecordDCBlength: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,spaceStopBits:Byte;//0,1,2:1,1.5,2XonChar:CHAR;//设置Tx和Rx的的XON字字符XoffChar:CHAR;//设置Tx和Rx的的XOFF字符ErrorChar:CHAR;//有错误时时的替换字字符EofChar:CHAR;//表示输输入结束的的字符EvtChar:CHAR;//接收事事件字符wReserved1:Word;//保留,未未使用end;TDCB=_DCB;DCB=_DCB;PDCB=^TDCB;SetCommStateBOOLSetCommState(HANDLEhFile, //通通信设备备的句柄LPDCBlpDCB //设设备控制块结结构的地址);Var
FDCB:TDCB;GetCommState(FHandle,FDCB);FDCB.BaudRate:=9600;FDCB.Parity:=EVENPARITY;FDCB.Stopbits:=ONESTOPBIT;FDCB.Bytesize:=8;SetCommState(FCOMHandle,FDCB);WriteFileBOOLWriteFile(HANDLEhFile, //要写入文文件的句柄LPCVOIDlpBuffer,//写写入文件中的的数据的指针针DWORDnNumberOfBytesToWrite,//写写入的字节节数LPDWORDlpNumberOfBytesWritten, //写写入总字节数数的指针LPOVERLAPPEDlpOverlapped//overlappedI/O结构构的指针);//lpOverlapped通通常用来作作后台工作时时同步检查之之用,在串行行通信中若不不同时使用串串行端口,则则可不使用,,设为nilvari:byte;strlen:DWord;xx:byte;dat:array[0..99]ofchar;begindat[0]:=chr($fe);dat[1]:=chr($1B);dat[2]:=chr($44);dat[3]:=chr($03);dat[4]:=chr($02);xx:=0;fori:=1to4doxx:=xxxorord(dat[i]);dat[5]:=chr(xx);//异或校验strlen:=6;WriteFile(FHandle,dat,strlen,strlen,nil);end;ReadFileBOOLReadFile(HANDLEhFile,//要读取文件件的句柄LPVOIDlpBuffer,//接接收数据的缓缓冲区地址DWORDNumberOfBytesToRead,//读取取的字节数LPDWORDlpNumberOfBytesRead,//读读取总字节数数的地址LPOVERLAPPEDlpOverlapped//OverLappedI/O结构的地址址);Vardat:array[0..99]ofchar;flag:dword;stepno:integer;beginstepno:=0;repeatReadfile(FHandle,dat,1,flag,nil);ifflag>0thenifdat1[0]=chr($fe)thenstepno:=1;until(stepno=1)or(flag<=0);Readfile(FHandle,dat,1,flag,nil);length:=ord(dat1[0]);//取长长度readfile(FHandle,dat1,length,flag,nil);end;PurgeCommBOOLPurgeComm(HANDLEhFile, //通信资源源的句柄DWORDdwFlags //执行动作作);dwFlags:指定执执行的工作PURGE_TXABORT:终止止目前所有的的传输工作,,立即返回,,不管是否完完完成传输的的操作PURGE_RXABORT:终止止目前所有的的读取工作,,立即返回,,不管是否完完成读取操作作PURGE_TXCLEAR:清除除传送缓冲区区中的所有数数据PURGE_RXCLEAR:清除除接收缓冲区区中的所有数数据EscapeCommFunctionBOOLEscapeCommFunction(HANDLEhFile, //通信设备备的句柄DWORDdwFunc //指定执行行的功能);dwFunc:指定串口口必须完成的的工作CLRDTR:将DTR线路降成低低电压CLRRTS:将RTS线路降成低低电压SETDTR:将DTR线路升成高高电压SETRTS:将RTS线路升成高高电压SETXOFF:当接收收到Xoff字符时激活活传输操作SETXON:当接收到到Xon字符符时激活传输输操作SETBREAK:设置置通信状态为为中断(送出出BREAK信号)CLRBREAK:清除除BREAK信号,使传传输动作继续续GetCommModemStatus取得串口数字字输入线路电电压状态可用用该函数BOOLGetCommModemStatus(HANDLEhFile, //通讯设备备的句柄LPDWORDlpModemStat//控制寄寄存器中数值值的地址);lpModemStat:指向检测测到的状态的的参数地址,,32位长度度MS_CTS_ON:CTS(clear-to-send)引引脚升至高电电压MS_DSR_ON:DSR(data-set-ready)引引脚升至高高电压MS_RING_ON::RI引脚升升至高电压MS_RLSD_ON::DCD引脚脚升至高电压压串口通信流程程打开通信端口口打开成功?通信参数设置置其他函数操作作显示错误信息息关闭串口结束开始继续操作?否是2、通信测试试通信步骤回路测试通信步骤设置通信端口口号码使用CreateFile函数打开开通信端口设置通信协议议设置传输速度度等参数设置其它参数数送出字符串或或读入字符串串,使用ReadFile及WriteFile函数使用完毕后以以CloseHandle函数将通通信端口关闭闭回路测试硬件设置软件实现硬件设置两台计算机,,各使用其上上的一个串口口,一条RS-232两两边都是母头头的线一台计算机,,但拥有两个个串行通信口口,一条RS-232两两边都是母头头的线一台计算机,,一个串行通通信口,一条条RS-232线,至少少其中一边是是母头3、自动与事事件自动化的实现现轮询方式:不不断地发出询询问的信号给给设备,要求求设备返回计计算机所要的的信息使用定时器((Timer组件),设设定时间间隔隔,当时间间间隔一到,便便会执行原先先放在定时器器中的程序代代码使用While…Do不不断地执行程程序代码线程方式:将将串行通信的的功能封装在在一个线程中中,利用线程程的不断执行行而达到自动动化的目的建立多线程工作原理:操作系统将CPU处理数数据的时间切切成很多的时时间片(TimeSlice),操作系系统再将应用用程序的代码码加载到CPU中执执行,一旦这这一小块的时时间执行完毕毕后,操作系统会将将正在执行的的程序放一边边,然后再取取另外一个个应用用程序序进CPU中执执行,,一样样只执执行这这一小小块时间间片,,如此此周而而复始始,所所以见见到了了整个个系统统中多任务务的情情况。。线程的的实现现应用程程序执执行后后即产产生主主线程程,而而主线线程可可以衍衍生出其其他线线程。。一个个应用用程序序可以以依需需要而而造出出多个线线程对对象,,每一一个线线程开开始执执行后后即被被排入入CPU的执执行周周期中中,这这些线线程可可能被被建立立后开开始执行,,直到到应用用程序序结束束;也也有可可能执执行完完工作作后在应应用程程序结结束前前就结结束掉掉,实实际的的情况况看具具体需求求而定定。Tthread类中中常用用的方方法Create::建立立线程程。使使用此此方法法可建建立线线程,,有1个参参数,,若设设成True,,表示示建立立后不不立即即执行行;若若设成成False,,则表表示一一建立立后马马上执执行。。constructorCreate(CreateSuspended:Boolean);Free::释放放线程程,线线程程程序代代码将将从内内存中中被删删除procedureFree;Resume::执行行程序序代码码。若若线程程暂停停时,,使用用此指指令再再次激激活procedureResume;Suspend:暂暂停线线程。。将执执行中中的线线程暂暂停procedureSuspend;varSecondProcess:TMyThread;{TMyThreadisacustomdescendantofTThread}beginSecondProcess:=TMyThread.Create(True);{createsuspended-secondprocessdoesnotrunyet}SecondProcess.Priority:=tpLower;{settheprioritytolowerthannormal}SecondProcess.Resume;{nowrunthethread}end;第4章章串串行通通信中中的字字符与与字节节1、字字符与与字节节2、字字节数数据的的传送送与接接收1、字字符与与字节节字符和和字节节的差差别Delphi中中的字字符串串种类类及处处理函函数中英文文字符符串长长度计计算字符和和字节节的差差别Windows支持持的字字符集集有单单字符符集、、双字字节字字符集集及UniCode字符符集,,在西西方国国家使使用Windows系统统基本本使用用单字字符集集,每每一个个字符符都使使用一一个字字节来来表示示;而而亚洲洲国家家由于于字符符无法法单用用一个个字节节表示示,因因此使使用双双字节节字符符集,,其中中每个个字符符使用用双字字节字字符集集。UniCodeUniCode涵盖盖了世世界上上所有有国家家的字字符码码,每每个字字符用用一个个唯一一的内内码来来表示示,其其特点点是所所有的的字符符以两两个字字节表表示,,不仅仅中文文使用用两个个字节节,英英文也也使用用两个个字节节串口通通信过过程中中,如如果传传送的的是一一个英英文字字节组组成,,只要要一个个字节节就可可以将将信息息传送送出去去;如如果传传送的的是双双字节节的字字符((如中中文)),完完整的的字符符传送送就必必须是是两个个字节节。Delphi中中的字字符串串种类类及处处理函函数Chr(x):返回回X参参数的的字符符Ord(x):返回回x参参数所所列的的序数数,一一般用用来解解读字字符在在ASCII码码中的的序数数Pos(substr,str):返返回str中,,substr出现现的位位置,,若找找不到到则返返回0StrPos(str1,str2):返返回str2在在str1出现现的第第一位位置的的指针针,无无则返返回nilCopy(str,index,count):返返回str参数数中,,索引引index开开始的的count数数目的的字串串Delete(str,index,count):删删除str字串串中,,由index所指指定的的开始始位置置的count数目目的字字串Length(str):返返回字字串str的长长度SetLength(str,newlen):设设置str的长长度Value(str,value,code):将将str转转成数数值value,code表表示发发生错错误的的位置置Str(value,str):Trim(str),TrimRight(str),TrimLeft(str):去空空格StringReplace(str,oldpattern,newpattern):替换换Insert(s1,s2,index):s1插插入s2的的第index位置置中英文文字符符串长长度计计算TypeMaximumlengthMemoryrequiredUsedforShortString255characters2to256bytesbackwardcompatibilityAnsiString~2^31characters4bytesto2GB8-bit(ANSI)charactersWideString~2^30characters4bytesto2GBUnicodecharacters;multiuserserversandmulti-languageapplicationsVarInstrW:WideString;InstrA:ANSIString;Instr:string;BeginInstr:=edit1.text;InstrW:=edit1.text;InstrA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中兽医基础知到课后答案智慧树章节测试答案2025年春黑龙江农业工程职业学院(松北校区)
- 广东江门幼儿师范高等专科学校《流行舞》2023-2024学年第一学期期末试卷
- 上海第二工业大学《广联达软件实训》2023-2024学年第一学期期末试卷
- 河北地质大学《执业医师考试实践技能培训》2023-2024学年第一学期期末试卷
- 关于墨汁容器造型设计问卷调查
- 外网排水施工方案
- 桥梁施工方案编制计划
- 2025年中考语文一轮复习:文学类文本阅读 讲义
- 天津市河西区2024-2025学年高一上学期期末质量调查数学试题(解析版)
- 河北省邢台市2024-2025学年高二上学期期末英语测试试题【含答案】
- 2025年度智慧养老服务平台开发与运营服务合同
- 2025年湖南科技职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025中国铁塔甘肃分公司社会招聘60人易考易错模拟试题(共500题)试卷后附参考答案
- 2025社区医保工作计划
- 2025年河南中烟工业限责任公司大学生招聘笔试高频重点提升(共500题)附带答案详解
- 社会责任内审评估报告表
- 农村土地流转合同范本
- 个人借款分期还款合同
- 道德与法治研修日志
- 船舶起重吊装作业安全方案
- 2023年佛山市三水区乐平镇镇属国有企业招聘笔试真题
评论
0/150
提交评论