第6章Visual Basic串口通信程序设计典型实例
利用Visual Basic开发串口通信程序既可以使用MSComm控件也可以调用Windows API 函数。不过,只要MSComm可以被选用,它几乎总是我们推荐的选择,因为MSComm的功能和API调用一样好甚至比它还好且使用起来更加简单。
在本章提供的串口通信程序设计中,除了PC机与PC机串口通信外,PC机与单片机、PC机与智能仪表、PC机与PLC、PC机与GSM短信模块等串口通信任务的实现均采用MSComm控件。
6.1 PC机与PC机串口通信程序设计
当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
本设计通过两台PC机串口三线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收。
6.1.1 设计目的
1)掌握PC机与PC机串口通信的线路连接方法。
2)利用MSComm控件和VB-API函数实现PC机与PC机串口通信的程序设计方法。
6.1.2 设计用软、硬件
本设计用到的硬件和软件清单见表6-1。
6.1.3 硬件线路
线路说明:在计算机通电前,按图6-1所示将2台PC机通过串口线连接起来:PC机A 串口COM1端口的TXD与PC机B串口COM1端口的RXD相连;PC机A串口COM1端口的RXD与PC机B串口COM1端口的TXD相连;PC机A串口COM1端口的GND与PC机B串口COM1端口的GND相连。
6.1.4 设计任务
利用MSComm控件和Visual Basic API函数编写程序实现PC机与PC机串口通信。
216
图6-1 PC机与PC机串口通信线路
任务要求:两台计算机互发字符并自动接收,如一台计算机输入字符串“Please return abc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。
实际上就是编写一个简单的双机聊天程序。
6.1.5 任务实现
6.1.5.1 利用MSComm控件实现字符型数据发送与接收
1.建立新工程
VB使用“工程”来管理每一个应用程序要使用的所有文件,每建立一个新程序,就要新建一个工程。一个工程由窗体、标准模块、控件及应用所需的环境设置等组成。
运行VB 6.0程序,出现“新建工程”对话框,选择“标准EXE”,单击“打开”命令按钮,进入VB工程集成开发环境,窗体设计器中自动出现一个名为Form1的空白窗体。
2.程序界面设计
向空白窗体添加各种控件,以完成预定的各种功能。我们开始一个项目的设计时,VB 的工具箱中会有许多默认的控件让设计者予以选用,这些原本就出现在工具箱中的控件是内置控件,它提供了一些基本的系统设计组件给设计者,不过,功能比较特别的控件就不会出现在其中,如用来设计串口通信功能的控件MSComm就不在其中。
1)添加串口通信控件MSComm
由于VB的串行通信组件并不会主动出现在工具箱里中,当我们需要MSComm控件时,首先要把它加入到工具箱中。
让MSComm控件出现在工具箱中的步骤如下:
选择“工程”菜单下的“部件…”子菜单,在弹出的“部件”对话框中,在“控件”选项卡属性中选中“Microsoft Comm Control 6.0”复选框,单击“确定”按钮后,在工具箱中就出现了一个形似“电话”的图标,它就是MSComm控件。
工具箱中有了MSComm控件,就可以选择MSComm控件的图标后将其加到程序窗体上,利用该控件PC机就可以通过VB实现与串口设备的串口通信了。
由于每个使用的MSComm控件对应着一个串行端口,如果应用程序需要访问多个串行
217
218
端口,必须添加多个MSComm 控件。
2)为了实现连续的自动接收,将工具箱中的Timer 控件加到程序窗体上。
3)添加2个文本框控件:Text1 和Text2,用于输入要发送的字符和显示要接收的字符。 4)添加2个标签控件:Label1和Label2,作为发送和接收字符区的标签。 5)添加1个按钮控件:Command1执行发送字符命令。 程序设计界面如图6-2所示。
3.属性设置
从属性窗口设置属性时,只需从对象列表框中选择待设置属性的对象,然后从属性列表的左列选择属性,最后在属性列表的右列中输入或选择新的属性值。
程序窗体、控件对象的主要属性设置见表6-2。
图6-2 程序窗体
注:2台计算机中VB程序界面及属性设置应完全相同,尤其MSComm控件的InputMode、Settings属性值应相同。
4.程序代码设计
程序要实现自动发送或读取,在VB中有两个方式可以达到,一是查询方式,利用查询事件是否发生,当发生时,去执行默认的程序代码。可以使用计时器控件(Timer),该控件属性中的Interval可以控制计时器被启动的时间间隔,当时间间隔一到,便会执行原先放在计时器中的程序代码。
下面是利用查询方式编写的PC与PC串口通信的参考程序:
' 串口初始化
Private Sub Form_Load()
https://www.doczj.com/doc/7417571922.html,mPort = 1 ' 设置通信端口号为COM1
MSComm1.Settings = "9600,n,8,1" ' 设置串口1参数
MSComm1.InputMode = 0 ' 接收文本型数据
MSComm1.PortOpen = True ' 打开通信端口1
End Sub
' 把字符通过串口发送出去
Private Sub Cmdsend_Click()
If Textsend.Text = "" Then
pp = MsgBox("发送的数据不能为空!", 16)
Exit Sub
End If
MSComm1.Output = Trim(Textsend.Text)
For i = 1 To 20000000
Next i
End Sub
' 通过时钟控制来自动接收字符
Private Sub Timer1_Timer()
Dim buf$
buf = Trim(MSComm1.Input) ' 将缓冲区内的数据读入buf变量中
If Len(buf) <> 0 Then ' 判断缓冲区内是否存在数据
219
TextReceive.Text = TextReceive.Text + Chr(13) + Chr(10) + buf //回车换行
End If
End Sub
' 关闭通信端口,停止程序运行
Private Sub Cmdquit_Click()
MSComm1.PortOpen = False
Unload Me
End Sub
在Windows环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows的系统函数中,均包含了支持通信中断的功能。
二是使用事件方式。MSComm控件提供事件回应功能,可以利用此功能达到自动发送/接收的目的。下面是利用事件方式编写的PC与PC串口通信的参考程序,界面设计与图6-2基本相同,区别是事件方式不需要时间控件。
'串口初始化
Private Sub Form_Load()
https://www.doczj.com/doc/7417571922.html,mPort = 1 '设置通信端口号为COM1
MSComm1.Settings = "9600,n,8,1" '设置串口参数
MSComm1.InputMode = 0 '接收文本型数据
MSComm1.RThreshold = 1 '接收缓冲区每收到一个字符都会使MSComm 控件触发OnComm 事件MSComm1.PortOpen = True '打开通信端口1
End Sub
'把字符通过串口发送出去
'启动定时器
Private Sub Cmdsend_Click()
If Textsend.Text = "" Then
pp = MsgBox("发送的数据不能为空!", 16)
Exit Sub
End If
MSComm1.Output = Trim(Textsend.Text)
End Sub
'MSComm 的OnComm 事件程序
'由CommEvent 属性值的不同,将各自的程序代码写入相关的子程序中
'只要RThresold 中的设定字符数到达时便会使得CommEvent 属性值变成comEvReceive
'因此接收的子程序便会被执行
Private Sub MSComm1_OnComm()
Dim buf$
Select Case https://www.doczj.com/doc/7417571922.html,mEvent
'通过取代底下每一个case 表达式来处理每个事件与错误
Case comEvCD ' CD 线的状态发生变化
220
Case comEvCTS ' CTS 线的状态发生变化
Case comEvDSR ' DSR 线的状态发生变化
Case comEvReceive
buf = Trim(MSComm1.Input) '将缓冲区内的数据读入buf变量中
Case comEvSend
End Select
TextReceive.Text = TextReceive.Text & buf
End Sub
'停止程序运行
Private Sub Cmdquit_Click()
Unload Me
End Sub
'关闭通信端口,
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
5.运行程序
程序设计、调试完毕,单击工具栏快捷按钮“启动”,运行程序。注:2台计算机同时运行本程序。
首先在一台计算机程序窗体中发送字符区输入要发送的字符,比如“我是第一组,收到请回话!”,单击“发送字符”按钮,发送区的字符串通过COM1口发送出去;
如果联网通信的另一台计算机程序收到字符,则返回字符串,如“收到,我是第2组!”,如果通信正常该字符串将显示在接收区中。
程序运行画面如图6-3所示。
图6-3 程序运行画面
221
6.1.5.2 利用API函数实现字符型数据发送与接收
1.建立新工程
运行VB 6.0,创建标准的工程项目文件,设计程序窗体。
1)添加2个TextBox控件,用于输入要发送的字符和显示需接收的字符;
2)添加2个Label控件,作为发送和接收字符区的标签;
3)添加1个Timer控件,用于周期性地读取串口数据;
4)添加2个CommandButton控件,分别执行发送字符、关闭程序等命令。
设计的程序界面见图6-4。
图6-4 程序窗体界面
2.属性设置
程序窗体、控件对象的主要属性设置见表6-3。
222
3.程序代码设计
' 在程序标准模块SerialPort.bas的说明部分放置使用的API函数声明及所用的结构、常数的声明:Option Explicit
Global ComNum As Long
Global bRead(255) As Byte
Type COMSTAT
fCtsHold As Long
fDsrHold As Long
fRlsdHold As Long
fXoffHold As Long
fXoffSent As Long
fEof As Long
fTxim As Long
fReserved As Long
cbInQue As Long
cbOutQue As Long
End Type
Type COMMTIMEOUTS
ReadIntervalTimeout As Long
ReadTotalTimeoutMultiplier As Long
ReadTotalTimeoutConstant As Long
WriteTotalTimeoutMultiplier As Long
WriteTotalTimeoutConstant As Long
End Type
Type DCB
DCBlength As Long
BaudRate As Long
fBinary As Long
fParity As Long
fOutxCtsFlow As Long
fOutxDsrFlow As Long
fDtrControl As Long
fDsrSensitivity As Long
fTXContinueOnXoff As Long
fOutX As Long
fInX As Long
fErrorChar As Long
fNull As Long
fRtsControl As Long
fAbortOnError As Long
fDummy2 As Long
223
wReserved As Integer
XonLim As Integer
XoffLim As Integer
ByteSize As Byte
Parity As Byte
StopBits As Byte
XonChar As Byte
XoffChar As Byte
ErrorChar As Byte
EofChar As Byte
EvtChar As Byte
End Type
Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GetLastError Lib "kernel32" () As Long
Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As Long Declare Function SetCommTimeouts Lib "kernel32" (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long
Declare Function GetCommTimeouts Lib "kernel32" (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long
Declare Function BuildCommDCB Lib "kernel32" Alias "BuildCommDCBA" (ByVal lpDef As String, lpDCB As DCB) As Long
Declare Function SetCommState Lib "kernel32" (ByVal hCommDev As Long, lpDCB As DCB) As Long Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long
224
窗体模块程序如下:
'初始化串口
Private Sub Form_Load()
If Not Init_Com("COM1:", "9600,n,8,1") Then
MsgBox "端口" & " 无效!"
Exit Sub
End If
End Sub
'发送字符
Private Sub BTNSend_Click()
If WriteCOM32(txt(2)) & vbCr <> Len(txt(2)) Then
MsgBox "写入错误"
Exit Sub
End If
End Sub
'向串口写数据
Function WriteCOM32(COMString As String) As Integer
On Error GoTo handelwritelpt
Dim RetBytes As Long, LenVal As Long
Dim retval As Long
If Len(COMString) > 255 Then
WriteCOM32 Left$(COMString, 255)
WriteCOM32 Right$(COMString, Len(COMString) - 255)
Exit Function
End If
For LenVal = 0 To Len(COMString) - 1
bRead(LenVal) = Asc(Mid$(COMString, LenVal + 1, 1)) Next LenVal
retval = WriteFile(ComNum, bRead(0), Len(COMString), RetBytes, 0) WriteCOM32 = RetBytes
handelwritelpt:
Exit Function
End Function
'读取数据
Private Sub TMRComm_Timer()
Dim Ans As String, i As Integer, RtnStr As String
Ans = ReadCommPure()
If Ans = "" Then Exit Sub
RtnStr = RtnStr & CleanStr(Ans)
txtRec.Text = RtnStr
FlushComm
225
End Sub
'从串口读取数据
Function ReadCommPure() As String
On Error GoTo handelpurecom
Dim RetBytes As Long, i As Integer, ReadStr As String, retval As Long Dim CheckTotal As Integer, CheckDigitLC As Integer
retval = ReadFile(ComNum, bRead(0), 255, RetBytes, 0)
ReadStr = ""
If (RetBytes > 0) Then
For i = 0 To RetBytes - 1
ReadStr = ReadStr & Chr(bRead(i))
Next i
Else
FlushComm
End If
ReadCommPure = ReadStr
handelpurecom:
Exit Function
End Function
Function CleanStr(TextLine As String) As String
Dim i As Integer, RtnStr As String
RtnStr = ""
For i = 1 To Len(TextLine)
Select Case Asc(Mid$(TextLine, i, 1))
Case &H5D
RtnStr = RtnStr & "
Case &H5B
RtnStr = RtnStr & "
Case Is >= &H30
RtnStr = RtnStr & Mid$(TextLine, i, 1)
Case 13
RtnStr = RtnStr & "
Case 10
RtnStr = RtnStr & "
Case Else
RtnStr = RtnStr & "@"
End Select
Next i
CleanStr = RtnStr
End Function
'清空文件缓冲区
226
Function FlushComm()
FlushFileBuffers (ComNum)
End Function
'初始化端口
Function Init_Com(ComNumber As String, Comsettings As String) As Boolean On Error GoTo handelinitcom
Dim ComSetup As DCB, Answer, Stat As COMSTAT, RetBytes As Long Dim retval As Long
Dim CtimeOut As COMMTIMEOUTS, BarDCB As DCB
' 打开通讯口读/写(&HC0000000).
' 必须指定存在的文件(3).
ComNum = CreateFile(ComNumber, &HC0000000, 0, 0&, &H3, 0, 0)
If ComNum = -1 Then
MsgBox "端口" & ComNumber & "无效. 请设置正确.", 48
Init_Com = False
Exit Function
End If
'超时
CtimeOut.ReadIntervalTimeout = 20
CtimeOut.ReadTotalTimeoutConstant = 1
CtimeOut.ReadTotalTimeoutMultiplier = 1
CtimeOut.WriteTotalTimeoutConstant = 10
CtimeOut.WriteTotalTimeoutMultiplier = 1
retval = SetCommTimeouts(ComNum, CtimeOut)
If retval = -1 Then
retval = GetLastError()
MsgBox "端口超时设定无效" & ComNumber & " 错误: " & retval
retval = CloseHandle(ComNum)
Init_Com = False
Exit Function
End If
retval = BuildCommDCB(Comsettings, BarDCB)
If retval = -1 Then
retval = GetLastError()
MsgBox "无效设备DCB 块" & Comsettings & " 错误: " & retval
retval = CloseHandle(ComNum)
Init_Com = False
Exit Function
End If
227
retval = SetCommState(ComNum, BarDCB)
If retval = -1 Then
retval = GetLastError()
MsgBox "无效设备DCB 块" & Comsettings & " 错误: " & retval
retval = CloseHandle(ComNum)
Init_Com = False
Exit Function
End If
Init_Com = True
handelinitcom:
Exit Function
End Function
'关闭程序
Private Sub BTNCloseCom_Click()
Unload Me
End Sub
'关闭端口
Private Sub Form_Unload(Cancel As Integer)
CloseHandle (ComNum)
End Sub
4.运行程序
程序设计、调试完毕,执行菜单“运行/启动”命令或单击工具栏快捷按钮“启动”,运行程序。
1)首先在程序窗体中发送字符区输入要发送的字符,单击“发送数据”按钮,发送区的字符串通过COM1口发送出去;
2)另一台计算机发送数据,本计算机自动读入并显示在接收数据区中。
程序运行界面见图6-5。
图6-5 程序运行界面
228
229
6.1.5.3 利用MSComm 控件实现PC 机双串口互通信
如果一台计算机有2个串口,可通过串口线将2个串口连接起来:COM1端口的TXD 与COM2端口的RXD 相连;COM1端口的RXD 与COM2端口的TXD 相连;COM1端口的GND 与COM2端口的GND 相连,如图6-6(a )所示,这是串口通信设备之间的最简单连接(即三线连接),图中的2号接收脚与3号发送脚交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。
如果一台计算机只有1个串行通信端口可以使用,那么将第2脚与第3管脚短路,如图6-6(b )所示,那么由第3脚的输出信号就会被传送到第2脚而送到同一串行端口的输入缓冲区,程序只要再由相同的串行端口上作读取的操作,即可将数据读入,一样可以形成一个测试环境。
设计的参考代码如下:
' 串口初始化
' 串口1与串口2的通信参数应一致 Private Sub Form_Load()
https://www.doczj.com/doc/7417571922.html,mPort = 1 ' 设置通信端口号为COM1 MSComm1.Settings = "9600,n,8,1" ' 设置串口1参数 MSComm1.InputMode = 0 ' 接收文本型数据 MSComm1.PortOpen = True ' 打开通信端口1
https://www.doczj.com/doc/7417571922.html,mPort = 2 ' 设置通信端口号为COM2 MSComm2.Settings = "9600,n,8,1" ' 设置串口2参数 MSComm2.InputMode = 0 ' 接收文本型数据 MSComm2.PortOpen = True ' 打开通信端口2 End Sub
' 把字符通过串口发送出去 ' 启动定时器
Private Sub Cmdsend_Click()
MSComm1.Output = Trim(Textsend.Text) Timer1.Enabled = True End Sub ' 接收字符 图6-6 串口设备最简单连接
(a)
(b)
Private Sub Timer1_Timer()
Dim buf$
Timer1.Enabled = False
buf = Trim(MSComm2.Input) ' 将缓冲区内的数据读入buf变量中If Len(buf) = 0 Then ' 判断缓冲区内是否存在数据
TextReceive.Text = ""
Else
TextReceive.Text = buf
End If
End Sub
' 停止程序运行
Private Sub Cmdquit_Click()
Unload Me
End Sub
' 关闭通信端口,
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
MSComm2.PortOpen = False
End Sub
程序运行画面如图6-7所示。
图6-7 VB程序运行画面
230
6.2 PC机与单片机串口通信程序设计
目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机
往往只负责数据的采集和通信,而上位机通常以Array基于图形界面的Windows系统为操作平台;为便
于查询和保存数据,还需要数据库的支持,这种
应用的核心是数据通信,它包括单片机和上位机
之间、客户端和服务器之间以及客户端和客户端
之间的通信,而单片机和上位机之间数据通信则
是整个系统的基础。
单片机和PC的通信是通过单片机的串口和
图6-8 单片机实验板
PC机串口之间的硬件连接实现的。
图6-8是本设计使用的单片机实验板。有关单片机实验板的详细信息请查询电子开发网
https://www.doczj.com/doc/7417571922.html,/。
6.2.1 实训目的
1.掌握PC机与单片机串口通信的线路连接方法。
2.掌握PC机与单片机串口通信的Keil C51、Visual Basic程序设计方法。
6.2.2 设计用软、硬件
本设计用到的硬件和软件清单见表6-4。
6.2.3 硬件线路
线路说明:如图6-9所示,数据通信的硬件上采用3线制,将单片机和PC机串口的3个引脚(RXD、TXD、GND)分别连在一起,即将PC机和单片机的发送数据线TXD与接收数据RXD交叉连接,两者的地线GND直接相连,而其它信号线如握手信号线均不用,采用软件握手的方式,这样既可以实现预定的任务又可以简化电路设计。
但由于单片机的TTL逻辑电平和RS-232C的电气特性完全不同,RS-232C的逻辑0电平规定为+3∽+15V之间,逻辑1电平为-3∽-15V之间,因此在将PC机和单片机的RXD和TXD交叉连接时必须进行电平转换,这里使用的是MAX232电平转换芯片。
231
单片机系统有LED显示器模块、继电器输出模块、蜂鸣器模块等。
图6-9 PC机与单片机串口通信线路
6.2.4 设计任务
利用Keil C51、Visual Basic编写程序实现PC机与单片机串口通信。任务要求:
1.设计任务1
PC机通过串行口将数字(00,01,02,03...,FF,十六进制)发送给单片机,单片机收到后回传这个数字,PC机接收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串行通信正确,否则有错误。启始符是数字00,结束符是数字FF。
2.设计任务2
1)测试通信状态
先在文本框中输入字符串“Hello”,单击“测试”按钮,将字符串“Hello”发送到单片机,若PC机与单片机通信正常,在PC机程序的文本框中显示字符串“OK!”,否则显示字符串“ERROR!”。
2)循环计数
单击“开始”按钮,文本框中数字从0开始累加,0、1、2、3…,并将此数发送到单片机的显示器上显示;当累加到10时,回到0重新开始累加,依次循环;任何时候,单击“停止”按钮,PC机程序中和单片机显示器都停止累加,再单击“开始”按钮,接着停下的数继续累加。
3)控制指示灯
在单片机继电器接线端子的2个通道上分别接上2个指示灯,在PC机程序画面上选择指示灯号,如1号灯,单击画面“打开”按钮,单片机上1号灯亮,同时蜂鸣器响;单击画面“关闭”按钮,1号灯灭,蜂鸣器停止响;同样控制2号灯的亮灭(蜂鸣器同时动作)。
6.2.5 任务实现
单片机和PC机通信,在程序设计上涉及两个部分的内容:
一是单片机的C51程序;二是PC机的串口通信程序和界面的编制。
6.2.5.1 利用Keil C51实现单片机与PC机串口通信任务1
232
Keil C51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。
启动Keil C51,几秒钟后出现编辑界面。
1)建立一个新工程
单击Project菜单,在弹出的下拉菜单中选中New Project选项,出现Create New Project 对话框。然后选择你要保存的路径、文件夹,输入工程文件的名字,如pc_com(后缀名默认),单击“保存”按钮。
这时会弹出一个“Select Device for Target …Target 1?”对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,Keil C51几乎支持所有的51核的单片机。这里选择Atmel 的89C51。选择89C51之后,右边一栏是对这个单片机的基本的说明,然后单击“确定”按钮。
2)编写程序
单击“File”菜单,再在下拉菜单中单击“New”选项。此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件。
单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名,如pc_com.c,然后,单击“保存”按钮。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出菜单,然后单击“Add File to Group‘Source Group 1’”。
选中pc_com.c,然后单击“Add ”按钮,再单击“Close ”按钮。此时注意到“Source Group 1”文件夹中多了一个子项“pc_com.c”。子项的多少与所增加的源程序的多少相同。
现在,请输入C语言源程序。
在输入程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil C51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
3)编译程序
单击“Project”菜单,在下拉菜单中单击“Options for Target‘Target 1’”选项,出现对话框,选择Output选项卡,选中“Create HEX Files”项,单击“确定”按钮。
再单击“Project”菜单,在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),进行编译。若有错误会在output窗口提示,可根据此提示,找出错误并修改,直至编译通过,如图6-10所示。
至此,用Keil C51上做了一个完整工程,其中,生成一个编程器烧写文件:pc_com.hex。
4)烧录程序
将AT89C51芯片安装在编程器插座上,运行编程器程序。
选择单片机芯片类型:AT89C51,读入Intel Hex文件pc_com.hex,执行自动编程指令,
233
将pc_com.hex文件烧录入AT89C51芯片中。
将烧录好的AT89C51芯片安装到单片机实验板上,就可以用串口调试助手程序对它进行测试了。
图6-10 Keil C51编译界面
以下是完成单片机与PC机串口通信任务1的C51参考程序:
# pragma db code
# include
# define uchar unsigned char
void rece(void);
void init(void);
uchar re[17];
/*主程序*/
void main(void)
{
uchar temp;
init();
do{
while(RI==0);
temp=SBUF;
if(temp==0x00)
{rece();}
else break;
}while(1);
}
234
/*串口初始化*/
void init(void)
{
TMOD=0x20; //定时器1--方式2
PCON=0x80; //电源控制
SCON=0x50; //方式1
TL1=0xF3;
TH1=0xF3; //22.1184MHZ晶振,波特率为4800 0xf3 9600 0xfa 19200 0xfd
TR1=1;
}
/*接收返回数据*/
void rece(void)
{
char i;
i=0;
do{while(RI==0);
re[i]=SBUF;
RI=0;
SBUF=re[i];
while(TI==0);
TI=0;
i++;
}while(re[i-1]!=255);
}
。。。。。。
6.6 PC机与GSM模块串口通信程序设计
在很多监控领域,各种监控设备大多还是有线方式传输,当距离遥远时,监控设备的安装、维护非常不便,因为监控端远离采集端,铺设电缆的投入有时可以说是巨大的。通过无线方式来交换数据,则可以有效地避免这些问题。
235
Visual Basic程序设计_0004 一、单项选择题(共10 道试题,共40 分。) 1. 一旦数据到达,将首先触发Winsock控件的()。 A. DataArrival事件 B. ConnectionRequest事件 C. DataSend事件 D. DataGet事件 2. 以下叙述中错误的是()。 A. 一个工程中只能有一个Sub Main过程 B. 窗体的Show方法的作用是将指定的窗体载入内存并显示该窗体 C. 窗体的Hide方法和Unload方法的作用完全相同 D. 若工程文件中有多个窗体,可以根据需要指定一个窗体为启动窗体 3. 若要将窗体从内存中卸载,其实现的方法是()。 A. Unload B. Show C. Load D. Hide 满分:4 分 4. 下列数组声明语句,正确的是()。 A. Dim a[3,4] As Integer B. Dim a(3 4) As Integer C. Dim a(n,n) As Integer D. Dim a(3,4) As Integer 满分:4 分 5. 控件()没有Caption属性。
A. Label B. OptionButton C. Frame D. ListBox 满分:4 分 6. Visual Basic提供的常见鼠标事件中,鼠标按下所引发的事件为()。 A. MouseDown事件 B. Click事件 C. MouseUp事件 D. MouseMove事件 满分:4 分 7. 下列数据类型中,()占用内存最小。 A. Boolean B. Byte C. Integer D. Long 满分:4 分 8. 无论何种控件,共同具有的属性是()。 A. Text B. Name C. Caption D. ForeColor 满分:4 分 9. 要暂时关闭计时器,应把计时器的某个属性设置为False,这个属性是()。 A. Visible B. Timer
VisualBasic程序设计作业题解
Visual Basic程序设计作业题解 作业 3 一、选择题 1.Visual Basic根据计算机访问文件的方式将文件分成三类,其中不包括()。 A.顺序文件 B.Unix文件 C.二进制文件 D.随机文件 答案:B 2.随机文件进行文件读写的单位是()。 A.字节 B.记录 C.整个文件 D.字符 答案:B 3.为了使目录路径列表Dir1的内容符合驱动器列表框Drive1的选择,应当()。 A.在Dir1_Click事件中加入 2
Dir1.Path=Drive1.Drive B.在Drive1_Click事件中加入Dir1.Path=Drive1.Drive C.在Dir1_Click事件中加入Drive1.Path=.Drive.Path D.在Dir1_Click事件中加入Drive1.Path=.Dir1.Path 答案:A 4.为了使Drive1驱动器列表框、Dir1目录路径列表框和File1文件列表框能同步协调工作,需要在()。 A.Drive1的Change事件过程中加入Drive1.Drive=Dir1.Path,在Dir1的Change事件过程中加入Dir1.Path=File1.Path代码。 B.Drive1的Change事件过程中加入Dir1.Path=Drive1.Drive,在Dir1的Change事件过程中加入File1.Path=Dir1.Path代码。 C.Dir1的Change事件过程中加入Dir1.Path=Drive1.Drive,在File1的Click事件过程中加入File1.Path=File1.FileName代码。 3
Visual Basic程序设计作业答案 作业2 一、选择题 1.B 2.C 3.D 4.B 5.D 6.A 7.B 8.C 9.A 10.D 11.C 12.B 13.D 14.C 15.A 16.B 17.C 18.B 19.D 20.B 二、填空题 1.下拉式菜单弹出式菜单 2.打开另存为颜色字体打印 3.文本框列表框 4.Option Base 1 5.Call语句 6.工程工程属性通用Form1.Show 7.0 8.Sub过程的过程名不能返回值,而Function过程能通过过程名返回值 9.窗体模块标准模块类模块 10.移出内存无效状态 11.(1)2*Cosα*Sinα/(2*α) (2) Sqr(s*(s-a)*(s-b)*(s-c)) (3) Sin(45*3.14/180) 12.(1)x>=1 And x<12 (2) A+B>=C Or a-c<=c (3) a>0 And b>0 Or(a<0 And b<0) 13.False 14.For While Do 15.3 三、阅读下列程序,给出程序运行结果。 1.程序运行后,单击窗体,输出结果为:5050。 2. 3. 4.
3.4 3 5. * *** ***** ******* ********* 四、程序设计题 1. Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 100 Then y = x Else If x < 200 Then y = 9.5 * x Else If x < 300 Then y = 0.9 * x Else If x < 500 Then y = 0.8 * x Else y = 0.7 * x End If End If End If End If Text2.Text = y End Sub 2. Private Sub Form_Load() Dim x As Integer x = 100 Do Until x > 200 If x Mod 3 <> 0 Then Text1.Text = Text1.Text & Str(x) & Chr(13) & Chr(10) End If x = x + 1 Loop End Sub
Visual Bsdic程序设计形成性考核册作业答案二 一、选择题 1.按照变量的作用域可将变量划分为( B )。 A、公有、私有、系统 B、全局变量、模块级变量、过程变量 C、动态、常数、静态 D、Public、Private、Protected 2. 可获得字符的ASCII码的函数是( C )。 A、Val B、Fix C、Asc D、Chr 3、要退出Do….Loop循环,可使用的语句的( D )语句。 A、Exit B、Exit For C、End Do D、Exit Do 4. 把数值型转换为字符串型需要使用的函数是(B )。 A、Val B、Str C、Asc D、Chr 5.关于语句行,下列说法正确的是( B )。 A.一行只能写一条语句B.一条语句可以分多行书写C.每行的首字符必须大写D.长度不能超过255个字符6.表达式6+10 Mod 4*2+1的值是( A ). A.9B.11 C.1 D.3 7.以下可以作为Visual Basic 变量名的是(B). A.SIN B.CO1 C.COS(X) D.X(-1) 8.表达式Abs(-5)+Len(“ABCDE”)的值为(C). A.5ABCDE B.-5ABCDE C.10 D.0
9.在代码编辑器中,如果一条语句太长,无法在一行内写下(不包括注释),要折行书写,可以在行末使用续行字符(A),表示下一行是当前行的继续. A.一个空格加一个下划字符(_)B.一个下划字符(_)C.直接回车D.一个空格加一个字符(-) 10.Sub过程与Function过程最根本的区别是(D). A.Sub过程可以使用Call语句或直接使用过程名调用,而Function过程不可以. B.Function过程可以有参数,Sub过程不可以. C.两种过程参数的传递方式不同. D.Sub过程的过程名不能返回值,而Function过程能够通过过程名返回值. 11."X是小于80的非负数",用VB表达式表示正确的是(C). A..0≤X<80 B.0<=X<80 C.0<=x and x<80 D.0<=x Orx<80 12.在设计菜单时,如果要在菜单中加入一个菜单分隔条,则菜单分隔条的标题必须设置为(B ) A.加号(+) B.减号(-) C.星号(*) D.感叹号(!) 13.如果要在程序中显示一个弹出式菜单,那么要调用Visual Basic 中提供的方法是(D). A.Print B.Move C.Refresh D.PopupMenu
《VB程序设计》综合复习资料 第一章Visual Basic程序设计概述 一、填空题 1、V isual Basic是一种面向__________的可视化程序设计语言,采取了__________的编程机制。 2、在VB中工程文件的扩展名是____________,窗体文件的扩展名是____________,标准模块文件的扩展名是____________。 3、执行“工程”菜单下的__________命令,可选择并添加ActiveX控件。 4、V isual Basic 6.0用于开发__________环境下的应用程序。 二、选择题 1、下面不是VB工作模式的是() A.设计模式B.运行模式C.汇编模式D.中断模式 2、可视化编程的最大优点是() A.具有标准工具箱 B.一个工程文件由若干个窗体文件组成 C.不需要编写大量代码来描述图形对象 D.所见即所得 3、下列不能打开属性窗口的操作是() A.执行“视图”菜单中的“属性窗口”命令 B.按F4键C.按Ctrl+T D.单击工具栏上的“属性窗口”按钮 4、下列可以打开立即窗口的操作是() A.Ctrl+D B.Ctrl+E C.Ctrl+F D.Ctrl+G 5、V isual Basic的编程机制是() A.可视化B.面向对象C.面向图形D.事件驱动 三、简答题 1、代码窗口主要包括哪几部分?
2、在工程资源管理器窗口中,主要列出了哪三类文件? 3、窗体布局窗口的主要用途是什么? 4、VB的基本特点是什么? 5、怎样理解可视化设计? 6、怎要理解事件驱动编程? 第二章简单的VB程序设计 一、填空题 1、设置是否可以用Tab键来选取命令按钮,应该用______________属性。 2、一个控件在窗体的位置由_______和________属性决定,其大小由__________和_________属性决定。 3、利用对象的属性setfocus可获得焦点,对于一个对象,只有其visible属性和____________属性为true,才能接受焦点。 4、设置控件背景颜色的属性名称是______________________。 5、所有控件都具有的共同属性是__________________属性。 6、一般情况下,控件有两个属性项的缺省值是相同的,这两个属性项是_______________。 7、VB中的每个对象(控件)都有一组特征,这组特征称为__________,我们通过修改它可以控制对象的外观和操作。 8、通常情况下,VB中一个工程主要包括如下四个文件:窗体文件、工程文件、类模块文件和_____________文件,后者的扩展名为.Bas,通常由Basic语言编写,是一个可共用的子程序。 9、VB有三种工作模式,分别是设计(Design)模式、_____________和中断(Break)模式。 二、选择题 1、以下能够触发文本框Change事件的操作是() A.文本框失去焦点B.文本框获得焦点 C.设置文本框的焦点D.改变文本框的内容 2、应用程序设计完成后,应将程序保存,保存的过程是() A.只保存窗体文件即可 B.只保存工程文件即可
《VisualBasic》复习资料 总共50题共100分 一、单选题(共20题,共40分) 1. 假定窗体上有一个标签,名为Label1,为了使该标签透明并且没有边框,则正确的属性设置为()(2分) https://www.doczj.com/doc/7417571922.html,bel1.BackStyle=0 https://www.doczj.com/doc/7417571922.html,bel1.BackStyle=1Label1.BorderStyle=0 Label1.BorderStyle=1 https://www.doczj.com/doc/7417571922.html,bel1.BackStyle=True https://www.doczj.com/doc/7417571922.html,bel1.BackStyle=FalseLabel1.BorderStyle=True Label1.BorderStyle=False . ★标准答案:A 2. 设置一个单选按钮(OptionButton)所代表选项的选中状态,应当在属性窗口中改变的属性是()(2分) A.Caption https://www.doczj.com/doc/7417571922.html, C.Text D.value . ★标准答案:D 3. 比较图片框(PictureBox)和图像框(Image)的使用,正确的描述是()(2分) A.两类控件都可以设置AutoSize属性,以保证装入的图形可以自动改变大小 B.两类控件都可以设置Stretch属性,使得图形根据物件的实际大小进行拉伸调整,保证显示图形的所有部分 C.当图片框(PictureBox)的AutoSize自属性为Jlase时,只在装入图元文件(*.wmf)时,图形才能自动调整大小以适应图片框的尺寸 D.当图像框(Image)的Stretch属性为True时,图像框会自动改变大小以适应图形的大小,使图形充满图像框 . ★标准答案:D 4. VB的工程资源管理器可管理多种类型的文件,下面叙述不正确的是()(2分) A.窗体文件的扩展名为.frm,每个窗体对应一个窗体文件 B.标准模块是一个纯代码性质的文件,它不属于任何一个窗体 C.用户通过类模块来定义自已的类,每个类都用一个文件来保存,其扩展名为.bas D.资源文件是一种纯文本文件,可以用简单的文字编辑器来编辑 . ★标准答案:C 5. 可以惟一标识控件数组中的每一个控件属性的是()(2分) https://www.doczj.com/doc/7417571922.html, B.Caption C.Index D.Enabled . ★标准答案:C 6. 下面()不是VB的文件类控件(2分) A.DriveListBox控件 B.KirListBox控件 C.FileListBox控件 D.MsgBox . ★标准答案:D 7. 选中一个窗体,启动菜单编辑器的方法有()(2分) A.单击工具栏中的“菜单编辑器”命令 B.执行“工具”菜单中的“菜单编辑器”命令 C.按Ctrl+E D.按Shift+Alt+M . ★标准答案:D 8. 用于获得字符串S从第2个字符开始的3个字符的函数是()(2分)
Visual Basic程序设计作业题解 作业 3 一、选择题 1.Visual Basic根据计算机访问文件的方式将文件分成三类,其中不包括()。 A.顺序文件 B.Unix文件 C.二进制文件 D.随机文件 答案:B 2.随机文件进行文件读写的单位是()。 A.字节 B.记录 C.整个文件 D.字符 答案:B 3.为了使目录路径列表Dir1的内容符合驱动器列表框Drive1的选择,应当()。 A.在Dir1_Click事件中加入Dir1.Path=Drive1.Drive B.在Drive1_Click事件中加入Dir1.Path=Drive1.Drive C.在Dir1_Click事件中加入Drive1.Path=.Drive.Path D.在Dir1_Click事件中加入Drive1.Path=.Dir1.Path 答案:A 4.为了使Drive1驱动器列表框、Dir1目录路径列表框和File1文件列表框能同步协调工作,需要在()。 A.Drive1的Change事件过程中加入Drive1.Drive=Dir1.Path,在Dir1的Change事件过程中加入Dir1.Path=File1.Path代码。 B.Drive1的Change事件过程中加入Dir1.Path=Drive1.Drive,在Dir1的Change事件过程中加入File1.Path=Dir1.Path代码。 C.Dir1的Change事件过程中加入Dir1.Path=Drive1.Drive,在File1的Click事件过程中加入File1.Path=File1.FileName代码。 D.Dir1的Change事件过程中加入Dir1.Path=Drive1.Drive,在File1的Click事件过程中加入File1.Path=Dir1.FileName代码。 答案:C 5.下面关于顺序文件的描述正确的是()。 A.每条记录的长度必须相同 B.可通过编程对文件中的某条记录方便地修改 C.数据只能以ASCII码形式存放在文件中,所以可通过文本编辑软件显示 D.文件的组织结构复杂 答案:C 6.KILL语句在VB语言中的功能是()。 1
第一章可视化编程概述 ABC1.关于对象的属性正确的是()。 A.对象的属性一般有属性名和属性值 B.可通过属性窗口设置属性的值 C.可通过程序代码设置属性的值 D.对象的所有属性值均可在设计时设计 ACD2.下列哪一个是VB对象的要素() A.属性 B.声音 C.方法 D. 事件 ABC3. 为了保存一个Visual Basic程序下列说法不正确的是( )。 A.只保存窗体文件(*.frm) B. 只保存工程文件(*.vbp) C. 分别保存工程文件和标准模块文件(*.bas) D.分别保存窗体文件、工程文件和标准模块文件 ABD 4、VB6.0集成开发环境的主窗口中包括()。 A.标题栏 B.菜单栏 C.状态栏 D.工具栏 ABD5.下面关于工程的概念中正确的是()。 A. Visual Basic 的工程是相关应用程序文件的集合 B. Visual Basic 的工程实际上为了管理构成应用程序的所有文件 C. 一个大的Visual Basic应用程序才能构成一个工程 D. 建立只有一个窗口的应用程序,会生成多个程序文件,也称为一个工程ABD6、以下说法正确的是() A.Visual Basic是一种可视化编程工具 B.Visual Basic是面向对象的编程语言 C.Visual Basic是结构化程序设计语言
D.Visual Basic采用事件驱动编程机制 ACD7.Visual Basic6.0工程资源管理器中的工程视图窗口以层次列表形式显示了组成这个工程的所有文件,以下属于其列举显示范围的是()。 A. 窗体文件 B. 可执行文件 C. 标准模块文件 D. 类模块文件 ACD8、用标准工具栏中的工具按钮可以执行的操作是()。 A.添加工程 B.打印源程序 C.运行程序 D.打开工程 ACD9、下列可以打开工具箱窗口的操作是()。 A.执行“视图”菜单中的“工具箱”命令 B.按Alt+F8键 C.单击工具栏上的“工具箱”按钮 D.按Alt+V,然后按Alt+X键 ACD10窗体也是一个对象,它具有()的特征。 A.属性 B.过程 C.事件 D.方法 BCD11、以下选项中,是 Visual Basic控件的是()。 A.窗体 B.定时器 C.单选框 D.命令按钮 ABD12下列说法中,不正确的说法是( ) A.一个窗体文件只能被一个工程使用 B.一个窗体文件可以被多个工程使用 C.一个窗体文件可以被多个工程使用,但必须和这些工程文件位于同一文件夹 D.一个窗体文件的文件名和窗体名必须一致 ABD13下列关于对象和类的说法中,不正确的是()。 A.包含参数调用和返回值的函数就具有对象的一切特点。 B.对象是无法实现数据封装的。 C.在应用领域中,有意义的任何事物都可以称为对象。 D.在应用领域中,有意义的任何事物都可以称为类。
《Visual Basic程序设计》形成性考核册作业及答案 《Visual Basic程序设计》形成性考核册作业及答案 作业1 一、选择题 1、在设计应用程序时,可以查看到应用程序工程所有组成部分的窗口是(D)。 A、窗体设计 B、代码 C、属性 D、工程资源管理器窗口 2、窗体的load事件的触发时机是(B)。 A、用户单击窗体时 B、窗体被加载时 C、窗体显示之后 D、窗体卸载时 3、与传统的程序设计语言相比,Visual Basic 最突出的特点是(C)。 A、结构化程序设计 B、程序开发环境 C、事件驱动编程机制 D、程序调试技术 4、VB6.0集成开发环境的主窗口中不包括(C)。 A、标题栏 B、菜单栏 C、状态栏 D、工具栏 5、如果对象的名称为Mytext ,而且对象有一个属性Text,那么在代码中引用该属性的正确格式是(B)。 A、 text.Mytext B、Mytext.Text C、Mytext.(Text) D、Mytext*Text 6、下列可以激活属性窗口的操作是(D)。 A、用鼠标双击窗体的任何部位 B、执行“工程“菜单中的”属性窗口“命令 C、按Ctrl+F4 D、按F4 7、假定已在窗体上画了多个控件,并有一个控件是活动的,为了在属性窗口中设置窗体的属性,预先应执行的操作是(A)。 A、单击窗体上没有控件的地方 B、单击任一个控件 C、不执行任何操作 D、双击窗体的标题栏 8、如果要在文本框键入字符时,只显示某个字符,如果(*),应设置文本框的(B)属性。 A 、Caption B、PasswordChar C、Text D、Char 9、如果想要在文本框中的内容在运行时不能编辑,需要文本框的(A)属性设置为True. A Locked B、MultiLine C、TabStop DVisible 10 对于定时器(Tiner)控制,设置其定时是否开启的属性是(C) A、Index B、Tag C、Enabled D、Left 11、要在窗口体Fornl 内显示“myfrm”使用的语句是( C) A、Form.capt ion=“myfrm” B、Fornl.caption=“myfrm” C、forml.print“myfrm” D、form.print“myfrm” 12、对象的性质和状态特征称为(C) A、事件 B、方法 C、属性 D、类 13、下列正确的赋值语句是(B) A、x+y=20 B、y=x+20 C、3x=y D、s= 14、当使用上下文相关的帮助时,选择要帮助的内容,然后按(D)键,就可出现MSDN窗口直接显示所需的帮助信息。 A、Help B、F10 C、Ese D、F1 15、将调试通过的工程经“文件”菜单的“生成.exe文件“编绎成名.exe后,将该可执行文件放到其它机器上不能运行的主要原因是(D)。 A、运行的机器上无VB系统 B、缺少.frm 窗体文件 C、该执行文件有病毒 D、以上原因都不对 二、填空题 1、当进入VB集成开发环境后,发现没有显示“工具箱”窗口。应选择视图菜单 的工具箱选项,使“工具箱”窗口显示。 2、在VB中,事件过程名由对象名和事件名构成。 3、工程文件的扩展名是 vbp ,窗体文件扩展名是 frm 。 4、对象时代码和数据的集合,例如,Visual Basic 中的窗体、按钮、
※声明: 1.实验所属课本原件为《Visual Basic程序设计教程(第4版)(□ 主编龚沛曾□编者杨志强陆慰民谢步瀛)》; 2.实验答案代码采用红色字体突出; 3.仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故 不作; 4.教学平台上机实验、课本篇后实验,两者题目操作略有差异,作 业以前者要求为准,故以下答案代码为前者代码,如对后者代码有所需求请私信; 5.本文为作者原创,复制转载请注明出处; 6.如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私 信; 7.浏览、复制、下载后请给作者一个合理的评价,感激不尽。实验1-1 编制简单的欢迎界面程序。 要求:在屏幕上显示“欢迎学习Visual Basic”;在文本框 Text1中输入姓名;单击命令按钮“你输入的姓名是”,在 Label3标签显示在文本框中输入的姓名。 “学号-1-1.frm”和“学号-1-1.vbp”文件名保存。以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”“”和“”)
Private Sub Command1_Click() Label3.Caption = Text1.Text End Sub 实验1-2 模仿教学篇例1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。各个控件及
End Sub Sub MyMove() Label1.Move Label1.Left - 50, Label1.Top If Label1.Left < 0 Then Label1.Left = Form1.Width End Sub Private Sub Command1_Click() Timer1.Interval = 200 End Sub Private Sub Command2_Click() Timer1.Interval = 0 Call MyMove End Sub Private Sub Form_Load() Timer1.Interval = 0 End Sub Private Sub Timer1_Timer() Call MyMove End Sub 实验1-3 “学号-1-3”为项目名保存。
VisualBasic程序设计典型例题解析(2) 一、填空题 1.以顺序输入模式打开“c:\source1.txt”文件的命令是(1);以输出方式打开“c:\source2.txt”文件的命令是(2)。 分析:Print#语句用于将把数据写入文件中。Print语句格式为: Open文件名[For模式]As[#]文件号 “For模式”为指定打开文件的模式是数据的输入模式还是输出模式。 结论:答案应为:(1)Open"c:\source1.txt"For Input As#1 (2)Open"c:\source2.txt"For Output As#2 2.在Visual Basic中,文件系统控件包括(1)、(2)和文件列表框(FileListBox)。三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 分析:在Visual Basic中,文件系统控件包括驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)。驱动器列表框可以选择或设置一个驱动器,目录列表框可以查找或设置指定驱动器中的目录,文件列表框可以查找指定驱动器指定目录中文件信息,三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 结论:答案应为:(1)驱动器列表框(DriveListBox)(2)目录列表框(DirListBox) 3.每次重新设置驱动器列表框的Drive属性时,都将引发(1)事件。可在该事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。 分析:在Visual Basic中,每次重新设置驱动器列表框的Drive属性时,都将引发Change 事件。可在Change事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。驱动器列表框的默认名称为Drive1,其Change事件过程的开头为Drive1_Change()。 结论:答案应为:(1)Change 4.目录列表框用来显示当前驱动器下目录结构。刚建立时显示(1)的顶层目录和当前目录,如果要显示其他驱动器上的目录信息,必须改变路径,即重新设置目录列表框的(2)属性。 分析:在Visual Basic中,目录列表框用来显示当前驱动器下目录结构。刚建立时显示当前驱动器的顶层目录和当前目录,如果要显示其他驱动器上的目录,必须改变路径,即重新设置目录列表框的Path属性。 结论:答案应为:(1)当前驱动器(2)Path 5.对驱动器列表框来说,每次重新设置驱动器列表框的(1)属性时,将引发Change 事件;对目录列表框来说,当(2)属性值改变时,将引发Change事件;对于文件列表框,重新设置的(3)属性,将引发Change事件。 分析:在Visual Basic中,对驱动器列表框来说,每次重新设置驱动器列表框的Drive属
开放教育形成性考核作业 Visual Basic程序设计 (专科) 学校名称: 学生学号: 学生姓名: 考核成绩:
姓名: 学号: 得分: 教师签名: 作业1 一、选择题 1、在设计应用程序时,可以查看到应用程序工程所有组成部分的窗口是()。 A、窗体设计 B、代码 C、属性 D、工程资源管理器窗口 2、窗体的load事件的触发时机是()。 A、用户单击窗体时 B、窗体被加载时 C、窗体显示之后 D、窗体卸载时 3、与传统的程序设计语言相比,Visual Basic 最突出的特点是()。 A、结构化程序设计 B、程序开发环境 C、事件驱动编程机制 D、程序调试技术 4、VB6.0集成开发环境的主窗口中不包括()。 A、标题栏 B、菜单栏 C、状态栏 D、工具栏 5、如果对象的名称为Mytext ,而且对象有一个属性Text,那么在代码中引用该属性的正确格式是()。 A、 text.Mytext B、Mytext.Text C、Mytext.(Text) D、Mytext*Text 6、下列可以激活属性窗口的操作是()。 A、用鼠标双击窗体的任何部位 B、执行“工程“菜单中的”属性窗口“命令 C、按Ctrl+F4 D、按F4 7、假定已在窗体上画了多个控件,并有一个控件是活动的,为了在属性窗口中设置窗体的属性,预先应执行的操作是()。 A、单击窗体上没有控件的地方 B、单击任一个控件 C、不执行任何操作 D、双击窗体的标题栏 8、如果要在文本框键入字符时,只显示某个字符,如果(*),应设置文本框的()属性。 A 、Caption B、PasswordChar C、Text D、Char 9、如果想要在文本框中的内容在运行时不能编辑,需要文本框的()属性设置为True. A Locked B、MultiLine C、TabStop DVisible 10 对于定时器(Tiner)控制,设置其定时是否开启的属性是() A、Index B、Tag C、Enabled D、Left 11、要在窗口体Fornl 内显示“myfrm”使用的语句是() A、Form.caption=“myfrm” B、Fornl.caption=“myfrm” C、forml.print“myfrm” D、form.print“myfrm” 12、对象的性质和状态特征称为() A、事件 B、方法 C、属性 D、类 13、下列正确的赋值语句是() A、x+y=20 B、y=x+20 C、3x=y D、s= 14、当使用上下文相关的帮助时,选择要帮助的内容,然后按()键,就可出现MSDN窗口直接显示所需的帮助信息。 A、Help B、F10 C、Ese D、F1 15、将调试通过的工程经“文件”菜单的“生成.exe文件“编绎成名.exe后,将该可执行文件放到其它机器上不能运行的主要原因是()。 A、运行的机器上无VB系统 B、缺少.frm 窗体文件 C、该执行文件有病毒 D、
一、填空题(每题1分,共10分) 1.把数学式子:ο25sin 21π +写成VB 的数值表达式为 ( Sqr(1+3.14159/2*Sin(25*3.14159/180)) )。 2.设A=5,B=6,C=7,D=8,表达式3>2*B OR A=C AND B<>C OR C>D 的值是( True )。 3.若Case 子句中的表达式表列具有形式:<表达式1> To <表达式2>,则它的含义是:当测试表达式的值等于( 指定范围内的值 )时,执行该Case 子句相应的语句块。 4.执行下面的程序段后,x 的值为( 12 )。 x=0 For i=1 To 8 Step 3 x=x+i Next i 5.在图片框上放置的控件称为图片框的( 子 )对象,而窗体是图片框的( 父 )对象。 6.将命令按钮Command1的Caption 属性值赋给文本框Text1的Text 属性使用的语句为( Text1.Text=Command1.Caption ) 7.复选框的Value 属性为( 1 )时,表示复选框被选中。
8. 使用滚动条可以获取某一范围内的数值输入。为使垂直滚动条的Value属性值从下往上递增变化,应设置滚动条Min属性值大于( Max )属性值。 9.语句:Dim A(-3 to 4) as Integer定义的一维数组A的元素个数是(8)。 10.给定如下子过程: Function fun(ByVal num As Long) As Long Dim k As Long,i As Integer k=1 For i=1 To num k=k*i Next i End Function 执行语句Print fun(5) 后在窗体上显示的结果为(0)。 二、单项选择题(每题1.5分,共30分) 1.装载窗体是窗体的( C )。 A) 对象 B) 属性 C) 事件 D) 方法 2.设a="Visual Basic",下面使b的值为"Basic"的赋值语句正确的是( B )。
Visual Basic程序设计_ 一、单项选择题(共10 道试题,共40 分。) 1. 一个VB应用程序可以包含几个vbp文件?() A. 1个 B. 可以没有 C. 2个 D. 可以包含多个 2. 下列()对象在运行时一定是不可见的。 A. Line B. Timer C. Shape D. Frame 3. 如果Winsock1.LocalPort=0,那么应用程序将使用()。 A. 注册端口 B. 公认端口 C. 常用端口 D. 随机端口 4. 如果要在文本框中键入字符时,只显示某个字符,如星号(*),应设置文本框的() 属性。 A. Caption B. PasswordChar C. Text D. Char 5. 要使图片框自动地与窗体右对齐,应该设置它的()属性。 A. Align
B. AutoSize C. Left D. Width 6. 要在窗体的标题栏中显示“我的第一个应用程序”,使用的语句是()。 A. Form1.Print"我的第一个应用程序" B. Form.Print"我的第一个应用程序" C. Form.caption="我的第一个应用程序" D. Form1.caption="我的第一个应用程序" 7. 表达式7+10 Mod 3*2+2()。 A. 1 B. 7 C. 6 D. 13 8. 在VB程序的以下几种错误中,最具隐藏性和破坏性的是()。 A. 运行时错误 B. 编译错误 C. 逻辑错误 D. 实时错误 9. 按照变量的作用域可将变量划分为()。 A. 公有、私有、系统 B. 动态、常数、静态 C. 全局变量、模块级变量、过程级变量 D. Public、 Private、 Protected 10. 无论何种控件,共同具有的属性是()。 A. Text
程序设计作业题解 作业 3 一、选择题 1.根据计算机访问文件的方式将文件分成三类,其中不包括()。 A.顺序文件 B.文件 C.二进制文件 D.随机文件 答案:B 2.随机文件进行文件读写的单位是()。 A.字节 B.记录 C.整个文件 D.字符 答案:B 3.为了使目录路径列表1的内容符合驱动器列表框1的选择,应当()。 A.在1事件中加入11 B.在1事件中加入11 C.在1事件中加入1 D.在1事件中加入11 答案:A 4.为了使1驱动器列表框、1目录路径列表框和1文件列表框能同步协调工作,需要在()。 A.1的事件过程中加入11,在1的事件过程中加入11代码。 B.1的事件过程中加入11,在1的事件过程中加入11代码。 C.1的事件过程中加入11,在1的事件过程中加入11代码。 D.1的事件过程中加入11,在1的事件过程中加入11代码。 答案:C 5.下面关于顺序文件的描述正确的是()。 A.每条记录的长度必须相同 B.可通过编程对文件中的某条记录方便地修改 C.数据只能以码形式存放在文件中,所以可通过文本编辑软件显示 D.文件的组织结构复杂 答案:C 6.语句在语言中的功能是()。 A.清内存 B.清病毒 C.删除在磁盘上的文件 D.清屏幕
答案:C 7.可用来改变坐标度量单位的是()。 A.属性 B.属性 C.属性 D.属性 答案:D 8.以下的属性和方法中,可重定义坐标系的是()。 A.属性 B.属性 C.属性 D.属 答案:B 9当使用方法画直线后,当前坐标在()。 A.(0,0) B.直线起点 C.直线终点 D.容器的中心 答案:A 10.(200,200)—(500,500)将在窗体()画一直线。A.(200,200)到(500,500) B.(200,200)到(300,300) C.(200,200)到(700,700) D.(300,300)到(500,500) 答案:C 11.设置对象的边框类型的属性是()。 A. B. C. D. 答案:B 12.为了清除图片框1中的图形,应采用的正确方法是()。A.选择图片框,然后按键 B.执行语句1 (“”) C.执行语句1”” D.选择图片框,在窗口属性中选择属性条,然后按回车键 答案:B 13.要绘制多种形状的图形,需要设置控件的()属性。A. B. C.