Windows平台上的串行通信简介 -电脑资料.
- 格式:docx
- 大小:15.40 KB
- 文档页数:2
基于VB6.0的串口通信方法串口通信在数据采集中有着广泛的应用,因为串口通信通信线路简单、灵活方便、数据可靠。
作为快速开发,利用VB开发串口通信程序既可以使用MSComm控件也可以调用WindowsAPI函数实现。
这里我们使用VB6.0提供的MSComm控件,因为MSComm控件的功能和API调用一样强,甚至更好且使用起来更加简单,能很方便地实现所需的串口通信功能。
1.MSComm控件简介MSComm控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动方法,当串口通信产生错误时,MSComm控件会触发OnComm事件,程序员可以在OnComm事件处理函数中加入自己的处理代码。
另外一种是查询法。
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
2.MSComm控件的常用属性MSComm控件有很多重要的属性,但首先必须熟悉几个关键属性。
CommPort 设置并返回通讯端口号Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位PortOpen 设置并返回通讯端口的状态。
也可以打开和关闭端口Input 从接收缓冲区返回和删除字符Output 向传输缓冲区写一个字符串3.程序代码设计利用MSComm控件编写串口通信程序是十分便利和简单的。
下面我就事件驱动方式以VB6.0为平台编写了PC间串口通信程序的实例。
代码如下:'串口初始化PrivateSubForm_Load()mPort=1 '设置通信端口号为COM1MSComm1.Settings="9600,n,8,1" '设置串口参数MSComm1.InputMode=0 '接收文本型数据MSComm1.RThreshold=1'接收缓冲区每收到一个字符都会使MSComm控件触发OnComm事件MSComm1.PortOpen=True '打开通信端口1EndSub'把字符通过串口发送出去'启动定时器PrivateSubCmdsend_Click()IfTextsend.Text=""Thenpp=MsgBox("发送的数据不能为空!",16)ExitSubEndIfMSComm1.Output=Trim(Textsend.Text)EndSub'MSComm的OnComm事件程序'由CommEvent属性值的不同,将各自的程序代码写入相关的子程序中'只要RThresold中的设定字符数到达时便会使得CommEvent属性值变成comEvReceive'因此接收的子程序便会被执行PrivateSubMSComm1_OnComm()Dimbuf$mEvent'通过取代每一个case表达式来处理每个事件与错误CasecomEvCD'CD线的状态发生变化CasecomEvCTS'CTS线的状态发生变化CasecomEvDSR'DSR线的状态发生变化CasecomEvReceivebuf=Trim(MSComm1.Input)'将缓冲区内的数据读入buf变量中CasecomEvSendEndSelectTextReceive.Text=TextReceive.Text&bufEndSub'停止程序运行PrivateSubCmdquit_Click()UnloadMeEndSub'关闭通信端口,PrivateSubForm_Unload(CancelAsInteger)MSComm1.PortOpen=FalseEndSub4结束语本文通过具体实例介绍了如何利用VB6.0中的MSComm控件来实现串口通信。
在FoxPro for Windows环境中实现串行口通信
刘昱鹏
【期刊名称】《中国计算机用户》
【年(卷),期】1996(000)001
【摘要】FoxPro软件是当前较为流行的数据库软件之一,由于某些特殊的原因,需要在数据库环境中利用通信接口与外部设备进行通信。
在FoxPro for DOS中您可以利用低级文件函数来控制一个串口,如利用FOPEN()、FCLOSE()、FGETS()、FPUTS()、FREAD()、FWRITE()等函数来实现串行口的打开/关闭、读/写等功能。
然而,在FoxPro for Windows中您却不可以用低级文件函数来控制串行口的通信操作,因为每一个COM都可以说是MS-Windows的资源,故都被MS-Windows 所拿走了。
下面将向您提供一种在FoxPro for
【总页数】2页(P65-66)
【作者】刘昱鹏
【作者单位】无
【正文语种】中文
【中图分类】TP317
【相关文献】
1.在FOXPRO/FOXBASE中实现较为完善的串行通信 [J], 王颖;邹介棠
2.Windows环境下FOXPRO应用系统中实时通讯功能的实现 [J], 曹桂琴;董晶;刘润斌
3.FoxPro for Windows环境下与单片机串行通信的实现 [J], 周卫平;周斌
4.在Visual Foxpro中实现FTP远程通信 [J], 吴凤英
5.Windows NT中实现串行口实时中断通信 [J], 蒙文川;徐俊峰;侯延峰
因版权原因,仅展示原文概要,查看原文内容请购买。
java串口通信API说明java串口通信Java提供了 CommunicationAPI(包含于m包中)用于通过与机器无关的方式,控制各种外部设备。
Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的。
因此,必须先在SUN公司网站的Java站点()上下载这个扩展类库。
1.1Communications API 简介Communications API 的核心是抽象的CommPort类及其两个子类:SerialPort类和ParallePort类。
其中,SerialPort类是用于串口通信的类,ParallePort类是用于并行口通信的类。
CommPort类还提供了常规的通信模式和方法,例如:getInputStream( )方法和getOutputStream( )方法,专用于与端口上的设备进行通信。
然而,这些类的构造方法都被有意的设置为非公有的(non-public)。
所以,不能直接构造对象,而是先通过静态的CommPortIdentifer.getPortIdentifiers()获得端口列表;再从这个端口列表中选择所需要的端口,并调用CommPortIdentifer对象的Open( )方法,这样,就能得到一个CommPort对象。
当然,还要将这个CommPort对象的类型转换为某个非抽象的子类,表明是特定的通讯设备。
该子类可以是SerialPort类和ParallePort类中的一个。
下面将分别对CommPort类,CommPortIdentifier类,串口类SerialPort进行详细的介绍。
1.2 CommPortIdentifier类CommPortIdentifier类的方法如下:方法说明addPortName(String, int, CommDriver) 添加端口名到端口列表里addPortOwnershipListener(CommPortOwnershipListener) 添加端口拥有的监听器removePortOwnershipListener(CommPortOwnershipListener) 移除端口拥有的监听器getCurrentOwner() 得到当前占有端口的对象或应用程序getName() 得到端口名称getPortIdentifier(CommPort) 得到参数打开的端口的CommPortIdentifier类型对象getPortIdentifier(String) 得到以参数命名的端口的CommPortIdentifier类型对象getPortIdentifiers() 得到系统中的端口列表getPortType() 得到端口的类型isCurrentlyOwned() 判断当前端口是否被占用open(FileDescriptor) 用文件描述的类型打开端口open(String, int) 打开端口,两个参数:程序名称,延迟时间(毫秒数)1.3 SerialPort类SerialPort关于串口参数的静态成员变量成员变量说明成员变量说明成员变量说明DATABITS_5 数据位为5 STOPBITS_2 停止位为2 PARITY_ODD 奇检验DATABITS_6 数据位为6 STOPBITS_1 停止位为1 PARITY_MARK 标记检验DATABITS_7 数据位为7 STOPBITS_1_5 停止为1.5 PARITY_NONE 空格检验DATABITS_8 数据位为8 PARITY_EVEN 偶检验 PARITY_SPACE 无检验SerialPort对象的关于串口参数的函数方法说明方法说明getBaudRate() 得到波特率 getParity() 得到检验类型getDataBits() 得到数据位数 getStopBits() 得到停止位数setSerialPortParams(int, int, int, int) 设置串口参数依次为(波特率,数据位,停止位,奇偶检验)SerialPort关于事件的静态成员变量成员变量说明成员变量说明BI Break interrupt中断 FE Framing error错误CD Carrier detect载波侦听 OE Overrun error错误CTS Clear to send清除以传送 PE Parity error奇偶检验错误DSR Data set ready数据备妥 RI Ring indicator响铃侦测DATA_AVAILABLE 串口中的可用数据 OUTPUT_BUFFER_EMPTY 输出缓冲区空SerialPort中关于事件的方法方法说明方法说明方法说明isCD() 是否有载波 isCTS() 是否清除以传送 isDSR() 数据是否备妥isDTR() 是否数据端备妥 isRI() 是否响铃侦测 isRTS() 是否要求传送addEventListener(SerialPortEventListener) 向SerialPort对象中添加串口事件监听器removeEventListener() 移除SerialPort对象中的串口事件监听器notifyOnBreakInterrupt(boolean) 设置中断事件true有效,false 无效notifyOnCarrierDetect(boolean) 设置载波监听事件true有效,false无效notifyOnCTS(boolean) 设置清除发送事件true有效,false无效notifyOnDataAvailable(boolean) 设置串口有数据的事件true有效,false无效notifyOnDSR(boolean) 设置数据备妥事件true有效,false无效notifyOnFramingError(boolean) 设置发生错误事件true有效,false无效notifyOnOutputEmpty(boolean) 设置发送缓冲区为空事件true有效,false无效notifyOnParityError(boolean) 设置发生奇偶检验错误事件true 有效,false无效notifyOnRingIndicator(boolean) 设置响铃侦测事件true有效,false无效getEventType() 得到发生的事件类型返回值为int型sendBreak(int) 设置中断过程的时间,参数为毫秒值setRTS(boolean) 设置或清除RTS位setDTR(boolean) 设置或清除DTR位SerialPort中的其他常用方法方法说明close() 关闭串口getOutputStream() 得到OutputStream类型的输出流getInputStream() 得到InputStream类型的输入流一年半前在jbuilder2006下写过串口通信程序,最近做一个GPS-SMS 项目,用到串口通信,在JBUILDER 配置了comm.jar却发现找不到端口,经过几番查找才发现自己配置的路径错了,浪费了不少时间,有必要记下来,防止下次出错,此次还暴露了自己看文章一目十行,走马观花的毛病。
WINDOWS串行通信技术
李国喜;胡爱国;董相芬
【期刊名称】《计算机应用》
【年(卷),期】1997(000)001
【摘要】本文首先剖析了采用消息响应机制开发Windows事件驱动串行通信程序的原理,然后详细介绍了用OWL类库开发事件驱型Windows串行通信序的方法,给出了一个应用于自动化立体仓库监控的调试程序的主要模块代码。
【总页数】1页(P27)
【作者】李国喜;胡爱国;董相芬
【作者单位】国防科技大学;国防科技大学
【正文语种】中文
【中图分类】TP319
【相关文献】
1.Windows环境下数据块串行通信技术的应用 [J], 张丽莉;王淮东;梁晓辉;魏华;石建华;黄建来
2.基于Windows2000的多线程串行通信技术 [J], 丁一恒;李志宏;贾苹
3.Windows串行通信技术的应用开发 [J], 李湘江
4.WindoWs 2000环境下 PC机与单片机串行通信技术研究 [J], 温富光;林永君;罗廷坤
5.WINDOWS平台下两种串行通信技术 [J], 陈栋;孙振环
因版权原因,仅展示原文概要,查看原文内容请购买。
上位机串⼝通信编程摘要本⽂主要描述了利⽤PC机与AT89C51单⽚机之间的通信程序设计实现温度显⽰。
并详述了在VC6.0环境下,上位机利⽤MSCOMM通信控件与单⽚机之间串⼝通信实现温度显⽰。
由单⽚机采集⼀个温度信号,将采集到的温度信号传送给PC机显⽰,PC机⽤VC6.0编写程序,单⽚机程序⽤C语⾔编写,最后⽤PROTUES软件进⾏仿真实现温度显⽰。
关键词:单⽚机MSCOMM控件VC6.0 AT89C51 温度显⽰⽬录摘要1 引⾔ (1)2 结构设计与⽅案选择 (2)2.1设计任务 (2)2.1.1单⽚机的选择 (2)2.1.2电平转换 (2)2.1.1单⽚机的选择 (2)2.1.3单⽚机与pc机通信原理 (2)2.2软件⽅案选择 (2)2.2.1 上位机编程⽅案选择 (3)2.2.2 单⽚机编程⽅案选择 (3)2.3 总体⽅案选择 (2)3 硬件设计 (8)3.1单⽚机主要特性 (5)3.2 MAX232电平芯⽚介绍10 (10)3.3 硬件电路设计图 (11)3.3.1 PC机与单⽚机通信接⼝电路设计框图 (11)3.3.2整体设计原理图 (11)4软件设计 (12)4.1上位机程序设计 (12)4.2下位机程序设计 (13)5 软硬件调试部分 (21)5.1 PROTEUS软件仿真 (21)5.1.1 Protues简介 (21)5.1.2 Protues仿真电路图 (22)5.2 VC软件仿真 (21)结束语 (27)致谢 (28)参考⽂献 (29)1引⾔随着⼈们⽣活⽔平的不断提⾼,单⽚机控制⽆疑是⼈们追求的⽬标之⼀,它所给⼈带来的⽅便也是不可否定的,要为现代⼈⼯作、科研、⽣活、提供更好的更⽅便的设施就需要从单⽚机技术⼊⼿,⼀切向着数字化控制,智能化控制⽅向发展。
现代化集中管理需要对现场数据进⾏统计、分析、制表、打印、绘图、报警等,同时,⼜要求对现场装置进⾏实时控制,完成各种规定操作,达到集中管理的⽬的。
delphi 串口编程例程摘要:1.Delphi 简介2.串口编程基本概念3.Delphi 中串口编程的例程4.总结正文:一、Delphi 简介Delphi 是由Borland 公司开发的一款强大的集成开发环境(IDE),它基于Object Pascal 语言,适用于Windows 平台上的应用程序开发。
Delphi 提供了丰富的组件库和功能强大的编程工具,使得开发者可以快速、高效地开发出高质量的软件。
二、串口编程基本概念串口编程是指在计算机中通过串行通信接口(Serial Communication Interface,简称SCI)进行数据传输的过程。
串口通信是一种异步通信方式,通常用于电子设备之间的数据传输,如外设、modem 等。
在串口编程中,有几个基本概念需要了解:1.波特率:波特率是指每秒钟传输的比特数,它决定了通信速度。
常见的波特率有9600、19200、38400、57600 和115200 等。
2.奇偶校验:奇偶校验是一种数据传输时的错误检测方法。
发送方将数据位后的奇偶校验位附加到数据中,接收方根据接收到的数据计算校验位,以判断数据是否正确。
3.停止位:停止位是在数据传输过程中的一个标志位,用于表示数据传输的结束。
停止位的长度可以是1 位、1.5 位或2 位。
4.流控制:流控制是一种数据传输时的流量控制方法,它可以防止数据传输过程中的数据溢出。
常见的流控制方式有硬件流控制和软件流控制。
三、Delphi 中串口编程的例程在Delphi 中,可以使用TSerialPort 控件进行串口编程。
以下是一个简单的串口编程例程:1.创建一个新的Delphi 项目。
2.在“组件库”中找到TSerialPort 控件,将其拖放到窗体上。
3.设置TSerialPort 控件的属性,如PortName(串口名称)、BaudRate (波特率)、DataBits(数据位)、StopBits(停止位)、Parity(奇偶校验)和FlowControl(流控制)等。
COM接口.txt我这辈子只有两件事不会:这也不会,那也不会。
人家有的是背景,而我有的是背影。
肉的理想,白菜的命。
肉的理想,白菜的命。
白马啊你死去哪了!是不是你把王子弄丢了不敢来见我了。
COM接口定义COM接口是指Component Object Model接口,是微软定义的标准接口。
简介串口叫做串行接口,现在的PC 一般有两个串行口COM 1 和COM 2 。
串行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。
虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口。
通常 COM 1 使用的是9 针D 形连接器,也称之为RS-232接口,而COM 2 有的使用的是老式的DB25 针连接器,也称之为RS-422接口,这种接口目前已经很少使用。
一般机箱有两个,新机箱有可能只有一个。
笔记本电脑有可能没有。
有很多工业仪器将它作为标准通信端口。
通信的内容与格式一般附在仪器的用户说明书中。
组件,对象模型COMCOM简介(COM),是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。
在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。
由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等。
COM是开发软件组件的一种方法。
组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。
开发自定义的COM组件就如同开发动态的,面向对象的API。
多个COM对象可以连接起来形成应用程序或组件系统。
并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。
用VC开发在Windows下的串口异步通信程序摘要异步串行通信在现在的生产生活中被得到广泛的应用,在PC机上一般至少有两个串行口COM1和COM2,常用的串行外设有电传打字机、CRT 终端设备、传真机以及远程数据采集设备、通信设备等。
串行通信接口标准经过使用和发展,目前已经有多种。
但都是在RS-232标准的基础上经过改进而形成的。
如何在Windows平台下实现串口通信,也越来越来越多地被得到研究,实现的方法重要有利用MSComm控件和直接用Windows API 编程。
利用MSComm控件编程相对来说更简单一些,而直接使用Windows API 编程更灵活一些。
本文主要讨论了使用MSComm控件来开发串口通信程序,而界面是利用VC++ 6.0 MFC来做的,这样编程灵活性大,并且能够将主要工作集中在串口编程方面。
程序可以实现利用PC机的两个COM 口实现异步通信,并能根据设置调整异步传行通信参数。
【关键词】串口通信、异步通信、终端、句柄AbstractSerial communication is used more and more in our job and livings. There are two serial communication port at least in the PC,COM1 and COM2. Typewriter, CRT terminal device, electrograph , remote dada receiver, and communication device are depended on serial port. With the development of serial communication port standard, there are many kinds of port standard, but they are developed from the RS-232 standard. How to program serial communication based on the Windows platform is studied more and more. There are two methods of programming , using Windows API and using MSCcomm. Using MSCcomm to program is discussed in the article ,the graphical interface is carried out using MFC. So this method is flexible and we can set focus in programming serial communication. Two PC can communicate to each other by COM port and you can change the serial port parameter with the program.Keywords:serial port communication, asynchronous communication, terminal device, HANDLE目录摘要 (1)ABSTRACT (2)引言 (2)第1章绪论 (3)1.1问题的提出 (3)1.2研究的意义 (3)第2章相关技术简介 (6)2.1 串行接口标准 (6)2.2 RS-232串行接口标准 (8)2.3 其他EIA标准接口 (13)2.4VC++的串口通讯 (15)2.4.1 Microsoft Communications Control (16)2.4.2直接用VC++访问串口。
Windows平台上的串行通信简介 -电脑资料
2019-01-01
Windows平台上的串行通信简介
1.使用VC编程
利用VisualC++编写串行通信程序可借助于
API(ApplicationProgramInterface)函数,。
Windows9x及更高版本的通信函数为32位。
涉及到串行通信的APl函数主要有以下几个:
打开通信资源(包括通信口)使用CreateFile(),通信资源被看成一个文件。
该函数有7个自变量。
对通信口的设置涉及3个函数:SetupComm()使用来设置发送和接收缓冲区的大小;GetCommState()可用来获取串行通信设备控制块DCB结构的当前状态;SetCommState()用来对通信口进行自己的设置。
发送数据使用WriteFile()函数。
读接收到的数据使用ReadFile()函数。
清除通信错误并通信口当前状态使用ClearCommError()函数。
指示通信口进行某种扩充功能(如发送DTR信号)使用EscapeCommFunction()函数。
这些函数的说明可参看
VisualStudioMSDN(MicrosoftDeveloperNetwork),
《》()。
2.使用VIi编程
Visualc++3.0(VB)及以上的专业版、企业版都提供了一个通信控件,5.O 版本以后称之为MSComm。
利用该控件可很方便地实现RS-232通信。
下面是一个很简单的程序示例,读者从注释中不难理解它的作用。
这里假定事先已定义Comml为MSComm类型的对象。
Comml.CommPort=2指定Comml是COM2口
Comml.Settings="9600,n,8,l设置通信参数Comml.InputLen=0读取接收数据时,一次读取所有已收到的字符Comml.PortOpen=True打开COM2
Comml.DTREnable=True置DTR
Comml.RTSEnable=True置RTS
Comml.Output=TestCommunication发送一字符串
Do循环等待,直到接收到5个以上的字符为止
DoEvents此期间将控制权交还给Windows,以响应其他事件LoopUntilComml.InBufferCounter>=5
InString$=Comml.Input读收到的字符,赋给变量InString$。