文档库 最新最全的文档下载
当前位置:文档库 › VB并口操作

VB并口操作

VB并口操作
VB并口操作

sky65530

2005-11-22 09:02

我现在在XP系统下通过WINIO操作并口跟下位机通讯,我们之间有时序要求,比如读BUSY(11脚)为低(反相后)时将ENB脚置低(14脚,反相后)然后向数

据端口写数据(8位一个字节数据,采用数据线)。但是传输速度特别慢,4KB

数据需要3秒,50多K需要三十多秒,而且数据还不能保证正确,为什么会这样?下位机在读数据端口之前需要延时一段时间,否则就读不到正确数据,一定要延时吗?

希望哪位高手给予指点,不胜感激!

xhs1115

2005-11-22 09:04

希望一起讨论

能说得详细点么,有必要的话把程序发上来行么.

我写过一个在vc下通过并口控制16x2液晶的程序,希望能和你一起讨论一下。你说的winIo是一个驱动吧,我用的也是这个。并口的control是双向的,在使用之前需要设置一下。另外有的控制端口需要外接上拉电阻。延迟这个东西最好用示波器看一下来确定。

梦想成真

2005-11-22 09:12

WINIO操作并口本来就慢或者说XP下面操作并口本来就慢吗?

是啊,控制端口用来告诉下位机我是否忙,状态端口用来检查下位机是否处于忙状态,也就是时序配合了,时序方面的配合好像没什么问题,就是下位机读数据时延迟少了就不行,这样导致整个传输速度很慢。你用并口控制液晶显示器的数据量有多少?我现在传输的速度也就1K左右,我希望达到10K以上才行。

程序是用VB做的一个小测试程序,很简单,主要就是读写端口操作,因为您是用VC的,所以不知道您是否能看明白,我大概写一下主要语句吧。

//SetPortVal(端口地址,要发送的数据,数据长度)--写端口

//GetPortVal(端口地址,存放读取数据地址,数据长度)--读端口

//读下位机状态不为BUSY时运行

for i=0 to 4096 //发送数据循环

SetPortVal &H378,data(i),1 //向数据端口发送一字节数据data(i) setPortVal &H379,2,1 //将ENB脚置低,告诉下位机已发送数据

//读BUSY脚,看下位机是否在处理数据

READ_BUSY //子程序

//读BUSY脚,看下位机是否准备好接收数据

//READ_NBUSY //子程序

next i

zlg900

2005-11-22 09:26

我测试了一下,还是比较快的。0X379是状态寄存器的地址,是不是写错了?

sinhwa

2005-11-22 09:27

是通过状态寄存器去读下位机的状态啊

时序是有来回的,我需要经常通过状态端口读下位机状态,下位机通过控制端口读上位机状态。

kanprin

2005-11-22 09:28

winio的效率

照你的程序来看,使用了winio.dll 在一个线程中查询端口状态以及读写数据吧。

1)winio不支持并口的中断传输,你只能通过poll 发式读写数据。

2) windows xp是一个多任务操作系统,你的并口读写程序和其他程序一起运行,windows xp在内部进行进程切换调度,所以不是100% cpu时间被你的并口占用。

3)另外,使用winio.dll,你必须在每次wm_timer消息发生时判断并口状态,读写数据(使用vc++的人比较明白),wm_timer消息使用系统定时器的单位为ms,也就是,理论上,使用winio.dll最快的速度下,每1ms的间隔windowxp才切换到你的

并口程序。也就是 8kbit*1ms,每秒1KByte左右。

4)你可以在一个进程中开两个线程,主线程负责界面,工作线程在背后一直查询并口状态,这样可以使cpu利用效率最高。

(目前我的程序这样工作的,用masm写的)

5)如果需要window xp立即响应并口数据传输消息,需要自定义并口驱动

,你可以参考微软的wdm ,或者FOUR-F KMD 教程。

WINDOWS2000下的VB6直接端口读写操作 --- WINIO

宋永强中海油田服务股份有限公司(北京232信箱101149)

WINACQ.DLL及

WINACQ16.DLL在WINDOWS9X下为VB3编写直接端口操作类的数据采集软件提供了非常便利的条件,它不仅能准确的读入外部端口的数据,还可以向外部端口发送数据、实时读入键盘状态、实时打印列表输出等。由于其简单易用的特性,它不仅被广泛应用于数字DIO板、数字计数板、AD及DA转换板在VB3下的直接驱动,还被应用于并口和串口IO的实现。VB6在VB3下进行大规模的改进,从16位平台提升到32位平台。DAQCHINA随后将WINACQ.DLL提升至WINACQ32.DLL,满足了VB6用户在WIN9X下对端口采集的需求。无论是WINACQ,WINACQ16还是WINACQ32,均可以在WIN9X平台下使用,但它们不能在WINDOWS2000下使用。本文将为热衷于VB6编程的开发人员提供在WINDOWS2000下直接端口操作的方法。

