LED点阵屏上位机的设计.doc_第1页
LED点阵屏上位机的设计.doc_第2页
LED点阵屏上位机的设计.doc_第3页
LED点阵屏上位机的设计.doc_第4页
LED点阵屏上位机的设计.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文(设计)(LED点阵屏上位机的设计)(The design Of the superior machine Of LED lattice screen)摘要本设计以单片机为下位机,PC机为上位机的三位16*16LED点阵屏的设计,上位机可利用汉字点阵字模的提取公式,计算出所要显示的汉字在字库中的位置,从而提取出该汉字的点阵字模代码,直接利用PC机的RS-232串口通信,可将汉字字模信息传送给下位机。本设计不但能实现数据的发送、端口的选择、串口的设置,也能实现计算发送数据的个数、显示日期、复制、粘贴、剪切、删除、全选、字体的选择、打开和保存文件等功能,操作简单便捷、交互性好。关键词:上位机;字模信息提取;RS-232串行通信;MSCOMM控件AbstractThis design of 16*16LED lattice screen take the microcomputer as the lower position machine and the PC machine as the superior machine 16*16LED lattice screen, The superior machine may use the Chinese character lattice matrix extraction the formula to calculate Chinese character in fonts position which must demonstrate, then withdrawing the lattice matrix code of Chinese character , using the PC machine RS-232 serial port correspondence directly may send the Chinese character matrix information to the lower position machine。Not only this design can realize the data transmission, ports choice, the serial port establishment, can also realize the roll titles, the real-time clock, the menu, the duplication, the glue, cutting, the deletion, to choose, the typeface choice, to open with functions and so on store documents,the simplicity of operator convenient, interactive to be good。Key words: Superior machine; Fonts extraction; RS-232 serial communication; MSCOMM controls目录摘要IAbstractI1引言12 系统软件设计思想12.1 Visual Basic的特点12.2系统软件设计思想13 PC机主控软件的设计23.1 字库提取的方法23.1.1汉字字库的相关知识23.1.2汉字的区位码和内码及其转换23.1.3单片机应用中的小字库提取方法33.1.4 提取汉字的软件设计及实现43.2 串口通信简介与软件设计43.2.1 RS-232串口通信43.2.2通信协议的定义53.2.3 通信协议53.2.4 串口通信的工作原理64 VB下的具体实现74.1用visual basic 6.0进行串行通信程序设计的方法74.2 MSComm控件属性85 Visual Basic控制界面简介及流程图105.1 Visual Basic 控制界面简介105.2 程序流程图116 VB串口数据传送的测试126.1测试方法126.2测试结果126.3解决方法127结论127.1作品实现的功能127.2评价12致谢13参考文献14附录15311引言随着经济的发展,LED 汉字信息显示屏在我国已广泛应用,尤其是在一些商场,银行,车站,营业窗口等服务性场合,使用LED 汉字信息显示屏向人们提供一些提示信息,给人们的生活带来了很多方便。我们设计的LED 汉字信息显示屏属于一种小型LED 汉字信息显示系统,一个显示子模块可显示16 个汉字字符,子模块可以通过扩充合并从而显示更多汉字字符,本设计扩充3 个子模块,显示96 个汉字字符。在一些应用场合由于使用者需要经常改变显示的文字内容,因此必须在WINDOWS 下实时提取汉字点阵字模信息,并通过RS-232总线传送到16*16LED 点阵信息显示屏8。本系统以上位机为核心模块,包括上位机软件和RS-232串口通信。上位机主要实现点阵字符的字模代码的提取和数据更新,上位机软件通过RS-232串口将更新内容(汉字点阵字模信息)发送给单片机,然后经单片机处理后实现数据更新3。2 系统软件设计思想2.1 Visual Basic的特点(1)简单易学这是Visual Basic继承自BASIC语言的特点,不需要太多的计算机知识就可以开发出功能强大的软件,非常适合于非计算机专业的人员使用。此外,Visual Basic还支持面向对象技术(Object Oriented,简写为OO),这是目前软件开发采用的主要技术。因此,Visual Basic也适合专业开发人员使用1。(2)提供功能强大的集成开发环境在Visual Basic的集成开发环境(Integrated Development Environment,简写成IDE)中,可以方便、快捷地尽心程序的创建、编辑、编译连接、调试、制作安装软件包等。为了便于编程人员查找编程信息,该环境还提供了方便的在线帮助1。(3)完全支持Windows应用程序的开发Windows是一个复杂的操作系统,编写基于这个平台的程序需要了解Windows复杂的运行机制。在Visual Basic出现之前,编制Windows应用程序需要非常多的专业知识;而Visual Basic将Windows复杂的运行机制完全隐藏起来,使用容易理解和掌握的对象来表示,编程人员不需要了解Windows复杂的运行机制和编程知识,就可以很容易地开发出标准的Windows应用程序1。2.2系统软件设计思想本设计要求控制系统能实现利用计算机的RS-232口与单片机实现串行通信,由于只是实现简单的通信,常用的软件有Visual Basic6.0和Visual C+等等。而采用Visual Basic6.0编程的最大的优点就是简单,开发项目的时间比较短。VB语法简单,可视化程度高,概念少,所以非常适合初学编程和Windows编程的人使用。即使编程高手也有很多人愿意使用它,一般开发的效率比较高。缺点是编译后的速度较VC慢,需要庞大的运行时间库支持,软件发行比较困难(编译后的EXE程序如果在没有安装过VB的机器上运行需要拷贝数M的文件,并且做一些设置工作);底层调用手段较少,不太适合开发硬件操作多、速度要求高的场合,比如编写硬件驱动程序就不能使用VB。软件控制系统平台采用Visual Basic6.0编程,计算机要跟单片机之间实现通信,根据设计要求,VB所实现的功能主要是:首先要通过按钮发送开始标志位,通知单片机做好接收控制数据的准备;其次发送上位机要发送给单片机的字节数,让单片机做好接收这些数据的准备。另外,VB实现PC机与单片机的串行通信还结合了两种不同的通信处理方式:一、事件驱动方式;二、CommEvent属性值查询方式2。3 PC机主控软件的设计主控软件主要进行两个方面的设计:一个是对汉字字库的提取显示;另一个是串口通过主控计算机对显示屏的控制显示功能主要是通过计算机的串口实现。3.1 字库提取的方法3.1.1汉字字库的相关知识 在许多工业控制、智能化仪器仪表设计中,常只需要少量有限的汉字输出,这时构造汉字代码建立字库尤为重要。多数工程技术人员依据汉字代码建立字库将每个汉字一点一点地描出来(最常用的是16*16点阵),然后将其点阵信息编成代码引入设计软件。这种提取方法比较繁琐而且构造的汉字不规范美观。由于现在的产品设计、开发软件大部分是以Windows操作平台上开发一种简单、快捷的方法从字库中提取标准汉字字码代码也很有必要4。3.1.2汉字的区位码和内码及其转换国标汉字字符集(GB2312-80)是以汉字库的形式提供的。汉字库结构有统一的规定:汉字库共分为94个区,每个区有94个汉字,每个汉字在汉字库中有确定的区和位编号,这就是区位码。用两个字节表示,区位码的第一个字节表示区号,第二个字节表示位号。计算机内英文字符是用一个字节的ASCII码表示,由于汉字众多,对一个汉字需用两个字节表示,这两个字节的最高位置1,称为机器内的汉字代码,简称内码。内码与区位码之间的变换关系如下:内码高位字节=区码+160;内码低位字节=位码+160汉字库根据其中存储的汉字信息的不同可以分为点阵字库、矢量字库、曲线轮廓字库。根据汉字的不同,每一个字库又可分为楷书、隶书、黑体、宋体等等。点阵字库中存放着汉字的点阵字模信息。它根据点阵大小,有可分为16点阵字库、24点阵字库等。当汉字的点阵数目增加时,其显示质量越高,但所占用的存储空间也越大。在同一点阵字库中,各汉字字模信息所占的存储空间相同,因而便于查询和提取。在矢量字库和曲线轮廓汉字库中则存放各汉字的索引表及其笔划或字形信息。不管是点阵汉字、矢量汉字还是曲线轮廓汉字,要在LED点阵屏或LCD屏显示它们,最终还是提取它们的点阵字模信息。3.1.3单片机应用中的小字库提取方法在一些单片机应用系统中需使用小部分汉字显示,以1616点阵字库为例,一个汉字占用32个字节。可以采用以下方法找出所对应的汉字的1616点阵字库的地址(以“字”字为例说明)。(1)取得汉字的内码方法在VB的“立即窗口”中输入:?HEX(ASC(“字”)。回车后在“立即窗口”显示:D7D6,这就是“汉”这个汉字的内码(为十六进制数)。(2)把内码转换为区位码的算法设汉字的十六进制内码为XXYY则区号QH和位号WH为:QH=XX-A0H=D7H-A0H=37H=55D,WH=YY-A0H=D6H-A0H=36H=54D;5554就是“字”汉字的区位号。(3)计算该汉字在1616点阵信息在汉字库中的位置(以十六进制数计算)公式为:(QH-1)5EH + (WH-1)20H=(37H-1)5EH+(36H-1)20H=28120H28120H就是字“字”在1616点阵信息在汉字库中的首地址。在字库中从此地址取出的32个字节16进制数为:02 00 01 00 3F FC 20 04 40 08 1F E0 00 40 00 8001 04 FF FE 01 00 01 00 01 00 01 00 05 00 02 00把它们排成1616点阵的图形为图1所示 (4)取得西文字符的算法计算该西文字符在168点阵ASC16库中的位置,假设输入的西文字符为ch公式为: Laction = (Asc(ch) 16Laction即为该西文字符的首地址,从ASC16字库中取出16个字节就是该西文字符的代码。如果使用少量的汉字,可以使用以上方法找出对应汉字的首地址,并取出对应的汉字点阵信息,在程序存储器中建立汉字小字库。3.1.4 提取汉字的软件设计及实现汉字点阵的提取程序是用VB 实现的。其中以何种方式从字库文件中读取这32 个字节也是一个关键问题。由于二进制(Binary)方式访问文件可以直接查看文件中指定的字节,而且二进制方式也是唯一支持用户到文件的任何位置读写任意长度数据的方法,因而以二进制方式打开汉字字库文件是最适合的。而且程序也支持西文字符的显示,显示时也让其占用一个汉字的空间,不过它的点阵168的,所以不足部分就补零数据。3.2 串口通信简介与软件设计3.2.1 RS-232串口通信计算机串行接口采用RS-232标准:规定逻辑1的电平为-3V-15V,逻辑0的电平为+3V+15V,常用的信号有8个(接口为DB9M插座时,引脚号如表2.3.2所示),其中RXD、TXD为收、发数据,可与RS-232串行口设备直接进行通讯,RTS、DTR、CD、DSR、CTS、BELL为控制与检测MODEM的信号,在通讯过程中起联络与控制作用。数据格式有5、6、7、8位几种,1位起始位(逻辑0),1、1.5、或2位停止位(逻辑1),可以选择奇校验、偶校验和无校验,常用波特率为2400、4800、7200、9600bps等。串行口编程方法主要有三种:硬件编程法、文件操作法、串口控件法7。表RS232接口各引脚定义引脚号作用方向1CD数据载波检测输入2RXD接收数据输入3TXD发送数据输出4DTR数据终端准备就绪输出5GND信号地输出6DSR数据设备准备就绪输入7RST请求发送输出8CTS清除发送输入9RI振铃指示输入单片机的数据都是TTL逻辑电平的,但RS-232线路传输采用的是负逻辑电平即:逻辑“1”的电压为-3V -15V;逻辑“0”的电压为+3V +15V;-3V +3V之间的电压为非法信号。3.2.2通信协议的定义所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于OSI七层参考模型中的数据链路层9。 目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。3.2.3 通信协议MSComm1.Settings = “9600,n,8,1” 即波特率为9600bps,无奇偶校验位,数据位和一位停止位。上位机发送头两帧数据(所要发送数据的字节数)给下位机,通知下位机做好接收这些数据的准备,接下来发送字模点阵信息给下位机,由于下位机每接收到128个字节就要页写一次,页写的时间为10ms,为了确保下位机能够接收到所有的数据,所以下位机每页写一次上位机都要延时20ms。3.2.4 串口通信的工作原理串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米5。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: (a)波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 (b)数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 (c)停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 (d)奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。4 VB下的具体实现MSComm控件为Microsoft Communications Control,是Microsoft公司提供得简化Windows下串行通信编程的ActiveX控件,它为程序提供了通过串行接口收发数据的简便方法3。在工业控制领域,我们经常需要进行计算机与其他设备之间的通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。在开发串行通信程序的过程中,利用微软的MSComm通信控件则相对较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VB中容易使用9。 4.1用visual basic 6.0进行串行通信程序设计的方法(1) 用visual basic 6.0进行串行通信程序的设计有两种方式,一是直接调用Windows API,另一种方式是使用通信组件,但后一种方式实际上是通过通信组件间接的调用了Windows API函数,其过程要比直接调用API要复杂,但是在程序的实现上要比前一种方式简单的多。在操作系统方面,Windows使用通信驱动程序Comm.drv,以便于应用程序能够使用标准的Windows API函数来传递和接收数据。串行外围设备的制造商则提供硬件驱动程序,以便让其硬件能与Windows连接。使用MSComm控件时,实际上就是使用了API函数,API函数将被Comm.drv解释并传送给外围设备驱动程序,使用MSComm的用户只需要关心如何使用MSComm所提供的属性或事件,以驱动API函数的接口完成工作。串行通信程序的执行过程(2) MSComm提供了两种处理通信问题的方法,一是事件驱动方法,一是查询法。事件驱动法在使用事件驱动法设计程序时,每当有新字符到达或端口状态改变,或发生错误时,MSComm控件将触发OnComm事件,而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。这种方法的优点是程序响应及时,可靠性高3。查询法查询法适合于较小的应用程序,在这种情况下,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent属性,以检查执行结果或检查某一事件是否发生3。(3) 串行通信的两种格式进行串行通信时有两种传输方式:字符形式:通常以小于ASCII码128的字符码来传递,通常用于传送指令。二进制形式:将数据以二进制编码的方式传递,它可能含有ASCII码128以上的字符码,通常用来传送数据,以提高速度。4.2 MSComm控件属性Windows 的操作系统与DOS 是迥然不同的,Windows采用了全新的对象化观念,把所有的程序都对象化。VB 的串行通信对象是将RS-232 的低阶动作予以封装,使用者以高阶的Basic 语法就可与外界通讯,而并不需要了解其它有关的低阶动作,其串行组件为MsComm。由于MsComm属性众多,现对本设计所用到的属性说明如下: (1)CommPort属性该属性设置并返回通信连接的串行端口号,Windows将会利用该串口和外界通信,默认值为1。但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误3。(2)Settings属性该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数3。 (3)PortOpen属性PortOpen属性用于打开或者关闭端口。一般情况下在程序开始时打开端口,在程序结束时关闭端口。当应用程序终止时,MSComm控件将自动关闭串口3。 (4)Output属性Output属性用于向发送缓冲区写数据流。属性为VARIANT变量。该属性在端口未打开时不可用,在运行时只是写的3。5 Visual Basic控制界面简介及流程图5.1 Visual Basic 控制界面简介VB控制界面的实现主要是根据本系统的具体控制要求来设计的。本着控制简单、快捷,一目了然等特点,VB界面设计就只利用一些按钮、菜单、标签和文本框组成,并经过合理的布局构成。同时还附加文字说明,这样有利于提高设计控制系统的交互性。本界面可实现对单片机的控制,从左边的文本框输入要显示的内容,若不想发送数据而只想查看汉字代码,按“输出代码”按钮,右边的文本框即可输出该内容的汉字代码,若想发送数据,与单片机约定好通信协议MSComm1.Settings = 9600,n,8,1,发送的头两帧为上位机所要发送的字节数,第三帧就开始发送汉字点阵信息,按“发送数据”按钮,即可将右边文本框的内容发送给单片机,LED点阵屏即可显示文本框的内容,实现汉字的实时更新,同时右边的文本框也显示汉字代码,也可按“自动发送”按钮,实现文本框内内容连续不断的发送,若不想发送了,按“停止发送”按钮,数据就停止发送。本设计也可实现对打开和保存文件,也可对字体进行设置等操作,由于在不同的PC机中所用的COM口不同,本界面也可对COM口进行自由选择和,使之可在不同的PC机环境下使用。5.2 程序流程图6 VB串口数据传送的测试6.1测试方法用9芯电缆把计算机和单片机连接起来利用事先编写好的VB程序定时发送数据,然后用示波器观察:地端接RS232的第5脚,另一端接RS232的第3脚,由于在点阵字库中一个汉字有32字节,如果用示波器观察一个汉字的波形则不好观察,所以调试时只输出一个汉字的其中一个字节,看是否有相应的波形输出和输出的波形是否正确,若正确,则说明该字库的提取与发送程序没有问题。6.2测试结果发现示波器观察到波形与字库提取的汉字代码不同,这可能是VB串口通信中发送代码的程序有问题。6.3解决方法修改程序,重复前面的测试方法,直至修改正确为止。7结论7.1作品实现的功能在利用Visual Basic编写的控制平台上输入控制数据,并且利用事先约定好的握手协议实现LED点阵屏汉字的显示和更新。另外,VB还做有滚动字幕、实时时钟、菜单、复制、粘贴、剪切、删除、全选、字体的选择、打开和保存文件等功能。本设计精确度高、操作简单便捷、交互性很好。7.2评价本文详细介绍了串口汉字库字模的提取方法、串口通信的程序设计,由于只是简单的串口通信,实现该PC机能控制单片机,使LED点阵屏显示上位机发送给它的任意汉字和字符,总体结构比较简单,但准确度高,显示直观,便于操作使用。致谢感谢老师在这次毕业设计中对我的帮助,在设计中我们遇到问题时,他能即使给我们提供了很好的建议。在他指导下,我的设计有了一定的进展,整个设计中我学到许多知识。同时郭老师对我的严格要求和他严谨的作风都给我留下了深刻的影响,将使我终身受益 。在此,对郭老师表示感谢,除此还要感谢给予我帮助老师和同学们。 参考文献 1 杨秦建.王春红 . Visual Basic 大学基础教程 第2版.M.北京:电子工业出版社 2007:216-226 2 卢镇波.李青. Visual Basic 编程实例入门与提高 第3版.M. 北京:电子工业出版社2005:194-214 3 李长林. Visual Basic 串口通信技术与典型实例 第2版.M.北京:清华大学出版社 2006: 13-31 4 求是科技. Visual C+/Visual Basic串并口开发技术工程应用实例导航 第3版.M.北京:人民邮电出版社 2003:56-78 5 于建海. 中文用Visual Basic 6.0案例教程M. 北京: 人民邮电出版社,1997:2-8 6 诸昌钤. LED 显示屏系统原理及工程技术M,电子科技大学出版社,1996:1-10 7 孙晓云. 接口与通信技术原理与应用M,中国电力出版社,2007:2-13 8 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术M,北京航空航天大学出版社,1990:55-71 9 李长林.高洁. Visual C+ 串口通信技术与典型实例 第2版.M.北京:清华大学出版社 2006:294-295 10 张俊谟.单片机中级教程原理与应用 第2版.M.北京:北京航空航天大学出版社 1999:5-15 附录*将十六进制的数据字符转换为十进制数据*Private Function zshu(hexx As String) As LongDim Several(4) As IntegerFor i = 1 To 4 Step 1Select Case Mid(hexx, i, 1)Case A: Several(i) = 10Case B: Several(i) = 11Case C: Several(i) = 12Case D: Several(i) = 13Case E: Several(i) = 14Case F: Several(i) = 15Case Else: Several(i) = Val(Mid(hexx, i, 1)End SelectNext izshu = Several(1) * (16 3) + Several(2) * (16 2) + Several(3) * (16 1) + Several(4) * (16 0)End FunctionFunction ConvertHexChr(str As String) As Integer Dim test As Integer test = Asc(str) If test = Asc(0) And test = Asc(a) And test = Asc(A) And test StringLen Then HexDataLen = HexDataLen - 1 Exit For End If Loop While hstr = Do lstr = Mid(strText, n, 1) n = n + 1 If (n - 1) StringLen Then HexDataLen = HexDataLen - 1 Exit For End If Loop While lstr = n = n - 1 If n StringLen Then HexDataLen = HexDataLen - 1 Exit For End If HighHexData = ConvertHexChr(hstr) LowHexData = ConvertHexChr(lstr) If HighHexData = -1 Or LowHexData = -1 Then 遇到非法字符中断转化 HexDataLen = HexDataLen - 1 Exit For Else HexData = HighHexData * 16 + LowHexData bytByte(HexDataLen) = HexData HexDataLen = HexDataLen + 1 End If Next n If HexDataLen 0 Then 修正最后一次循环改变的值 HexDataLen = HexDataLen - 1 ReDim Preserve bytByte(HexDataLen) Else ReDim Preserve bytByte(0) End If If StringLen = 0 Then 如果是空串,则不会进入循环体 strHexToByteArray = 0 Else strHexToByteArray = HexDataLen + 1 End IfEnd Function*时间显示*Private Sub Check1_Click() Dim t As Stringt = Text3.TextIf Check1.Value = 1 ThenText3.Text = Year(Date) & 年 & Month(Date) & 月 & Day(Date) & 日ElseText3.Text = End IfEnd Sub*端口的选择*Private Sub Combo2_Click() On Error GoTo err Dim sCom As String Dim r As String sCom = Combo2.Text If MSComm1.PortOpen = True Then r = MsgBox(端口还处于开启中, vbInformation + vbOKCancel, 系统提示) If r = vbOK Then MSComm1.PortOpen = False MSComm1.CommPort = Right(Combo2.Text, 1) MSComm1.Settings = Text1.Text MSComm1.PortOpen = True sCom = Combo2.Text Else Combo2.Text = sCom End IfElse MSComm1.CommPort = Right(Combo2.Text, 1) MSComm1.Settings = 9600,n,8,1 sCom = Combo2.TextEnd IfExit Suberr: Combo2.Text = sCom MsgBox 端口无法启动,请重选!, vbInformation + vbOKOnly, 系统提示End Sub*退出*Private Sub Command1_Click(Index As Integer) 退出If MSComm1.PortOpen Then MSComm1.PortOpen = False End End Sub*停止*Private Sub Command10_Click() 停止If MSComm1.PortOpen Then MSComm1.PortOpen = FalseTimer1.Enabled = FalseEnd Sub*剪切*Private Sub Command12_Click(Index As Integer) 剪切 Dim JustChanged As Boolean Dim UndoText(1) As String UndoText(1) = Form1.Text3.Text JustChanged = True Clipboard.Clear Clipboard.SetText Form1.Text3.SelText Form1.Text3.SelText = End Sub*复制*Private Sub Command13_Click(Index As Integer) 复制 Clipboard.SetText Form1.Text3.SelTextEnd Sub*粘贴*Private Sub Command14_Click(Index As Integer) 粘贴 Dim UndoText(1) As String UndoText(1) = Form1.Text3.Text Form1.Text3.SelText = Clipboard.GetTextEnd Sub*删除*Private Sub Command15_Click(Index As Integer) 删除 Text3.Text = Text2.Text = Check1.Value = 0End Sub*全选*Private Sub Command16_Click(Index As Integer) 全选 Form1.Text3.SelStart = 0 Form1.Text3.SelLength = Len(Form1.Text3.Text) Te

温馨提示

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

评论

0/150

提交评论