vb编程实例,vb编程实例速成150例

http://www.itjxue.com  2023-01-23 07:09  来源:未知  点击次数: 

vb编程实例

下面的代码是利用三边计算三角形面积

Private Sub Command1_Click()

a=val(text1.text)

b=val(text2.text)

c=val(text3.text)

p=(a+b+c)/2

s=sqr(p*(p-a)*(p-b)*(p-c))

if a+bc and b+ca and a+cb then

text4.text="三角形的面积是:" s

else

text4.text="不能构成三角形"

end if

end sub

下面是计算两数之和的代码

private sub command1_click()

a=val(text1.text)

b=val(text2.text)

text3.text=a+b

end sub

vb串口通信程序实例

我也是自己摸索开发出来的每一款VBtoCOM通讯,有具体的思路如下:

给你推荐一个工具“com串口测试工具 ComTone V1.0 中文绿色版”

1、打开你的噪音计的测试软件,调整好串口号、通讯频率等等,我用温度计举例说明。

开始查询后有返回数值,这个Receive:就是返回的数值000304012200004b05,

打开串口监视精灵,监视软件的com口事件:

这里面的Write是测试软件发出的查询指令,read是设备返回的数据指令

Private?Sub?Command1_Click()?'发送指令

If?Not?MSComm1.PortOpen?Then

??MSComm1.CommPort?=?7?'串口为7

??MSComm1.Settings?=?"9600,n,8,1"

??MSComm1.InBufferCount?=?0?'清除接收缓冲区

??MSComm1.OutBufferCount?=?0?'清除发送缓冲区

??MSComm1.InputMode?=?comInputModeBinary?'二进制接收

??MSComm1.InputLen?=?0?'读取接收缓冲区的所有字符

??MSComm1.PortOpen?=?True??'打开串口

??MSComm1.RTSEnable?=?False?'置为发送状态

End?If

Dim?pu()?As?Byte

Dim?strdata??As?String

Dim?crc_js()?As?Byte

ReDim?pu(7)??'这个数组是8位的查询指令

pu(0)?=?"H00"?'温度计地址

pu(1)?=?"H03"?'查询指令

pu(2)?=?"H00"?'2、3为温度计地址

pu(3)?=?"H00"?'2、3为温度计地址

pu(4)?=?"H00"?'4、5为读取寄存器长度

pu(5)?=?"H02"?'4、5为读取寄存器长度

pu(6)?=?"HC5"?'6、7为CRC校验码?因为我们不知道设备的CRC校验规则所以用测试软件产生的校验码

pu(7)?=?"HDA"?'6、7为CRC校验码

MSComm1.Output?=?pu

'不做任何事情,仅仅允许其它应用程序处理它们的事件。

DoEvents

MSComm1.InBufferCount?=?0?'清除接收缓冲区

MSComm1.RThreshold?=?9?'所要接收的数据长度,我们通过COM检测精灵看到了回传数据一共是9字节

MSComm1.RTSEnable?=?True?'转为接收状态

End?Sub

Private?Sub?Command2_Click()

Timer1.Enabled?=?False

End?Sub

Private?Sub?Form_Unload(Cancel?As?Integer)

????If?MSComm1.PortOpen?Then

????????MSComm1.PortOpen?=?False??'关闭串口

????End?If

????Timer1.Enabled?=?False

End?Sub

Private?Sub?MSComm1_OnComm()?'COM事件

????Dim?PA()?As?Byte

????Dim?PB?As?String

Select?Case?MSComm1.CommEvent

?Case?comEvReceive

????????????MSComm1.InputLen?=?0?'读取接收缓冲区的所有字符

????????????PB?=?MSComm1.Input

????????????PA()?=?PB

????????????For?i?=?0?To?UBound(PA())

????????????????'Print?"PA("??i??")";?PA(i)

????????????????If?Len(Hex(PA(i)))?=?1?Then

????????????????????strdata?=?strdata??"0"??Hex(PA(i))

????????????????Else

????????????????????strdata?=?strdata??Hex(PA(i))

????????????????End?If

????????????Next

????????????'回传的数据串:000304012600000AC4,这9字节根据通讯协议我们进行拆分

????????????'00为协议内回传机号,03为读命令,04为返回的数据长度?0126?为我要的温度数据为十六进制表达,下面我进行数据处理

????????????wd?=?CLng("H"??Left(Right(strdata,?12),?4))?/?10??"℃"???'根据通讯协议换算成温度

????????????Text1?=?Text1??vbCrLf??strdata??"??"??wd

????????????strdata?=?""

???MSComm1.PortOpen?=?False??'关闭串口

?End?Select

End?Sub

Private?Sub?Timer1_Timer()

Call?Command1_Click

End?Sub

这是我的测试结果。

下面是通讯协议

这个是我的软件用检测精灵检测的结果

VB.NET 拖动无边框窗体编程实例

Imports System Drawing Imports System Windows Forms ****************************************** Private oOriginalRegion As Region = Nothing 用于窗体移动 Private bFormDragging As Boolean = False Private oPointClicked As Point ****************************************** Private Sub Form _MouseDown(ByVal sender As Object ByVal e As System Windows Forms MouseEventArgs) Handles MyBase MouseDown Me bFormDragging = True Me oPointClicked = New Point(e X e Y) End Sub ****************************************** Private Sub Form _MouseUp(ByVal sender As Object ByVal e As System Windows Forms MouseEventArgs) Handles MyBase MouseUp Me bFormDragging = False End Sub ****************************************** Private Sub Form _MouseMove(ByVal sender As Object ByVal e As System Windows Forms MouseEventArgs) Handles MyBase MouseMove If Me bFormDragging Then Dim oMoveToPoint As Point 以当前鼠标位置为基础 找出目标位置 oMoveToPoint = Me PointToScreen(New Point(e X e Y)) 根据开始位置作出调整 oMoveToPoint Offset(Me oPointClicked X * _ (Me oPointClicked Y + _ SystemInformation CaptionHeight + _ SystemInformation BorderSize Height) * ) 移动窗体 Me Location = oMoveToPoint End If