其实有许多热心的好事者开发了WINDOWS2000下直接端口操作的驱动程序,有相当一部分是共享软件,有极少数是处于测试目的免费软件。在网上查一下你就会找到 NTPORT、MEMACCESS、PORTTALK、ALLOWIO、IOPORT、PORTIO、PORTZ、SMPORT、WINDAQ、IOVBX、IOOCX、GENPORT等用于直接IO操作的驱动,但我今天要告诉大家的是一个全免费的、无需注册的、含源程序的WINDOWS2000端口操作驱动程序WINIO。它不仅可以操作端口,还可以操作内存;不仅能在VB下用,还可以在DELPHI、VC等其它环境下使用,性能特别优异。既使是不想使用它,至少也可以提取其中的精华与自己的程序相熔合完成更优秀的软件开发。

下载地址:

WINACQ https://www.wendangku.net/doc/8816257207.html,/daqchina/download/winacq.zip WINACQ16 https://www.wendangku.net/doc/8816257207.html,/daqchina/download/winacq16.zip WINACQ32 https://www.wendangku.net/doc/8816257207.html,/daqchina/download/winacq32.zip WINIO https://www.wendangku.net/doc/8816257207.html,/daqchina/download/winio.zip

需要指出的是,WINACQ、WINACQ16、WINACQ32是DAQCHINA的免费驱动(含源程序)。WINIO是YARIV KAPLAN先生的作品,该先生的详细情况请到他的站点https://www.wendangku.net/doc/8816257207.html,了解,里面披露有许多WINDOWS不为人知的内幕。

当你得到WINIO程序包后,首先是把它解压到一个你认为合适的文件夹下面,一旦解压成功则会出现下面的四个子文件夹;

不用细说你也看的明白,Examples中放的是VB和VC的样例程序,Help中放的是CHM格式的帮助文档,Release中放的是版本的变更情况,Source中放的是WINIO的源程序。WINIO的编译程序在Source和每个Examples文件夹下面均保留了一份,其原因是WINIO是一个绿色环保软件,它不需要向注册表中添加任何信息,只要你把WINIO.VXD、WINIO.SYS、WINIO.DLL放在你的应用程序所在的文件夹下就可以了。当然了,它们也可以放到WINNT或WINNT\SYSTEM32下面,但这样做并不是件好事,因为很可能有人写的驱动程序也叫WINIO而互相覆盖影响。本文只讲最简单的例程,复杂的由读者自己完成,或叫YARIV KAPLAN领进门,修行基本靠个人吧。

双击Examples后会出现VC和VB两个文件夹,双击VB文件夹后会出现VBDumpPhys32和VBDumpPort32两个文件夹。前者放的是内存操作样例,后者存放的是端口操作样例,当然要双击后者了。

上面给出了VBDumpPort32下面存放的文件名。除WINIO.DLL、WINIO.SYS、WINIO.VXD驱动外,其它均为VB6要用的文件。如果你的系统中安装了VB6,直接双击VBDumpPort32.Vbp就可直接进入编程环境并打开此VB工程。实际上,VB6程序只和WINIO.DLL进行数据交换,WINIOI.DLL负责与WINIO.SYS或WINIO.VXD 打交道。尽管对VB6编程而言,好像是在直接操作端口,但实际上所有的请求都是通过底层驱动完成的。

下面是WINIO.BAS中对函数的定义,你无需修改它。

Attribute VB_Name = "Module1"

Option Explicit

Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long

Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal

LinAddr) As Boolean

Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean

Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean

Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean

Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean

Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean

Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean

Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean

Declare Function RemoveWinIoDriver Lib "WinIo.dll" () As Boolean

你可以直接引用WINIO.BAS到你的工程中。编写程序的方法是:

1.在FORM_LOAD中首先判断InitializeWinIo是True还是False,它必须是

True,否则后继所有与WINIO相关的操作均不能进行。

2.在FORM_UNLOAD中执行ShutdownWinIo,将其关闭。

一旦InitializeWinIo操作成功,在你的程序中就可以使用GetPortVal读外部端口状态,用SetPortVal设置外部端口状态,与WINACQ中的FETDATA和OUTDATA 使用基本相同。详细情况我就不多说了,看一下VBDumpPort32样例程序就知道了。

读端口是这样的:Result = GetPortVal(Val("&H" + TxtPortAddr), PortVal, 1) 写端口也很简单:Result = SetPortVal(Val("&H" + TxtPortAddr), Val("&H" + TxtPortByte), 1)

重要提示:

VBDumpPort32样例程序在DESIGN方式下调试运行一定会出现Wooops,告诉你不能初始化WINIO,如果你在此处退缩了,一定是激情而来扫兴而去,可能永远也不会使用WINIO了。其实并不然,你把它编译了,运行生成的EXE文件,就什么事都没有了。尽管不十全十美,但编译后的软件还是满爽的,不掏银子的驱动能解决问题还是很不错的。

