vb编程实例 vb程序设计实例
朋友们,vb编程实例和vb程序设计实例是当今热门话题,但是它们的内涵和影响力可能会让人感到困惑。在本篇文章中,我将为你们揭示它们的本质和重要性,希望能够为你们带来新的认识。
vb中如何实现对象实例化
普通变量赋值,使用Let关键字,通常Let需要省略。比如:
Dim i as Integer
Let i= 100
通常Let需要省略,所以上面语句会写作: i= 100
而对象变量赋值,必须显示的使用Set关键字,而且不准省略,比如:
Dim lblinf as Label'定义一个标签对象lblinf
Set lblinf= Form1.Label1'给lblinf变量赋值为Form1窗体的Label1对象
Let lblinf.Caption="Label1被赋值了!"'Let通常省略
实际上Let是已经被丢弃的一个关键字,这里我给你提一下这个关键字,这样你就能很清楚的记得这两个关键字了,而在vb.Net中,连Set这个关键字也舍弃了。所有赋值语句,都直接写,左边是要赋值的变量或者对象,右边是要赋的值、表达式或者对象!
vb中的常量申明一些实例不懂、、
hWnd:窗口句柄。 hWndlnsertAfter:在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄,或下列值之一: HWND_BOTTOM:将窗口置于Z序的底部。如果参数hWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在其他窗口的底部。 HWND_NOTOPMOST:将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。如果窗口已经是非顶层窗口则该标志不起作用。 HWND_TOP:将窗口置于Z序的顶部。 HWND_TOPMOST:将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置。查看该参数的使用方法,请看说明部分。 x:以客户坐标指定窗口新位置的左边界。 Y:以客户坐标指定窗口新位置的顶边界。 cx:以像素指定窗口的新的宽度。 cy:以像素指定窗口的新的高度。 uFlags:窗口尺寸和定位的标志。该参数可以是下列值的组合: SWP_ASNCWINDOWPOS:如果调用进程不拥有窗口,系统会向拥有窗口的线程发出需求。这就防止调用线程在其他线程处理需求的时候发生死锁。 SWP_DEFERERASE:防止产生WM_SYNCPAINT消息。 SWP_DRAWFRAME:在窗口周围画一个边框(定义在窗口类描述中)。 SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送该消息。如果未指定这个标志,只有在改变了窗口尺寸时才发送WM_NCCALCSIZE。 SWP_HIDEWINDOW;隐藏窗口。 SWP_NOACTIVATE:不激活窗口。如果未设置标志,则窗口被激活,并被设置到其他最高级窗口或非最高级组的顶部(根据参数hWndlnsertAfter设置)。 SWP_NOCOPYBITS:清除客户区的所有内容。如果未设置该标志,客户区的有效内容被保存并且在窗口尺寸更新和重定位后拷贝回客户区。 SWP_NOMOVE:维持当前位置(忽略X和Y参数)。 SWP_NOOWNERZORDER:不改变z序中的所有者窗口的位置。 SWP_NOREDRAW:不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。适用于客户区和非客户区(包括标题栏和滚动条)和任何由于窗回移动而露出的父窗口的所有部分。如果设置了这个标志,应用程序必须明确地使窗口无效并区重画窗口的任何部分和父窗口需要重画的部分。 SWP_NOREPOSITION;与SWP_NOOWNERZORDER标志相同。 SWP_NOSENDCHANGING:防止窗口接收WM_WINDOWPOSCHANGING消息。 SWP_NOSIZE:维持当前尺寸(忽略cx和Cy参数)。 SWP_NOZORDER:维持当前Z序(忽略hWndlnsertAfter参数)。 SWP_SHOWWINDOW:显示窗口。返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误消息,请调用GetLastError函数。
vb串口通信程序实例
我也是自己摸索开发出来的每一款VBtoCOM通讯,有具体的思路如下:
给你推荐一个工具“com串口测试工具 ComTone V1.0中文绿色版”
1、打开你的噪音计的测试软件,调整好串口号、通讯频率等等,我用温度计举例说明。
开始查询后有返回数值,这个Receive:就是返回的数值000304012200004b05,
打开串口监视精灵,监视软件的com口事件:
这里面的Write是测试软件发出的查询指令,read是设备返回的数据指令
PrivateSubCommand1_Click()'发送指令
IfNotMSComm1.PortOpenThen
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'置为发送状态
EndIf
Dimpu()AsByte
DimstrdataAsString
Dimcrc_js()AsByte
ReDimpu(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'转为接收状态
EndSub
PrivateSubCommand2_Click()
Timer1.Enabled=False
EndSub
PrivateSubForm_Unload(CancelAsInteger)
IfMSComm1.PortOpenThen
MSComm1.PortOpen=False'关闭串口
EndIf
Timer1.Enabled=False
EndSub
PrivateSubMSComm1_OnComm()'COM事件
DimPA()AsByte
DimPBAsString
SelectCaseMSComm1.CommEvent
CasecomEvReceive
MSComm1.InputLen=0'读取接收缓冲区的所有字符
PB=MSComm1.Input
PA()=PB
Fori=0ToUBound(PA())
'Print"PA("&i&")";PA(i)
IfLen(Hex(PA(i)))=1Then
strdata=strdata&"0"&Hex(PA(i))
Else
strdata=strdata&Hex(PA(i))
EndIf
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'关闭串口
EndSelect
EndSub
PrivateSubTimer1_Timer()
CallCommand1_Click
EndSub
这是我的测试结果。
下面是通讯协议
这个是我的软件用检测精灵检测的结果
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
非常感谢您的阅读!我们希望本文对于解决您关于vb编程实例的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。