lishixinzhi/Article/program/ASP/201311/21755

VB编程实例

哦,你要多大的程序???

'初学vb的经典入门程序如下

'画三个文本框,text属性设为空

'画四command按钮,capition属性分别设为“+”“-”“*”“/”

'把以下代码复制到代码窗口,运行,为text1,text2输入数字,任意点击一个按钮看看

Private

Sub

Command1_Click()'这个叫click事件,用于鼠标单击时响应

Text3.Text

=

Val(Text1.Text)

+

Val(Text2.Text)

'command1("+")被点时运行这里

End

Sub

Private

Sub

Command2_Click()

Text3.Text供海垛剿艹济讹汐番搂

=

Val(Text1.Text)

-

Val(Text2.Text)

'(-)被点时运行这里

End

Sub

Private

Sub

Command3_Click()

Text3.Text

=

Val(Text1.Text)

*

Val(Text2.Text)

'command3("*")被点时运行这里

End

Sub

Private

Sub

Command4_Click()

Text3.Text

=

Val(Text1.Text)

/

Val(Text2.Text)

'command4("/")被点时运行这里

End

Sub

vb 例子

1..

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 ' 建立 10 次循环。

For Chars = 0 To 9 ' 建立 10 次循环。

MyString = MyString Chars ' 将数字添加到字符串中。

Next Chars ' Increment counter

MyString = MyString " " ' 添加一个空格。

Next Words

2.

Do...Loop 语句示例

本示例示范如何使用 Do...Loop 语句。内层的 Do...Loop 语句循环到第 10 次时将标志值设置为 False,并用 Exit Do 语句强制退出内层循环。外层循环则在检查到标志值为 False 时,马上退出。

Dim Check, Counter

Check = True: Counter = 0 ' 设置变量初始值。

Do ' 外层循环。

Do While Counter 20 ' 内层循环。

Counter = Counter + 1 ' 计数器加一。

If Counter = 10 Then ' 如果条件成立。

Check = False ' 将标志值设成 False。

Exit Do ' 退出内层循环。

End If

Loop

Loop Until Check = False ' 退出外层循环。

3.

While...Wend 语句示例

本示例使用 While...Wend 语句来增加计数变量的值。如果条件判断值为 True,则循环内的语句将一直执行下去。

Dim Counter

Counter = 0 ' 设置变量初值。

While Counter 20 ' 测试计数器的值。

Counter = Counter + 1 ' 将计数器的值加一。

Wend ' 当 Counter 19 时则循环终止。

Debug.Print Counter ' 在“立即”窗口中显示数字 20。

Select Case 语句示例

本示例使用 Select Case 语句来判断变量的值。示例中第二个 Case 子句包含了变量值,故只有此区块内的语句会被完成到。

Dim Number

Number = 8 ' 设置变量初值。

Select Case Number ' 判断 Number 的值。

Case 1 To 5 ' Number 的值在 1 到 5 之间,包含1 和 5 。

Debug.Print "Between 1 and 5"

' 下一个 Case 子句是本示例中唯一判断值为 True 的子句。

Case 6, 7, 8 ' Number 的值在 6 到 8 之间。

Debug.Print "Between 6 and 8"

Case 9 到 10 ' Number 的值为 9 或 10。

Debug.Print "Greater than 8"

Case Else ' 其他数值。

Debug.Print "Not between 1 and 10"

End Select

vb程序设计实例

Private Sub Form_Activate()

'1年期2.25%,2年期2.43%,3年期为2.70%,5年期为2.88%(不记复利)。今有X元,5年以后使用,共有如下6中存法:

Const x1 As Double = 0.0225, x2 As Double = 0.0243, x3 As Double = 0.027, x5 As Double = 0.0288

Dim x As Double

x = Val(InputBox(""))

Print "①存一次5年期,5年后到期的本息合计"; ss(x, 5, x5)

Print "②存一次3年期,一次2年期,5年后到期的本息合计"; ss(ss(x, 3, x3), 2, x2)

Print "③存一次3年期,两次1年期,5年后到期的本息合计"; ss(ss(ss(x, 3, x3), 1, x1), 1, x1)

Print "④存两次2年期,一次1年期,5年后到期的本息合计"; ss(ss(ss(x, 2, x2), 2, x2), 1, x1)

Print "⑤存一次2年期,三次1年期,5年后到期的本息合计"; ss(ss(ss(ss(x, 2, x2), 1, x1), 1, x1), 1, x1)

Print "⑥存五次1年期,5年后到期的本息合计"; ss(ss(ss(ss(ss(x, 1, x1), 1, x1), 1, x1), 1, x1), 1, x1)

End Sub

Private Function ss(ByVal a As Double, b As Integer, c As Double) As Double

ss = a + a * c * b

End Function

Private Sub Form_Load()

AutoRedraw = True

End Sub

(责任编辑:IT教学网)

更多

推荐Frontpage教程文章