Windows API: Sleep

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) e.g,

Sleep 1000'1 秒

?GetTickCount()(404字)masufang博云天[15次]2005-8-3 10:20:31 Declare Function GetTickCount Lib "kernel32" () As Long ?Sub TimeDelay(t As Long)

? Dim TT&

? TT = GetTickCount()

? Do

? DoEvents

? Loop Until GetTickCount - TT >= t

End Sub

VBProject代码操作代码之常用语句

一、增加模块 1.增加一个模块,命名为“我的模块” ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name = "我的模块" 系统常量vbext_ct_StdModule=1 2.增加一个类模块,命名为“我的类” ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_ClassModule).Name = "我的类" vbext_ct_ClassModule=2 3.增加一个窗体,命名为“我的窗体” ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Name = "我的窗体" vbext_ct_MSForm=3 二、删除模块 1.删除“模块1” ThisWorkbook.VBProject.VBComponents.Remove hisWorkbook.VBProject.VBComponents("模块1") 2.删除窗体“UserForm1” ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("UserForm1") 3.删除类模块“类1” ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("类1") 4.删除所有的窗体 Sub RmvForms() Dim vbCmp As VBComponent For Each vbCmp In ThisWorkbook.VBProject.VBComponents If vbCmp.Type = vbext_ct_MSForm Then ThisWorkbook.VBProject.VBComponents.Remove vbCmp Next vbCmp End Sub 相关: 工作表和ThisWorkbook的模块类型为vbext_ct_Document=100 三、增加代码 1.在“模块1”中插入代码 如果需要在“Sheet1”、“Thisworkbook”、或“Userform1”中操作,用只需将下面的“模块1”换成相应的名称即可。 方法1: 在模块的开始增加代码,增加的代码放在公共声明option,全局变量等后面。 Sub AddCode1() ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.AddFromString _ "sub aTest()" & Chr(10) & _ "msgbox ""Hello""" & Chr(10) & _ "end sub" End Sub

VB SQL编程基础教程

https://www.wendangku.net/doc/8816257207.html,数据库编程基础教程 罗珊 众所周知,https://www.wendangku.net/doc/8816257207.html,自身并不具备对数据库进行操作的功能,它对数据库 的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的。其中,https://www.wendangku.net/doc/8816257207.html,又是.NET FrameWork SDK中重要的 组成部分。要了解https://www.wendangku.net/doc/8816257207.html,的数据库编程,首先要明白https://www.wendangku.net/doc/8816257207.html,的工作原理以及相关的对象、方法、属性。本文将结合具体实例为你简单介绍https://www.wendangku.net/doc/8816257207.html,数据库访问对象以及https://www.wendangku.net/doc/8816257207.html,数据库编程基本方法。 一、https://www.wendangku.net/doc/8816257207.html,数据库访问对象 (一)https://www.wendangku.net/doc/8816257207.html,简介 https://www.wendangku.net/doc/8816257207.html,是由微软Microsoft ActiveX Data Object(ADO)升级发展而来的。是在.NET中创建分布式数据共享程序的开发接口。https://www.wendangku.net/doc/8816257207.html,的数据存取API提供两种数据访问方式,分别用来识别并处理两种类型的数据源,即SQL Server7.0(及更高的版本)和可以通过OLE DB进行访问的其他数据源。为此https://www.wendangku.net/doc/8816257207.html,中包含了两个类库,System.Data.SQL库可以直接连接到SQL Server的数据,System.Data.ADO库可以用于其他通过OLE DB进行访问的数据源。如Access数据。 (二)https://www.wendangku.net/doc/8816257207.html,的名称空间

https://www.wendangku.net/doc/8816257207.html,是围绕System.Data基本名称空间设计,其他名称空间都是从System.Data派生而来。它们使得https://www.wendangku.net/doc/8816257207.html,不仅访问DataBase中的数据,而且可以访问支持OLE DB的数据源。 当我们讨论https://www.wendangku.net/doc/8816257207.html,时,实际讨论的是System.Data和System.Data.OleDb 名称空间。这两个空间的所有类几乎都可以支持所有类型的数据源中的数据。这里我们讨论与后文实例有关的类。即OleDbconnection、OleDbDataAdapter、DataSet和DataView。 上面列举的类中没有OleDb前缀的,派生自System.Data空间,有此前缀的派生自System.Data.OleDb空间。在使用中,如果要引用OleDb前缀的类,必须导入System.Data.OleDb名称空间。语法如下: Imports System.Data.OleDb 使用没有此前缀的类必须导入System.Data名称空间。语法如下:Imports System.Data 1.OleDbConnection类 OleDbConnection类提供了一个数据源连接。这个类的构造函数接受一个可选参数,称为连接字符串。 (1)连接字符串: 连接字符串本身由下表中列出的参数构成。(图) 我们来看一下如何在连接字符串上使用参数来初始化一个连接对象。

