版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、接口的基本功能cpu与i/o设备进行数据交换时存在以下问题:1)速度不匹配;2)时序不匹配;3) 信息格式不匹配;4)信息类型不匹配。cpu与外设之间的数据交换必须通过接口来完成,通常情况下,接口应具备以下功能:1)数据缓冲功能;2)信号转换功能;3)设备选择功能;4)接受、解释并执行微处理器的 命令功能;5)中断管理功能;6)数据宽度变换的功能;7)楞编程功能。常用接口简介1、并行接口主机与接口、接口与外设之间都是以并行方式传送数据,即每次传送一个字或字节的 全部代码。其特点是:1)接口中具有与系统总线直接相连的输入/输出数据缓冲器和一组数据线;2)接口中具有与外部设备进行联络的应答信号。3
2、)接口中有地址译码电路、产生片选信号和内部寄存器地址选择。4)接口可使用程序传送方式或程序中断传送方式实现外设与主机z间的信息交换。5)简单并行接口只有一个i/o通路驱动外设,对于复杂的、可编程并行接口可有儿个 i/o通路驱动不同外设的输入/输岀。并行接口的数据通路宽度是按字或字节设置,其数据传送速率高。当外设的工作方式是 并行传送数据,并且与主机系统距离较近时,则选用并行接口。由于并行接口可以直接和各 种i/o设备的数据线相连,所以用它來连接外设组成系统非常方便,故在慢速设备中使用很 普遍。2、串行接口串行口不同于并行口之处在于它的数据和控制信息是一位接一位串行地传送下去。虽然 速度会慢一些
3、,但传送距离较并行口更长,因此,长距离的通信应使用串行口。3、磁盘接口1)ide (integrated driver electronics,集成驱动器电子部件)接口2)e1de接口:所支持的设备除了硬盘,还包括cd-rom.磁盘备份设备等,通常提 供两个插座(主插座和辅插座),每个插座又可连接主、从两个设备。主插座通常 与高速的局部总线相连,供硬盘使用;而辅插座则与isa总线相边,供磁带机或 cd-rom 使用。4、scsi (small computer system interface)接口除了硬盘外,scsi接口还可以连接cd-rom驱动器、扫描仪和打印机等,它有以下特 点:1)sc
4、si是一个多任务接口,具有总线仲裁功能,因此,scsi总线上的适配器和控制 器可以并行工作,在同一个scsi控制器控制下的多台外设也可以并行工作。scsi可以按同 步方式和异步方式传输数据。scsi总线上的设备没有主从之分,双方平等。2)scsi可分为单端传送方式和差分传送方式。单端scsi的电缆不能超过6m,如果 数据传送距离超过6m,应采用差分传送方式。3)scsi接口是智能化的,可以彼此通信而不增加cpu的负担。在ide和eide设备 之间传输数据时,cpu必须介入,而scsi设备在数据传输过程中起主动作用,并能在scsi 总线内部具体执行,直到完成再通知cpuo5、usb 接口 接口的
5、控制方式cpu通过接口对外设进行控制的方式有以下儿种:1)程序查询方式2)中断处理方式3)dma (直接存储器存取)传送方式9针串口(db9)信号脚说明针号功能说明缩写1数据载波检测dcd2接收数据rxd3发送数据txd4数据终端准备dtr5信号地gnd6数据设备准备好dsr7请求发送rts8清除发送cts9振铃指示dell串口通信接线原则:接收数据针脚与发送数据针脚相连,彼此交叉,信号地对应相接。com缺省端口地址和irq号端口地址中断请求号(irq)com13f8h4com22f8h3com33e8h4或11com42e8h3或10端口可以使用硬件支持的任何地址和irq号,每个端口保留8个
6、连续地址,从基址开始。串行接口输入输出过程描述串行接口包括4个主要寄存器,即控制寄存器、状态寄存器、数据输入寄存器及数据输 出寄存器。控制寄存器用來接收cpu送给此接口的各种控制信息,而控制信息决定接口的 工作方式。状态寄存器的各位叫状态位,每一个状态位都可以用來指示传输过程中的某一种 错误或当前传输状态。数据输入寄存器总是和串行输入/并行输出移位寄存器配对使用的。 在输入过程中,数据-位一位从外部设备进入接口的寄存器,当接收完一个数据后,数据就 从移位寄存器送到输入寄存器,再等待cpu来取走。输出的情况与输入过程类似,在输出 过程中,数据输出寄存器与并行输入/串行输出移位寄存器配对使用。当c
7、pu往数据输出寄 存器中输出一个数据后,数据便传输到移位寄存器,然后一位一位地通过输出线送到外设。 串行通信数据的收发方式分为异步通信方式与同步通信方式。并行打印机适配器信号适配器 信号db-25信号 方向名称寄存器功能说明11输出nstrobecontrol低电平有效,表明数据线上有 效数据到达2至92至9输岀data_1 至data 8data8位数据线,只有当spp为零 时才输出数据1010输入nackstatus以插入低电平的形式出现,表 明最后一个字符接收完毕1111输入busystatus缺打印纸1212输入pestatus以插入高电平的形式出现,表 明打印机处理在线等待1313输
8、入selectstatus低电平有效,通知打印机对遇 到的每一回车自动换行1414输入autofeedcontrol由打印机发送至计算机,表明 打印机处理错误状态3215输岀nerrorstatus低电平有效,对打卬机复位3116输入ninitcontrol低电平有效,表明己经选中的打印机3617输出nselect-incontrol19、 21、23、 25、27、 29、30、3418至25ground打印机适配器三个端口的缺省典型地址端口pc: lpt1pc: lpt2pc: lpt3data3bch378h278hstatus3bdh379h279hcontrol3beh37ah27
9、ah并行接口输入输出过程描述输入过程在并行接口中应该有一个控制寄存器用来接收cpu对它的控制命令,有一个 状态寄存器提供各种状态位供cpu查询。为了实现输入输出,并行接口中述必定有相应的 输入缓冲寄存器和输出缓冲寄存器。当并行接口处于输入过程时,使状态线“数据输入准备 好”成为高电平,作为对外设的响应。外设接到此信号,便撤除数据和“数据输入准备好” 信号。数据到达接口后,接口会在状态寄存器中设置“输入准备好信号”状态位,以便cpu 迹行查询,接口也可以在此时向cpu发送一个中断请求。所以,cpu既可以用软件查询方 式,也可用中断方式来设法读取接口中的数据。cpu从并行接口中读取数据后,接口会自
10、 动清除状态寄存器屮“输入准备好”状态位,并使数据总线处于高阻状态。此后,乂开始下 一个输入过程。输出过程每当外设从并行接口取走一个数据后,接口就会将状态寄存器中“输入准备 好”状态位置1,以表示cpu当前可以往接口中输出数据,这个状态位可供cpu进行查询。 此时,接口也可以向cpu发送一个中断请求。所以cpu既可用软件查询方式,也可用中断 方式往接口中输出一个数据。当cpu输出数据到达接口的输出缓冲寄存器后,接口会自动 清除“输入准备好”的状态位,并且将数据送往外设,同吋,接口往外设发送一个“驱动信 号”来启动外设接收数据。外设被启动后,开始接收数据,并往接口发一个“数据输出回答” 信号。接
11、口收到此信号,便将状态寄存器中的“输入准备好”状态位置1,以便cpu输出 下一个数据。并行接口与串行接口通信比较并行通信是把一个字符的各数位用儿条线同时传输,传输速度快、效率高。但它比串 行通信所用的传输线多,因此,并行通信常用在传输距离较短、数据传输速率较高的场合。 由于串行通信是按数据一位一位地依次传输,每一位数据占据一个固定的时间长度。所以, 只要少数几条线就可以在系统之间交换信息,较少的传输线使通信成本降低,尤其在远程传 输时更为突出,但是,啬了数据格式的转换、位计数及传送时控制等技术,便其技术比并行 通信更为复杂。同步传输方式采用同步传输时,将许多字符组成一个信息组,这样,字符可以一
12、个接一个地传输, 但是,在每组信息(通常称为帧)的廿始要加上同步字符,在没有信息要传输时,要填上空 字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5至8bit。当然, 对同一个传输过程,所有字符对应同样的比特数,比如说n比特。这样,传输时,按每n 比特划分为一个时间片,发送端在一个时间片发送一个字符,接收端则在一个时间片中接收 一个字符。同步传输时,一个信息帧中包含许多字符,每个信息帧有同步字符作为开始,一般将 同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和空 字符。接收端当然是应该能识别同步字符的,当检测到有一串比特和同步字符相匹配时,就
13、认为开始一个信息帧,于是,把此后的比特作为实际传输信息來处理。异步传输方式异步传输方式指比特被划分成小组独立传送。发送方可以在任何吋刻发送这些比特组, 而接收方不知道它们会在什么时候到达。异步传输存在一个潜在的问题,即接收方并不知道 数据会在什么时候到达。在它检测到数据并作出响应之前,第一个比特已经过去了。因此这 个问题需要通过通信协议加以解决。如每次异步传输都以一个歼始比特廿头,它通知接收方 数据己经到达了。这就给了接收方响应、接收和缓存数据比特的时间。在传输结束时,一个 停止比特表示一次传输的终止。同步传输方式和异步传输方式的简单比较1)从通信效率的角度看,同步传输方式接收方不必对每个字符
14、进行开始和停止的操作,因 此同步传输通信效率高,异步传输效率低。2)异步传输简单,双方时钟可允许一定误差。同步传输较复杂,双方时钟的允许误差较小。3)异步传输只适用于点到点的数据传输,而同步传输可用于点和多点z间的数据传输。通信协议:是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传 送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守。因此, 也叫做通信控制规程。目前,釆用的通信协议有两类:异步协议和同步协议。同步协议乂有而向字符和面向比 特以及而向字节计数三种。比特率二波特率xn= 2/ xlog2bb = 10 甌(s/n)比特率二带宽xlog2(l
15、 + s/7v)串口编程常用的ibm-pc的irq线irq设备nmi非屏幕中断0定时器1键盘2保留3串口 24串口 15硬盘6软盘7并口 1com1和com2的i/o地址偏移量主适配器次适配器寻址寄存器03f82f8tx缓存器03f82f8rx缓存器03f82f8因子锁存器lsb13f92f9因子锁存器msb13f92f9中断使能寄存器23fa2fa中断标识寄存器33fb2fb线路控制寄存器43fc2fcmodem控制寄存器53fd2fd线路状态寄存器63fe2femodem状态寄存器端口编程概述在dos的系统接口中dos int2ih的03h和04h号功能调用为异步串行通信的接收 和发送功能
16、,而bios int14h有4组功能调用为串行通信服务,所以在dos中采川寄存器 直接读写、bios调用、通信中断程序等方法可较容易实现串口通信。但在windows中由于 windows采用消息驱动和设备统一管理,以及利用消息队列进行程序控制,所以dos下的 方法都不宜采用。在windows中为实现串口通信,windows的sdk提供了完备的api函数 和以中断方式驱动的通信驱动程序,使编程变得较为容易。一般来说,要完成串口通信,在32位模式下,有以下四种方法:1、以文件方式打开串口(i) 应用createfileo打开串口女山 handle hcom;dword dwerror;hcom=c
17、ieatfile(<4com rv/ 文件名generic_read i generic.write, /允许读和写0,/独占方式null,open_existing 打开而不是创建file_attribute_normal i file_flag_overlapped, 重叠方式if(hcom=invalid_handle_ value)d werror=get lasterror();处理错误一旦端口处理打开状态,就可以分配一个发送缓冲区和接收缓冲区,并通过调用 sctupcomm ()实现其他初始化工作。(2) 串行口的初始化调用getcommstate ()函数可以获得串口的配置
18、,该函数把当前配置填充到一个dcb 结构中。dcb结构包含了诸如数据传输速率、每个字符的数据位数、奇偶校验和停止位数 等信息。在查询或配置串行口的属性时,都要用dcb结构來作为缓冲区。要修改串行口的 配置,应该先修改dcb结构,然后再调用setcommstate ()函数用指定的dcb结构来设 置串行口。dcb最经常改变的参数是数据传输速率、奇偶校验的方法以及数据位和停止位数, windows为改变这些参数提供了 buildcommdcb ()函数。win32还提供了 buildcommdcbandtimeouts ()函数来设置dcb,该函数可进一步设置超时结构。(3) 利用 readfil
19、eo或 readfileex()和 writefile()或 writefileex()对串行口进行读写操 作,完成数据传输过程。readfileo、writefile()对同步或异步操作都支持,而readfileex。、 writefileex()只支持异步操作。windows系统提供transmitcommchar ()函数,该函数可以在发送时指定一字符的传 递权限级別最高,使该字符可在缓冲区的英他字符发送之前发送。(4) 关闭串口,调用closchandlc ()即可。其他windows串口通信相关api函数:(1) 串口属性:通过getcommpropertics()函数获得。(2)
20、通用通信设备配置:commconfigdialogo®数。(3) 缓冲区控制:purgecommog|数和 flushfilebuffers()函数。(4) 异步i/o操作:异步(重叠)i/o操作是指应用程序可在后台读或写数据,而在前 台做其他爭情。异步i/o操作可由getoverlappedresult()函数获取结果,也可使用windows 信号函数来处理。windows也使用等待函数来检查事件对象的当前状态或等待windows状态信号,在 waitforsingleobject()函数,waitforsingleobjectex()函数,以及 waitformultipleob
21、ject()函数, waitformultipleobjectsex()函数中指定overlapped结构中的hevent,即町获得断数返回 事件。(5) 超时设置:getcommtimeouts()setcommtimeouts()函数。(6) 通信状态和通信错误:clearcommenoro函数的第一个作用是清除错误条件,第 二个作用是确定串口通信状态。(7) 通信事件:(7a)操作通信事件:setcommmask()函数、getcommmask()函数。(7b)监视通信事件:waitcommevent ()函数。(8) 设备控制命令(8a)控制握手信号:escapecommfunctio
22、n ()函数。(8b)设备操作:使用setcommbreak() clearcominbreako®数实现对通信设备的挂起和恢复。2、使用现有的activex控件实现一般使用微软件公司的mscomm控件,它是作为一个ocx提供的。基本使用流程和 直接使用api函数类似。3、直接嵌入汇编这种方法不能在windows nt操作系统下使用,由于windows 98的非完全保护,可以 在windows 98系统下使用这种操作方式。利用c/c+汇编嵌入功能,可以直接对串口进行 操作。如下程序可实现将com1端口的线控制寄存器的最高位置1的操作:_asmmov dx,3fbhmov al,80h
23、out dx,al14、编写vxd或wdm实现mscomm控件提供两种处理通信问题的方法:一是事件驱动方法,一是查询法。1、事件驱动方式事件驱动通信是处理串行端口交互作用的一种有效的方法。在许多情况下,在事件发 生时需要得到通知,例如,在串口接收缓冲区中有字符或cd或rts线上一个字符到达, 在这些情况下,可利用mscomm的oncomm事件捕获并处理这些通信事件。oncomm事 件还可以检查和处理通信错误(参commevent 性)。在编程过程中,就可以在oncomin 事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个 mscomm控件对应一个串口。如果应用程序
24、要访问多个串口,必须使用多个mscomm控 件。2、查询方式在程序的每个关键功能之后,可通过检查commevent属性的值來查询事件和错误,中 要其属性值有了变化,就表明一个通信事件或错误发生。如果应用程序较小,且是自成一体 的,这种方法可能更可取。利用mscomm控件开发串口通信软件,至少要了解5条线的名称及其作用,这5条线 的高低电平状态分别对应mscomm控件相应属性的true/false值。dtr线:用于传输pc机发往串口 modem等设备的信号线,该信号表示pc机是否己 经准备好。rts线:用于传输pc机发往串口 modem等设备的信号,该信号表示pc机是否允许 modem发数据。d
25、sr线:用于传输串口 modem等设备发往pc机的信号,该信号表示modem等设备 上否已作好操作准备。cts线:用于传输串口 modem等设备发往pc机的信号,该信号表示modem上否允 许发送数据。cd线:用于传输串口 modem等设备发往pc机的信号,该信号表示modem已和远方 的设备建立了联系。mscomm控件的通信功能的实现,实际上是调用api函数,而api函数是由comm.drv 解释并传递给设备驱动程序进行的。mscomm控件的属性1) commport 属性void setcommport(short nnewvalue);short getcommport();用于设置并返
26、回连接的串口号,windows将利用该串口和外界通信。在设计时, nnewvalue可设置成1至16的任何数(默认值为1)。但如果用port open ®性打开一个并不 存在的端口吋,mscomm控件会产生错误68 (设备无效)。2) settings 属性void setsettings(lpctstr ipsznewvalue);cstring getsettings();用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。当端口打开时, 如果ipsznewvalue非法,则mscomm控件产生错误380 (非法属性值)。其中ipsznewvalue 用字符串表示,基格
27、式如下:“bbbb, p, d, s”bbbb为数据传输速率,p为奇偶校验,d为数据比特数,s为停止比特数丄psznewvalue 的缺省值为“9600, n, 8, 1”,表示传输速率为9600bit/s,无奇偶校验,8bit数据比特,lbit 停止比特。数据传输速率的合法值:110、300、600、1200> 2400、4800、9600、14400> 19200、 28800、 38400、 56000、 57600> 115200、 12800、 25600。奇偶校验设定值设定值描述e偶校验(event)m标号校验(mark)n无校验(none)o奇校验(odd)s空
28、格校验(space)数据比特数可以是4、5、6、7、8o 停止比特数可以是1、1.5、2o只有当通信的双方的settings属性值都一样,通信连接才能生效。3) handshaking 属性用于设置或者返回硬件握手协议,也就是pc机和通信设备之间为了控制流速而设定的 内部协议。硕件握手协议设定值设定值值描述comnonc0默认值,无握手协议comxonxoff1xon/xoff 握手comrts2request-to-send/clear-to-send 握手comrtsxonxoff3request-to-send 和 clear-to-send 握手皆可4) rthreshold 属性vo
29、id setrthreshold(short nnewvalue); short getrthreshold();在 mscomm控件设置commevent属性为comevreceive并产生oncomm 之前, rthreshold属性设置并返冋要接收的字符数。nnewvalue说明在产生oncomm事件之前要 接收的字符数。当接收字符后,若rthreshoid属性设置为0,贝怀产生oncomm事件。否则该属性为 一阈值,当接收缓冲区内字节数达到或超过该值后就会产生oncomm事件。5) ctsholding 属性void setctsholding(bool bnewvalue)bool
30、getctsholdingo该属性确定是否可通过查询clear to send (cts)线的状态发送数据。该局性在设计吋 无效,在运行时为只读。如果clear to send线为低电平(ctsholding二false)并且超吋吋,mscomm控件设 置 commevcnt 属性为 comevcntctsto 并产生 oncomm 事件 o clear to send 线用于 rts/cts 硬件握手。6) sthreshold 属性void setsthreshold(short nnewvalue);short getsthreshold();mscomm控件设置commevent属性为
31、comevsend并产生oncomm之前,设置并返冋 传输缓冲区中允许的最小字符数。nnewvalue代衣在oncomm事件产生之前在传输缓冲区 中的最小字符数。若sthreshold属性设置为0,数据传输事件不会产生oncomm事件。若sthreshold属 性设置为1,当传输缓冲区完全空时,mscomm控件产生oncomm事件。7) inputmode 属性void setlnputmode(long nnewvalue);long getlnputmode();该属性用于设置或返冋传输数据的类型。设定值值描述comlnputmodetext (缺省)0通过input属性以文本方式取回数据
32、coml 叩 utmodebinary1通过1叩皿属性以二进制方式取回数据8) inputlen 属性void setinputlen(short nnewvalue); short getinputlen();该属性用于设置并返回input属性从接收缓冲区读取的字符数。当设置inputlen为0时 使用i叩ut将使mscomm控件读取接收缓冲区中全部的内容。 若接收缓冲区中inputlen字符无效,i叩ut属性返回一个零长度字符串。在便用input前, 用户可以选择检查inbuffercount属性来确定缓冲区中是否已有需要数目的字符。该属性在 从输出格式为定长数据的机器读取数据时非常有用。
33、9) inbuffersize 属性void sclinbuffcrsizc(short nncwvaluc);short getinbuffersize();该属性用于设置或返回输入缓冲区的大小,默认值为1024字节。10) inbuffercount 属性void setlnbuffercount (short nnewvalue);short getlnbuffercount ();该属性用于返回输入缓冲区内的等待读取的字节个数,可以通过该属性值为0来清除接 收缓冲区。11) input 属性variant getlnput();input属性表示从接收缓冲区移走一串字符,将缓冲区中收到
34、的数据读入变量。该属性 在端口未打开时不可用,在运行时是只读的。注 当inputmode属性值为0时,变量中含string型数据。当inputmode属性值为1时, 变量中含byle型数据。12) portopen 属性void setportopen(bool bnewvalue);bool getportopen();该属性用于打开或关闭端口。如果bnewvalue设为true,可以打开端口;否则关闭端 口。一般情况下在程序开始时打开端口,在程序结束时关闭端口。当应用程序终止时, mscom m控件将自动关闭串口。在打开端口前,确定commport属性设置为止确的端口号。13) outbu
35、ffersize 属性void setoutbuffersize(short nnewvalue);short getoutbuffersize();该属性用于设置或返回发送缓冲区的大小,表示传输缓冲区的字节数,默认值为512 字节。对发送缓冲区的设置越大,应用稈序可使用的内存就越少。如发送缓冲区太小,缓冲 区将会溢出,除非使用握手协议。14) outbuffercounter属性该属性用于返回发送缓冲区内等待发送的字节数,可用来清空发送缓冲区。15) output 属性void setoutput(const variant & new value);该属性用于向发送缓冲区写数据流。
36、该属性在端口未打开吋不可用,在运行时只写。注:该属性可发送文本数据或二进制数据。传输文本数据时,应将字符型数据放入variant 型变量中;传输二进制数据时,应将字节型数据放入variant型变量中。如果通常给应用程 序发送ansi字符串,可以文本方式发送。如果数据包含了内嵌控制字符、null字符等, 必须将其作为二进制传递过去。16) commevent 属性short getcommevent();如果在通信过程中发生错误或事件,将引发oncomm事件并改变其属性值ocommevent 属性值反映错误或事件类型,通信程序的设计中可根据该属性值执行不同的操作。该属性在 端口未打开时不可用,在
37、运行吋是只读的。通信错误设泄值设定值值描述comeventbreak1001接收到中断信号comeventctsto1002clear-to-send 超时comevcnldsrto1003data-set ready 超时comeventframe1004帧错误,硬件检测到一个帧出错,当双方设置的格式 不一致时,就会引发此错误。come ventoverrun1006端口超速。一个字符没有在下一个字符到达之前被硬 件读取,该字符丢失。comeventcdto1007carrier detect 超时comeventrxover1008接收缓冲区溢出comeventrxparity1009奇偶
38、校验错误comeventtxfull1010传输缓冲区溢出,表明输出缓冲区己满,不能再将字 符排入输出缓冲区comeventdcb1011检测索端口、设备控制块(dcb)时的意外错误通信爭件设定值设定值值描述comevscnd1发送事件。发送缓冲区的内容少于sthrcshoid指定的值comevreceive2接收事件。接收缓冲区内字符数达到rthreshold值,该事 件在缓冲区内数据被移走前将持续产生,利用此事件可编 写接收数据的过程comevcts3clear-to-send 线变化comevdsr4data-set-ready 线变化conievcd5carrier detect 线变
39、化comevring6振铃检测comeveof7文件结束。接收数据中出现文件结束字符。17) dtrenable 属性void sctdtrenablc(bool bncwvaluc);bool getdtrenable();该属性确定在通信时是否使dtr线有效,dtr是计算机发送到调制解调器的信号,表 明计算机在等待数据传输。18) rtsenalbe 属性void setrtsenable(bool bnewvalue);bool getrtsenable();该属性确定是否使rts线有效,一般情况下,由计算机发送rts信号到连接的调制解 调帑,请求允许发送数据。19) eofenable
40、 属性void seteofenable(bool bnewvalue);bool geteofenable();该属性确定在输入过程中mscomm控件是否寻找文件结尾字符。当bnewvalue为 true时,eof字符找到时oncomm事件被激活。20) cdholdingvoid sctcdholding (bool bncwvalue);bool getcdholding ();通过查询cd线的状态确定当前是否有传输。carrier detect是从调制解调器发送到相联 计算机的一个信号,指示调制解调器正在联机。该属性在设计时无效,在运行时为只读。21) dsrholding 属性voi
41、d setdsrholding (bool bnewvalue);bool getdsrholding ();确定dsr线的状态。data set ready信号由调制解调器发送到相连计算机,指示作好操 作准备。该属性在设计时无效,在运行时为只读。利用mscomm控件编写的应用程序在通信时如果发生错误或事件,将会引发oncomm 事件并且改变其属性值,通过getcommevento可获得oncomm产生事件或错误的代码。在 通信程序设计中可根据commevent属性值来执行不同的操作。mscomm控件所能捕捉的错误值描述380无效属性值 comlnvalidpropertyvalue383属性
42、为只读 comsetnotsupported394属性为只读 comgetnotsupported8000端口打开时操作不合法comportopen8001超时值必须大于08002无效端口号 comportlnvalid8003属性只在运行时有效8004属性在运行时为只读8005端口 已经打开 com port al readyopen8006设备标识符无效或不支持该标识符8007不支持设备的数据传输速率8008指定的字节大小无效8009缺省参数错误8010硬件不可用(被其他设备锁定)8011函数不能分配队列8012设备没有打开comnoopen8013设备已经打开8014不能使用comm通知
43、8015不能设置 comm 状态 comsetcommstatefailed8016不能设置comm事件屏蔽8018仅当端口打开时操作才有效comportnotopen8019设备忙8020读 comm 设备错误 comreaderror8021为该端口检索设备控制块时的内部错误comdcberrormscomm控件串口编程基本流程1、在当前project中插入mscomm控件扌tjt " project-add to project->componets and controls->registered activex controls n 菜 单选择 componen
44、ts:microsoft communications control,version 6.0 命令插入到当前的 project 屮。结果就添加了类cmscomnio类cmscomm的相关文件mscomm.h和mscomm.cpp也 一并加入project中。2、初始化并打开串口1) 设定通信端口号,即commport属性;2) 设定通信协议,即handshaking属性;3) 设定传输速率等参数,即settings属性;4) 设定其他参数,有必要吋再加上其他的属性设定;5) 打开通信端口,即将portopen属性设为true。3、捕捉串口事项在mainfrm.h中添加:protected:a
45、fx_msg void oncommmscomm();declare_eventsink_map()在mainfrm.cpp中添加:begin_eventsink_map(cmainframe,cframewnd) on_event(cmainframe,id_commctrl,l,oncommmscomm,vts_none)映射activex控件事件end_eventsink_map()4、串口读写使用 getlnput()和 setoutputo®数即可。5、关闭串口setportopen(false);asci【控制字符1、逻辑通信控制字符soh (start of headi
46、ng)stx (start of text)etx (end of text)eot (end of transmission)enq (enquiry)ack (acknowledge)dle (data line escape)nak (negative acknowledge)syn (synchronous)eob (end of block)2、物理通信控制字符null(null)del (delete)can (cancel)em (end of medium)sub (substitute)3、信息分隔符fs (file separator)gs (group separator
47、)rs (record separator)us (unit separator)4、物理设备控制字符bs (back space)ht (horizontal tabulation)lf (line feed)vt (vertical tabulation)ff (form feed)cr (carriage return)bel (bell)5、用于代码扩充的控制字符si (shift in)so (shift out)esc (escape)tapi简介tapi (telephony api)是microsoft公司的windows开放式服务结构中的一部分,它包 括两个接口:开发人员使用的应用程序接口和用于连接某种电话网络的接口。tapi为通信 应用程序提供控制通信的功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ABWR对轻水反应堆技术性能的改进
- 2026苏教二上连乘连除教案
- 旅游景区安全管理
- 儿科黄疸健康宣教
- 物理治疗类医疗服务价格项目立项指南政策解读总结2026
- 2026四上数学原创公开课课件
- 教学材料《建设法规》-第三章
- 《简明会计英语教程》-Unit1
- KDG3K远程馈电断电器
- 再生透水混凝土管外观裂纹放大镜监理细则
- 港口危险货物2026年版安全管理人员部分机考试题及答案
- 《低钾血症诊治与管理专家共识(2026)》解读课件
- 2026年上海市中考数学试卷(附答案解析)
- 2026-2030中国槟榔果行业未来发展趋势及投资风险分析研究报告
- 《选煤厂安全规程》全文
- 2026山东青岛海检集团有限公司招聘1人笔试历年难易错考点试卷带答案解析
- 2026年郑州电力职业技术学院教师招聘考试备考试题及答案解析
- TSG08-2026《特种设备使用管理规则》全面解读课件
- 宁夏冷凉蔬菜实施方案
- Q-TH 103005-2018 阀门喷塑检验规范
- 《学记》原文全文及翻译解读
评论
0/150
提交评论