非正弦交流可测电压与波形.doc_第1页
非正弦交流可测电压与波形.doc_第2页
非正弦交流可测电压与波形.doc_第3页
非正弦交流可测电压与波形.doc_第4页
非正弦交流可测电压与波形.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

非正弦交流可测电压与波形想通过MSCOMM控件向51单片机发送一串字符,如:“ABCDEFGH”,然后由单片机按原来的顺序发送回来,请求怎么编程实现,谢谢! With MSComm1 .Setting=19200,n,8,1这里根据你的实际情况设置 If Not(.PortOpen) Then .PortOpen=True .InBufferCount=0 .Output=ABCDEFGH Dim Buf Do DoEvents Buf=Buf & .Input Loop Until InStr(Buf,vbCrLf)0这里的结束控制字符根据你的实际情况设定 Debug.Print 接收到的字符为 & BufEnd With单片机发送回来就要你单片机端处理了,也可以接收一个来自计算机的命令来识别是否要回传字符,这要你自己在单片机程序里定义和相应的硬件电路实现。 我是用:mscomm1.output=text1.text text.text=ABCDEFGH用INSTR()函数能否找到结束字符(呵呵,程序还没有调试)对了,在Output的内容后也要加上结尾控制字符,不然单片机无法判断某次传输是否结束,这也要根据你单片机程序确定。InStr函数找的是结尾控制字符,这和停止位不是一个概念,这样计算机就可以知道某次传输是否结束,是针对一个数据包,而不象停止位是针对一个字符。 mscomm1.output=text1.text & vbcrlf这样表达对吧? 由于温度巡回检测仪具有结构简单、使用方便、测量准确和可靠性好等优点,因而,它广泛应用于工业温度测量中。98系列上润仪表WP-RD温度巡回检测仪,能完成温度显示、输出控制、网络通信等功能。但温度巡回检测仪内部存储容量有限,需要与具有强大数据处理能力和丰富软件资源的微机组成分布式系统,实现由微机对整个测量过程的温度数据进行统一的显示、存储、打印报表、参数设定和数据的进一步处理,这样必须实现PC机与温度巡回检测仪之间的通信。它们之间的通信可以通过并行通信或串行通信两种方式实现,由于串行通信自身的长处,现已被广泛的使用。Borland公司推出的Delphi是一种功能强大的高级编程语言,是新一代可视化开发工具,具有功能强大、简便易用和代码执行速度快等特点,特别适用在Windows环境下图形界面和用户程序的编制。本文开发的温度智能化巡回检测系统,使用温度巡回检测仪作为下位机采集温度数据,经过预处理后通过自带的RS232串行口将数据送给上位机PC。在PC机上Win2000环境下运行用Delphi和VB的通信控件MSComm编制的实时监测系统软件,接受串行口送来的数据,进行相应的数据处理,在用户界面上进行实时显示和设置。2 温度智能化巡回检测系统通信协议 温度巡回检测仪与PC机之间通过RS232异步串行通信接口通信,波特率为1200bps;字节数据格式为1位起始位、8位数据位和1位停止位;仪表地址传送格式为双字节、16进制、高字节在前、低字节在后,数据传输格式为3字节定点数(3字节定点数低字节高4位ASC码低字节低4位ASC码高字节高4位ASC码高字节低4位ASC码小数点高4位ASC码小数点低4位ASC码);巡检仪与上位机的数据通信是以“帧”为单位进行的,“”为起始符号。3 MSComm控件的注册和属性3.1 MSComm控件的注册 用Delphi实现串行通信,可用的方法有两种:(1)使用Windows API;(2)使用在Windows操作系统中注册的控件。其中调用API函数较为复杂,需要掌握大量通信知识;而利用MSComm控件,程序实现相对简单,结构清晰,并且该控件具有丰富与串行通信密切相关的属性和事件,提供对串口的各种操作,使用很方便,因此本实时监测系统软件使用第2种方法。 采用MSComm控件进行串行通信时,必须添加一MSComm控件到窗体中。其具体步骤是将MSComm.ocx拷入winntsystem32下,在Delphi主菜单中的Component,选择Import ActiveX Control命令,弹出Import ActiveX窗口,选择Microsoft Comm Control5.0,再选择Add命令,加上MSComm32.ocx,在窗体中生成了一个MSComm对象,就可自由地设置它的属性了。3.2 MSComm控件的属性设置 MSComm控件提供了2种处理通信的方式:事件驱动(实时)方式和查询方式。由于查询方式会占用大量的CPU时间,效率很低,所以本程序中使用的是事件驱动方式。 利用MSComm控件控制通信程序,关键是准确理解和设置通信控件的属性。下面对程序中所用到的主要属性事件加以说明。 (1) CommPort属性。设置或返回串行端口号,其取值范围为199,缺省为1; (2) Setting属性。设置或返回串行端口波特率、奇偶校验位、数据位、停止位等参数,本系统设置为MSComm.Setting“1200,N,8,1; (3) PortOpen属性。打开或关闭串行端口,格式为:MSComm.PortOpen=TRUE/FALSE; (4) InputMode属性。设置从缓冲区读取数据格式,本程序中设置为0,表示为字符串格式; (5) Input属性。从接收缓冲区读取数据; (6) Output属性。向发送缓冲区写入数据; (7) InBufferSize属性。接收缓冲区的大小,缺省值为1024B; (8) InBufferCount属性。接收缓冲区中接收字节数; (9) OutBufferSize属性。发送缓冲区的大小,缺省值为512B; (10) OutBufferCount属性。发送缓冲区中待发送字节数; (11) Inputlen属性。设置或返回Input每次读出的字节数; (12) Rthreshold属性。在MSComm控件设置CommEvent属性为comEvReceive并产生Oncomm前,设置并返回的要接收的字符数,缺省值为0,不产生Oncomm事件; (13) Sthreshold属性。在MSComm控件设置CommEvent属性为comEvSend并产生Oncomm前,设置并返回传输缓冲区中允许的最小字符数,缺省值为0,不产生Oncomm事件; (14) CommEvent属性。串口事件或错误。VB如何向串口发送十六进制数VB如何向串口发送十六进制数用VB编程想把两个十六进制数按顺序从232串口发送到单片机01h和cch,试了多种方法都不成功,程序不出错,但单片机就是没有反应,设置没问题单片机本身也没问题.我想,可能还是我对那个串口发送十六进制数不熟悉,请各位大虾帮忙,谢谢,晨曦) 一级(初级) 我想可以这样:大概过程是这样,先把MSCOMM控件设置成二进制模式,然后再发送,代码如下MSComm1.CommPort = 1MSComm1.RThreshold = 1MSComm1.InputMode = comInputModeBinaryMSComm1.PortOpen = Truedim v(1) as bytev(0)=&h1v(1)=&hccMSComm1.output=v这样应该可以! 回复人(冯大狂)代码如下:Private Sub Form_Load()初始化串口With MSComm1.InputMode = 1 设置接受数据的类型是二进制类型数据.InputLen = 8 一次性从接收缓冲区中读取所有数据(8个字节为一组!).InBufferCount = 0 清空接收缓冲区.OutBufferCount = 0 清空发送缓冲区.SThreshold = 0 不触发OnComm()事件.RThreshold = 1 接收1个字节数据触发OnComm()事件.Settings = 9600,N,8,1.CommPort = 1.PortOpen = TrueEnd WithEnd Sub然后在按钮1中:Private Sub Command1_Click()Dim Data(1) as ByteData(0)= &H1Data(1)=&HCC以上两个就是你要发送的数据下面这一句就发给单片机了MsComm1.Oupput = DataEnd Sub至于对于单片机的反应操作则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论