VB常用字符串操作函数解读

VB常用字符串操作函数2009/11/25 18:321. ASC(X,Chr(X:转换字符字符码[格式]: P=Asc(X 返回字符串X的第一个字符的字符码 P=Chr(X 返回字符码等于X的字符 [范例]:(1P=Chr(65 ‘ 输出字符A,因为A的ASCII码等于65 (2P=Asc(“A” ‘ 输出65 2. Len(X:计算字符串X的长度 [格式]: P=Len(X [说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算 一个字符。 [范例]: (1 令X=”” (空字符串 Len(X 输出结果为0 (2 令X=”abcd” Len(X 输出结果为4 (3 令X=”VB教程” Len(X 输出结果为4 3. Mid(X函数:读取字符串X中间的字符 [格式]: P=Mid(X,n 由X的第n个字符读起,读取后面的所有字符。 P=Mid(X,n,m 由X的第n个字符读起,读取后面的m个字符。 [范例]: (1 X=”abcdefg” P=Mid(X,5 结果为:P=”efg” (2 X=”abcdefg” P=Mid(X,2,4 结果为 P=”bcde” 4. R eplace: 将字符串中的某些特定字符串替换为其他字符串 [格式]: P=Replace(X,S,R [说明]:将字符串X中的字符串S替换为字符串R,然后返回。[范例]:X=”VB is very good” P=Replace(X,good,nice 输出结果为:P=”VB is very nice” 5. StrReverse:反转字符串 [格式]: P=StrReverse(X [说明]:返回X参数反转后的字符串 [范例]:(1)X=”abc” P=StrReverse(X 输出结果:P=”cba” 6. Ucase(X,Lcase(X:转换英文字母的大小写 [格式]:P=Lcase(X ‘ 将X字符串中的大写字母转换成小写P=Ucase(X ‘ 将X字符串中的小写字母转换成大写 [说明]:除了英文字母外,其他字符或中文字都不会受到影响。 [范例]:(1)令X=”VB and VC” 则Lcase(X的结果为”vb and vc”,Ucase(X的结果为”VB AND VC” 7. InStr函数:寻找字符串 [格式]: P=InStr(X,Y 从X第一个字符起找出Y出现的位置 P=InStr(n,X,Y 从X第n个字符起找出Y出现的位置 [说明]:(1)若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。(2) InStr(X,Y相当于 InStr(1,X,Y。(3)若字符串长度,或X为空字符串,或在X中找不到Y,则都 返回0。(4)若Y为空字符串,则返回0。 ---------------------------------------------------------------------------------------------- mid(字符串,从第几个开始,长度 ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如 mid("小欣无敌",1,3 则返回 "小欣无" instr(从第几个开始,字符串1,字符串2 ByVal 从规定的位置开始查找,返回字符

vb连接ACCESS数据库实例

vb连接ACCESS数据库实例 下面给你一个用ADO的代码链接的实例:(ACCESS 2003) 首先在工程中点击【工程】-【引用】,在打开的对话框选择Microsoft AxtiveX Data Objects 2.8 Library 勾选,然后定义二个对象: Dim conn As New ADODB.Connection, rs As New ADODB.Recordset 其中conn是数据库链接对象,rs是数据记录集对象 那么,下面就是利用SQL语句链接数据库了: conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\library\1.mdb;Jet OLEDB:Database Password=" strSQL = "SELECT * FROM 数据库中的表" rs.Open strSQL, conn, 3, 3 至此数据库已经链接成功,并且已经加载了记录集,下面你就可以进行数据操作了,注意,在数据库操作完成后,千万别忘记关闭记录集和数据库链接对象: rs.Close conn.Close '首先,工具->引用->选中Microsoft ActiveX Data Objects 2.X Library '必须选中,否则下面代码不会起作用!(以下链接数据库之方式,不需要使用ADODB控件,仅需代码即可) Public Conn As New ADODB.Connection Public Rs As New ADODB.Recordset Public Cnt As Integer '这个Cnt是用来表示数据库数据总量的,对链接过程无关 '连接数据库的代码段 Conn.CursorLocation = adUseClient '以Conn为链接名建立链接,这里是设置数据游标(客户端数据游标),即设定读取数据库数据之方式(一行一行地读) Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\test.mdb" '自己改动一下上面的路径和文件名即可,其他的代码你不理解照粘贴无妨 If Rs.State <> adStateClosed Then Rs.Close Rs.Open "SELECT 铺名, 上月读数, 本月读数, 实用度数, 铺位数, 首层面积, 非经营层 面积, 欠费明细, 欠费金额FROM data WHERE 首层面积is not null and 非经营层面积 is not null;", Conn, adOpenKeyset, adLockPessimistic Cnt = Rs.RecordCount '关闭数据库链接(一般放到子过程结束处,关闭数据库链接) Rs.Close Conn.Close Set Rs = Nothing

vb程序设计的几个简单例子

Option Explicit Private Sub Command1_Click() Dim i%, j%, r! i = Val(Text1.Text) j = Val(Text2.Text) Picture1.Print i; j; Call gysh(i, j) Picture1.Print "最大公约数是" & i r = Val(InputBox("输入半径")) Call S(r) End Sub Public Function gysh(m As Integer, n As Integer) As Integer Dim t% Do t = m Mod n: m = n: n = t Loop While t <> 0 End Function Public function S(r!) Const pi = 3.1415926 S = pi * r ^ 2 MsgBox "圆面积为:" & S End function Public Function 定积分() End Function

Dim a() As Integer, i%, j%, n%, t% Private Sub Command1_Click() Picture1.Print "排序前的数组为:" n = V al(InputBox("请输入一个3到100的整数")) ReDim a(1 To n) Randomize For i = 1 To n a(i) = Int(Rnd * 100) + 1 Picture1.Print Tab(((i - 1) Mod 5) * 6); a(i); Next i End Sub Private Sub Command2_Click() Picture1.Print Picture1.Print "排序后的数组为:" For i = 1 To n - 1 For j = i + 1 To n If a(i) > a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next Next For i = 1 To n Picture1.Print Tab(((i - 1) Mod 5) * 6); a(i); Next End Sub

VB读写ini文件

VB读写ini文件(1) 2007-06-20 11:32 自从注册表诞生以来ini文件正在逐渐失去其市场占有率,然而基于ini文件的独立性,致使其还没有到达退出历史舞台的地步,很多应用程序的初始化和一些界面参数的设置仍然很愿意从ini文件中读取,为了保证操作需用参数对ini文件的读取的通明性,建议使用一个模块来完成此工作。注:所有操作调用标准的Win API函数来完成。 Dim Ret As Long Dim Start As Long Public FileName As String Const BufSize = 10240 Dim buf As String * BufSize Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Public Sub SetValue(ByVal clsName As String, ByVal key As String, ByVal V As String) Ret = WritePrivateProfileString(clsName, key, V, FileName) End Sub Public Function GetValue(ByVal clsName As String, ByVal key As String) As String Ret = GetPrivateProfileString(clsName, key, "", buf, BufSize, FileName) Start = 1 GetValue = RetStr() End Function Private Function RetStr() As String Dim i As Long i = InStr(Start, buf, Chr(0)) If i > Start Then RetStr = Mid(buf, Start, i - Start) End If Start = i + 1 End Function 至此已经完成了对一个完整的独立模块的封装,接下来就来看看怎么引用(其实看完上面程序就明了了) VB读写INI文件(2) 2007-06-20 11:32 INI 文件是什么样子?——不会吧,这都不知道。INI 文件就是 Windows 中常见的以 .ini 为扩展名的文件,其内部格式和各部分的名称如下: [Section1] Key1=Value1

VB基本操作题

基本操作题,请根据以下各小题的要求设计Visual Basic应用程序(包括界面和代码) 1、(1)在名为Form1的窗体上绘制两个标签(名称分别为Label1和Label2,标题分别为“长”和“宽”)、两个文本框(名称分别为Text1和Text2,Text属性均为空白)和一个命令按钮(名称为Command1,标题为“输入”)。编写命令按钮的Click事件过程,使程序运行后,若单击命令按钮,则先后显示两个“输入”对话框,在两个“输入”对话框中分别输入长和宽,并分别在两个文本框中显示出来,运行后的窗体如图21-1所示。 注意:程序中不得使用任何变量;文件必须存放在考生文件夹中,工程文件名为sj1.vbp,窗体文件名为sj1.frm。 (2)在名为Form1的窗体上绘制一个标签(名称为Label1,标题为“输入”)、一个文本框(名称为Text1,Text属性为空白)和一个命令按钮(名称为Command1,标题为“显示”)。请编写命令按钮的Click事件过程,使程序运行后,在文本框中输入内容,然后单击命令按钮,则标签和文本框消失,并在窗体上显示文本框中的内容。运行后的窗体如图21-2和图21-3所示。 注意:要求程序中不得使用任何变量;文件必须存放在考生文件夹中,工程文件名为Sj2.vbp,窗体文件名为sj2.frm。 2、(1)在窗体上添加通用对话框控件并编写适当的程序代码,要求程序运行时,双击窗口,可以弹出“颜色”对话框。程序运行时的窗体界面如图62-1所示。 注意:保存时必须存放在考生文件夹下,窗体文件名为sj1.frm,工程文件名为sj2.vbp。 (2)在窗体上绘制出3个文本框,名称分别为Text1、Text2和Text3。要求程序运行时,焦点

VB使用ADODB操作数据库

VB使用ADODB操作数据库 Dim conn As New ADODB.Connection ’创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行 Dim rs As ADODB.Recordset ’创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用 Dim CnStr As String, Sql As String ’创建两个字符串变量分别存放两个集合的SQL语句代码段 1、装载数据库(不属于Recordset集合) ============= Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$ ’以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码 FileName = App.Path & "\’数据库名’" DbIp = "数据库地址" DbName = "数据库名" DbUser = "数据操作员用户名" DbPw = "操作员密码" ’以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量 ’1)连接Access数据库: ’------------------- CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileNa me & ";Jet OLEDB:Database Password=" & DbPw ’2)连接Oracle数据库: ’------------------- CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data S ource=" & FileName & ";Persist Security Info=True" ’其中: ’PASSWORD:密码 ’User ID: 用户号 ’Data Source: 数据库名 ’Persist Security Info: ’Provider: ’3)连接VF的DBF库: ’---------------- CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPr

VB 操作INI文件方法(经典详细教程)

1.定义一些变量 Public IniFileName As String, vbNullString As String, maxSize As Long, section1 As String, section2 As String 2.初始话这些变量 Public Function initial() IniFileName = App.Path & "" & "config.ini" vbNullString = "" maxSize = 255 section1 = "basics" section2 = "others" temp_str = String(255, 0) '建立缓冲区 End Function 3.声明INI函数 Public Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal nDefault As Long, _ ByVal lpFileName As String) As Long Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpString As Any, _ ByVal lpFileName As String) As Long 4.调用函数 dim source as string

VB+数据库编程之+ADO+连接数据库实例

VB 数据库编程之 ADO 连接数据库实例 这里先说说ADO的ACCESS数据库连接吧,两种。 1.ADO控件连接 “工程”菜单→“部件...”:Microsoft ADO Data Control 6.0 (SP6) (OLEDB) 并将Adodc数据控件绘入窗体。 右击Adodc数据控件→属性→使用连接字符串→生成→Microsoft Jet 4.0 OLE DB Provider→数据位置→找到要连接的ACCESS数据库文件…… Adodc数据控件的RecordSource属性为“2 - adcmdTable”和你要连接的表名。 控件的引用实例如下: '组合框(Combo)控件列表用某字段数据记录填充范例 '在窗体Load事件或Combo的相关事件中写入 '循环1到记录总数 For i = 1 To Adodc1.Recordset.RecordCount '如果不在记录集结尾则 If Not Adodc1.Recordset.EOF Then '组合框增加一行:“姓名”字段的值 Combo1.AddItem Adodc1.Recordset.Fields("姓名").Value '记录指针向后一个 Adodc1.Recordset.Movenext End If Next i 2.ADO代码连接 通用声明 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim cmd As New https://www.wendangku.net/doc/8816257207.html,mand Private Sub Form_Load() '实例化Connection对象 Set cn = New ADODB.Connection cn.CursorLocation = adUseClient cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\personnel.mdb;" 'Recordset对象 Set rs = New ADODB.Recordset rs.Open "职工信息", cn, adOpenDynamic, adLockOptimistic

(完整版)vb连接access数据库及数据读写操作

ACCESS数据库和VB的连接 Edited by Ryan 2013 1、建立Access数据库 2、启动VB,建立标准EXE 图1 3、添加ActiveX控件 鼠标指向任意VB控件,单击右键,选择“部件(O)”,出现图3所示界面 图2

图3 选择部件“Microsoft ADO Data Control 6.0 (OLEDB)”,出现如图4所示控件 图4

4、添加控件Adodc 图5 4、在控件Adodc上添加数据源 鼠标指向控件Adodc1,单击右键,选择“ADODC 属性”,弹出如图7所示界面 图6

图7 单击“生成(U). . .”,弹出如图8所示界面 图8 选择“Microsoft Jet 4.0 OLE DB Provider”,单击“下一步(N) >>”,弹出如图9所示界面

图9 单击“. . .”,添加数据源(第一步所建Access 数据库),如图10所示 图10 单击“测试连接(T)”,出现提示框,如图11所示 图11 之后点击“确定”,退回到如图12所示界面

图12 单击“记录源”,弹出如图13所示界面 图13 在“命令类型”下,选择“1 - adCmdText”,在“命令文本(SQL)”下,输入“Select * from test1”,最后单击“应用”,“确定”即可 之后,进入程序书写部分 程序部分需要注意接头形式及简单例子如下: Private Sub Command1_Click() ‘VB按钮控件 Dim mydb As New ADODB.Connection ‘定义新的数据库连接 mydb.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\read database\test1\test1.mdb" ‘数据库绝对路径 Dim rs As New ADODB.Recordset ‘定义数据库的一个对象 mydb.Open ‘打开数据库 rs.Open "select * from test1", mydb, 3, 3 ‘打开数据库中的表test1

完整word版,VB程序设计例题12例

索引 一、在窗体上画一个文本框,其名称为Text1,Text属性为空白。再画一个命令按钮,其名称为C1,Visible属性为False。编写适当的事件过程。程序运行后,如果在文本框中输入字符,则命令按钮出现。 二、计算圆的周长和面积:在窗体中添加一个文本框(Text1)和一个对应的标签(Label1),再添加两个命令按钮(Command1和Command2)和一个图片框(Picture1)。程序运行时,当单击Command1按钮后,计算圆的周长;当单击Command2按钮后,计算圆的面积;计算结果输出在图片框中。(要求在未输入半径前两个按钮呈灰色不可用。) 三、在窗体上添加三个文本框和对应的三个标签,标签的标题分别是“个位”、“十位”、“百位”。程序运行时,当单击窗体后,随机产生一个【100,999】区间内的整数,将它的个位、十位、百位数字分别显示在对应的文本框中。 四、设计一个计算程序:在窗体上添加四个文本框和四个对应的标签,标签的标题分别是“语文”、“数学”、“外语”、“平均成绩”,三个命令按钮,标题分别为“清除”、“计算”、“退出”。程序运行后,用户按“清除”按钮,则清除文本框中显示的内容,按“计算”按钮,则计算三科平均成绩,将计算结果显示在第四个文本框中(计算结果保留小数点后一位)。单击退出按钮则程序退出。 五、某税务部门征收所得税,规定如下:(1)收入200元以内,免征。(2)收入在200~400元,超过200元的部分纳税3%。(3)收入超过400元的部分,纳税4%。(4)当收入达5000元或超过时,将4%税金改为5%。编程序实现上述操作。 六、给定三角形的三条边的边长,计算三角形的面积。编写程序,首选判断给出的三条边能否构成三角形,如可以构成,则计算并输出该三角形的面积,否则要求重新输入。当输入-1时结束程序。 七、编程求100以内的全部素数。 八、编程打印钻石图案。 九、输出杨辉三角形。 十、有一个数组,包含了10个不同的随机整数(20~90),要求计算出它们的平均值,并输出这个数组中最接近于平均值的数。 十一、在一个窗体上建有包含三个命令按钮的控件数组和一个文体框。编程实现当按下标题不同的命令按钮时,使文体框中文字的字体发生相应的变化。 十二、编程求1000以内的完全数。所谓完全数是指这样的自然数:它的各个约数(不包括该数本身)。如28=1+2+4+7+14就是一个完全数。

vb对文件目录的操作

原文地址:vb2008 文件目录相关作者:esonbest 以下摘自《vb2008开发经验与实战宝典》源码位置c01 '将指定URI数据下载到本地文件Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim MyUri As String = "https://www.wendangku.net/doc/8816257207.html,/mspress/images/banner.gif" Dim MyFileName As String = "banner.gif" Dim MyClient As New https://www.wendangku.net/doc/8816257207.html,.WebClient() MyClient.DownloadFile(MyUri, MyFileName) System.Diagnostics.Process.Start(MyFileName) End Sub Public Class Form1 '判断指定目录是否已经存在 System.IO.Directory.Exists(MyDir1) '获取指定目录的上级目录 Dim MyParentDir = System.IO.Directory.GetParent(MyDir).FullName '获取全路径名的目录信息 Dim MyDirectoryName = System.IO.Path.GetDirectoryName(MyPathName) '获取全路径名的根目录信息 Dim MyPathName = "C:WindowsNotepad.exe" Dim MyRootDirectoryName = System.IO.Path.GetPathRoot(MyPathName) '获取当前工作目录 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

VB6.0基础入门教程

VB最简单入门教程

目录 (提示:按ctrl,并单击鼠标,可以跳到相应页) 1.1 1 我们需要什么 (3) 1.2 2 第二章:事件、属性及数据类型 (3) 1.3 3 第三章:VB语言 (6) 1.4 4-1第四章按钮(一) (12) 1.5 4- 第四章按钮(二) (199) 1.6 5 第五章菜单 (27) 1.7 6-1第六章输入(一) (34) 1.8 6-2第六章输入(二) (42) 1.9 6-3第六章输入(三) (52) 1.10 7第七章输出 (59) 附录 (63) 2.1 VB教程 (63)

1.1 1 我们需要什么 我们需要什么?当我们在一个精彩的游戏世界中游历了一番之后,或是惊叹于某一工具软件的小巧精致之余,多少总会产生些许编程的冲动。编程吗,在以前如果你对电脑还是一个门外汉,那实在是一件可望而不可及的事情。如果运用基于DOS下的编程语言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。 编程是需要天赋的,你必须在大脑中对整个程序有一个清晰的轮廓,一个高效的流程,这并不是每个人都能做到的,你必须思之慎之,这也使编程变成一件最枯燥无味的事情。但在第四代计算机语言(可视化编程)出现后,可以确切的说它开发了人们的更多天赋,并不局限于那些头脑异常清晰的人,每一个人都可以发现自己也可以编出一些从前不敢问津的程序,想象力的充分发挥才是第四代语言的精粹。 Visual Basic(以下简称VB)可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB6.0的研制、测试,这么高的更新率,不外乎说明两个问题:用户对VB的热衷,微软对VB的重视。不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,《帝国时代》之于游戏都是最好的例证。对于VB现在也有一个很强的竞争对手――Delphi,有人把它称作VB杀手,这显然有偏激之处,VB的确有它的不足之处,但Delphi 又何尝不是呢,而且以微软对VB的倾心,VB的功能必然会越来越强大。 VB的诞生 VB的出现可以说是Microsoft Windows的日渐成熟的必然产物。Microsoft Windows为程序员和最终用户提供了一个共同的人机界面。对用户,Windows提供了一个图形鼠标的操作环境,该环境对所有的应用程序都一样;对于程序员,Windows提供了一组预定义工具----称之为Microsoft Windows 的软件开发工具箱(SDK),该工具能使程序员建立一个与Windows界面相同的应用程序,而且,程序员不必关心最终用户的硬件配置情况。在这一开发环境中,程序员唯一困难的是Microsoft SDK提供了六百多个函数和与其一致的事件驱动(event-driven)编程技术。两种新方法的交叉使众多的程序员重新陷入困境,程序员不仅要掌握程序驱动编程技术和六百多个函数的功能,而且还得用C语言描述这些问题。因此一般情况下,程序员首先要掌握C程序设计技术,而后再开始学习SDK。这样的条件下就要求在Microsoft多任务环境下出现一种操作方便,使用简单的新工具----Visual Basic由此诞生。 何为可视 英文Visual的意思是“视觉的”,“可视的Baisc”这个名字可能抽象了点,但实际上它却是最直观的编程方法,之所以叫做“可视”,你只要看到VB的界面就会明白,实际上你无需编程,就可以完成许多步骤。在VB中引入了控件的概念,在Windows中控件的身影无处不在,各种各样的按钮、文本框、无线钮,都是控件的种类,VB把这些控件模式化,并且每个控件都有若干属性用来控制控件的外观,工作方法。这样你就可以象在画板上一样,随意点几下鼠标,一个按钮就完成了,这些在以前的编程语言下是要经过相当复杂的工作的。

VB程序设计例题程序改错程序填空程序设计

'以下程序段用于输出杨辉三角:结果样式如图1 ' Private Sub Form_Click() Const n = 10 Dim arr(n, n) As Integer For I = 1 To n arr(I, I) = 1 '**********SPACE********** 【arr(I, 1) = 1】 Next I For I = 3 To n For j = 2 To I - 1 '**********SPACE********** arr(i, j) =arr(i-1,j-1)+arr(i-1,j) Next j Next I For I = 1 To n For j = 1 To I '**********SPACE********** 【print arr(I,j)】 Next j Print Next I End Sub Option Explicit '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数' 据错误。X、N都是由用户输入。 '------------------------------------------------ '注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:"))

VB_Open_文件操作类函数功能详解

VB Open 文件操作类函数功能详解: 1、Open 文件名[For方式] [Access存取类型] [锁定] AS [#]文件号[Len=记录长度] 功能: 为文件的输入输出分配缓冲区,并确定缓冲区所使用的存取方式 说明: (1)打开方式: 指定文件的输入输出方式,可选,默认是Random。可以是以下值: a、Output:指定顺序输出方式,将覆盖原有内容。 b、Input:指定顺序输入方式。 c、Append:指定顺序输出方式,在文件未尾追加内容。 d、Random:指定随机存取方式,也是默认方式,在Random方式时,如果没有Access子句,则在执行Open语句时,VB将按下列顺序打开文件:读/写、只读、只写。 e、Binary:指定二进制文件。在这种方式下,可以用Get和Put语句对文件中任何字节位置的信息进行读写。在Binary方式中,如果没有Access子句,则打开文件的类型与Random方式相同。 (2)存取类型: 放在关键字Access之后,用来指定访问文件的类型。可以是下列类型之一: a、Read:打开只读文件。 b、Write:打开只写文件。 c、Read Write:打开读写文件。这种类型只对随机文件、二进制文件及用Appe nd方式打开的文件有效。 (3)锁定类型: 该子句只在多用户或多进和环境中使用,用来限制其他用户或其他进程对打开进行读写操作。锁定类型包括: a、默认:如不指定锁定类型,则本进程可以多次打开文件进行读写;在文件打开期间,其他进程不能对该文件执行读写操作。 b、Lock Shared:任何机器上的任何进程都可以对该文件进行读写操作。 c、Lock Read:不允许其他进程读该文件。只在没有其他Read存取类型的进程访问该文件时,才允许这种锁定。 d、Lock Write:不允许其他进程写这个文件。只在没有其他Write存取类型的进程访问该文件时,才允许这种锁定。 e、Lock Read Write:不允许其他进程读写这个文件。 如果不使用lock子句,则默认为Lock Read write。 (4)文件号: 由用户自行指定一个由1~511之间的整数,只要该文件号未被使用就合法;打开文件后,可以用该文件号进行读写等操作。

相关文档