当前位置:编程学习 > VB >>

我写的VB程序 有错误,帮我看看吧


Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000
Private Const SC_CLOSE = &HF060
Function Disabled(ChWnd As Long)
Dim hMenu, hendMenu As Long
Dim c As Long
hMenu = GetSystemMenu(ChWnd, 0)
RemoveMenu hMenu, SC_CLOSE, MF_REMOVE
End Function


Private Sub Command1_Click()
login.Show

End Sub



'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'
'不允许点击关闭窗口
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Private Sub Timer1_Timer()
Label2.Caption = Format(Now, "yyyy年mm月dd日 ")
Label3.Caption = WeekdayName(Weekday(Now)) & Format(Now, " hh:mm:ss")
End Sub
Private Sub Form_Load()
Dim fl As Integer
Dim jy As Integer

   Disabled Me.hwnd
   MSComm1.CommPort = 4                 ' 设置通信端口号为COM3
   MSComm1.Settings = "1200,E,8,1"
   MSComm1.InBufferCount = 0   '清空接收缓冲区
   MSComm1.OutBufferCount = 0   '清空发送缓冲区
If MSComm1.PortOpen = False Then
   MSComm1.PortOpen = True
     End If
Timer2_Timer

End Sub

Private Sub Timer2_Timer()
MSComm1.OutBufferCount = 0 '————————清除发送缓冲区
MSComm1.InBufferCount = 0  '————————清除接收缓冲区
Call send(43, 9C)    这儿也报错了
Timer2.Enabled = False
Timer3.Enabled = True

End Sub
Public Sub send(ByVal fl, ByVal jy)
Dim outstr(13) As Byte
outstr(0) = &H68
outstr(1) = &H88
outstr(2) = &H27
outstr(3) = &H13
outstr(4) = &H1
outstr(5) = &H0
outstr(6) = &H0
outstr(7) = &H68
outstr(8) = &H1
outstr(9) = &H2
outstr(10) = fl
outstr(11) = &HC3
outstr(12) = jy
outstr(13) = &H16
WriteCom1 (outstr)
End Sub
Public Function WriteCom1(ByRef outstr) '-----------往串口里写如数据
   MSComm1.InBufferCount = 0   '清空接收缓冲区
   MSComm1.Output = outstr
If MSComm1.PortOpen = False Then
   MSComm1.PortOpen = True
     End If
   Do
   Loop Until MSComm1.OutBufferCount = 0   '等待,直到数据发送完毕

End Function
Private Sub MSComm1_OnComm()
On Error Resume Next
        Dim InByte() As Byte                  '定义一个二进制指针放接收到的数据
        Dim temp As Long
        Dim temp1(18) As Double
      '  Dim shuju(17) As Double
                Dim j As Long
Select Case MSComm1.CommEvent '——————————————————选择事件
       Case comEvReceive  '————————————————————接收十六进制数据。并以十六进制显示
        InByte = MSComm1.Input   '———————————————— 数据转移到指针
  For j = 1 To 18                             '循环到指针上标
        temp1(j) = InByte(j)
       ' shuju(j) = Val("&H" & temp1(j))
  Next j

  
Text1.Text = Format((Label8.Caption) * 10000 + (Label7.Caption) * 100 + (Label6.Caption), "0")
Text2.Text = Format((Label8.Caption) * 10000 + (Label7.Caption) * 100 + (Label6.Caption), "0")
Text3.Text = Format((Label8.Caption) * 10000 + (Label7.Caption) * 100 + (Label6.Caption), "0")
Text4.Text = Format((Label8.Caption) * 10000 + (Label7.Caption) * 100 + (Label6.Caption), "0")


Label5.Caption = Hex(temp1(12) - 51)
Label6.Caption = Hex(temp1(13) - 51)
Label7.Caption = Hex(temp1(14) - 51)
Label8.Caption = Hex(temp1(15) - 51)

MSComm1.OutBufferCount = 0 '————————清除发送缓冲区
MSComm1.InBufferCount = 0  '————————清除接收缓冲区



End Select

End Sub

Private Sub Timer3_Timer()
MSComm1.OutBufferCount = 0 '————————清除发送缓冲区
MSComm1.InBufferCount = 0  '————————清除接收缓冲区
Call send(45, 9e)  这儿也报错了
Timer3.Enabled = False
Timer4.Enabled = True
End Sub

Private Sub Timer4_Timer()
MSComm1.OutBufferCount = 0 '————————清除发送缓冲区
MSComm1.InBufferCount = 0  '————————清除接收缓冲区
Call send(46, 9F)   这儿报错了
Timer4.Enabled = False
Timer5.Enabled = True
End Sub

Private Sub Timer5_Timer()
MSComm1.OutBufferCount = 0 '————————清除发送缓冲区
MSComm1.InBufferCount = 0  '————————清除接收缓冲区
Call send(47, a0)
Timer5.Enabled = False
Timer2.Enabled = True
End Sub --------------------编程问答-------------------- Call send(&H43, &H9C)试试
补充:VB ,  网络编程
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,