⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.frm

📁 上位机界面的设计和程序
💻 FRM
字号:
VERSION 5.00
Begin VB.Form frmMain 
   Caption         =   "Form1"
   ClientHeight    =   5235
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   9360
   LinkTopic       =   "Form1"
   ScaleHeight     =   5235
   ScaleWidth      =   9360
   StartUpPosition =   3  '窗口缺省
   Begin VB.TextBox Text4 
      Height          =   615
      Left            =   1680
      TabIndex        =   6
      Top             =   4560
      Width           =   1215
   End
   Begin VB.TextBox Text3 
      Height          =   495
      Left            =   240
      TabIndex        =   5
      Top             =   4560
      Width           =   1095
   End
   Begin VB.CommandButton Command1 
      Caption         =   "开始检测"
      Height          =   495
      Left            =   3240
      TabIndex        =   4
      Top             =   4560
      Width           =   3495
   End
   Begin VB.TextBox Text2 
      Height          =   4095
      Left            =   4920
      TabIndex        =   3
      Top             =   120
      Width           =   5295
   End
   Begin VB.TextBox Text1 
      Height          =   495
      Left            =   2760
      TabIndex        =   1
      Top             =   120
      Width           =   1215
   End
   Begin VB.PictureBox Picture1 
      BackColor       =   &H00C0C0FF&
      Height          =   3495
      Left            =   960
      ScaleHeight     =   3435
      ScaleWidth      =   3675
      TabIndex        =   0
      Top             =   720
      Width           =   3735
   End
   Begin VB.Label Label1 
      Caption         =   "光照强度:"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   15
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   960
      TabIndex        =   2
      Top             =   240
      Width           =   1575
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim datamary As String
Dim datalong As Long
Dim mCaptionInform As String
Dim mdemoreq As COMMAND_PACKET
Dim mOpen As Long
Dim iBuffer As String
Dim iLength As Long
Dim average As Long
Dim obuffer As String
'Dim iNotifyRoutine As Long
Dim ioLength As Long
Dim iIndex As Long
Private Sub Command1_Click()
    Dim mLength As Long
    Dim ioLength As Long
    Dim iIndex As Long
    Dim mdemoreq As String
    Dim obuffer As String
  ' 以下测试PC机与单片机之间的USB通讯
    Call Testcommunication
    '通讯正常后开始上传数据
  '  Do While True
   '   If (mUploadData(iBuffer, iLength) <> 0) Then    '通过CH375接收数据,成功
       ioLength = mCH375_PACKET_LENGTH
       If (CH375ReadData(iIndex, obuffer, ioLength)) Then
      '  datamary = mdemoreq
         datamary = obuffer
        'Text2.Text = datamary
       ' datalong = iLength \ 8
        'Call pressdata(average)
        'Text1.Text = average
        'Call display
      Else
        MsgBox "CH375ReadData 上传数据失败", vbExclamation, mCaptionInform
      
      End If
 '   Loop
    
 ' Call mCallInt  '设置中断
 '下面加载中断服务程序 , 中断服务程序是在应用层执行的, 其线程优先级是THREAD_PRIORITY_TIME_CRITICAL
 '当单片机有事需要通知计算机时 , 可以用CMD_WR_USB_DATA5命令写入中断特征数据, 计算机的mInterruptEvent线程将会收到该中断特征数据
 '然后mInterruptEvent线程向主程序发出消息进行处理,mInterruptEvent线程相当于中断服务程序,代替主程序定时查询单片机
  
End Sub

'Const DEMO_GET_KEY = &H34
'Const DEMO_RET_OK = &H0
Private Sub Form_Load()
    mIndex = 0  '第一个ch375设备
    mShowLED = 0
    mKeyCode = &HFF
    mCaptionInform = " 信息提示 "
    mOpen = -1
    
    '设置设备插拔监视
    If (CH375SetDeviceNotify(mIndex, vbNullString, AddressOf iNotifyRoutine) = False) Then
       MsgBox "设置监视CH372/CH375设备插拔失败"
    End If
        
    mOpen = CH375OpenDevice(mIndex)                  '窗体加载时打开设备
    If mOpen = -1 Then
        Call cheakline(CH375_DEVICE_REMOVE)          '作设备拔出处理
        Exit Sub
    Else
        Call cheakline(CH375_DEVICE_ARRIVAL)          '作设备插入处理
    End If
    
    ' 设置USB数据读写的超时,超过3000mS未完成读写将强制返回,避免一直等待下去
    CH375SetTimeout mIndex, 3000, 3000
    
    ' 以下测试PC机与单片机之间的USB通讯
    'Call Testcommunication
    '通讯正常后开始上传数据
   ' Do While True
    '  If (mUploadData(iBuffer, iLength) <> 0) Then    '通过CH375接收数据,成功
   '     datamary = iBuffer
   '     Text2.Text = datamary
   '     datalong = iLength \ 8
   '     Call pressdata(average)
   '     Text1.Text = average
   '     Call display
   '   Else
   '     MsgBox "CH375ReadData 上传数据失败", vbExclamation, mCaptionInform
      
   '   End If
   ' Loop
    
 ' Call mCallInt  '设置中断
 '下面加载中断服务程序 , 中断服务程序是在应用层执行的, 其线程优先级是THREAD_PRIORITY_TIME_CRITICAL
 '当单片机有事需要通知计算机时 , 可以用CMD_WR_USB_DATA5命令写入中断特征数据, 计算机的mInterruptEvent线程将会收到该中断特征数据
 '然后mInterruptEvent线程向主程序发出消息进行处理,mInterruptEvent线程相当于中断服务程序,代替主程序定时查询单片机
  
       
End Sub
Private Function display()
Dim pw, ph
Dim zi, sr As Single
Picture1.Cls
sr = Val(Text1.Text)
If sr >= 50 Then
   MsgBox "请输入一个合理的温度", vbYesNo, "温度考虑"
   Text1.Text = ""
   Text1.SetFocus
Else
zi = sr * 20
Picture1.Width = 4320: Picture1.Height = 2880
'Picture1.BackColor = QBColor(9) '将picture1背景设置为白色
Picture1.FillStyle = vbFSSolid
Picture1.FillColor = QBColor(Int(12))
pw = Picture1.ScaleWidth / 2
ph = Picture1.ScaleHeight / 2
Picture1.Circle (Int(pw), Int(ph)), zi
End If
End Function





'以下测试PC机与单片机之间的USB通讯
Public Function Testcommunication()
    Dim obuffer As String
    Dim mLength As Long
    Dim xieyi As Long
    Dim xieyiback As String
     mdemoreq.mCommandCode = DEF_CMD_TEST_DATA           'DEF_CMD_TEST_DATA为测试命令,下位机将PC机发来的(命令包的所有数据)取反后返回

     mdemoreq.mCommandCodeNot = &HFF - DEF_CMD_TEST_DATA
     mdemoreq.mParameter(0) = &H5A  ' 任意的测试数据,返回后将按位取反
     mdemoreq.mParameter(1) = &H96  ' 任意的测试数据,返回后将按位取反
     mdemoreq.mParameter(2) = &HF3  ' 任意的测试数据,返回后将按位取反
     mdemoreq.mParameter(3) = &H4C  ' 任意的测试数据,返回后将按位取反
     mdemoreq.mParameter(4) = &H39  ' 任意的测试数据,返回后将按位取反

    mLength = CONST_CMD_LEN    ' 命令包的长度
    If (CH375Writedata(mIndex, mdemoreq, mLength)) Then       ' 通过CH375发送命令数据,成功
      '  xieyi = mdemoreq
        mLength = 64
        If (CH375ReadData(mIndex, mdemoreq, mLength)) Then    ' 通过CH375接收应答数据,成功
       '  If (CH375ReadData(iIndex, obuffer, mLength)) Then
           ' xieyiback = obuffer
                
           
            mLength = 64
            If (CH375ReadData(mIndex, mdemoreq, mLength)) Then
               Text1.Text = mdemoreq.mCommandCode
               Text3.Text = mdemoreq.mCommandCodeNot
               Text4.Text = mdemoreq.mParameter(0)
               
         '   End If
         '   mLength = 64
          '  If (CH375ReadData(mIndex, mdemoreq, mLength)) Then
         '      Text3.Text = mdemoreq.mCommandCode
         '   End If
        '    mLength = 64
         '   If (CH375ReadData(mIndex, mdemoreq, mLength)) Then
        '       Text4.Text = mdemoreq.mCommandCode
               End If
            
         '   If (mLength = CONST_CMD_LEN) Then
         '       If (mdemoreq.mCommandCode <> DEF_CMD_TEST_DATA) Then
        '            MsgBox "通过USB传输的数据有错误", vbExclamation, mCaptionInform
        '        End If
        '     Else
       '         MsgBox "CH375数据测试返回的长度错误", vbExclamation, mCaptionInform
       '     End If
                  
        Else
            MsgBox "CH375ReadData 失败", vbExclamation, mCaptionInform
        End If
    Else
        MsgBox "CH375WriteData 失败", vbExclamation, mCaptionInform
    End If
        
' 下面是下传数据块的例子

 '             Dim mBuffer(4095) As Byte
 '             mBuffer(0) = Data  ' 准备下传的数据
 '             mLength = mDownloadData(mBuffer, 4096)   ' 将数据块从计算机下传给单片机,返回实际传输长度
 '             mLength = mUploadData(mBuffer, 4096)     ' 从单片机上传数据块到计算机,返回实际传输长度

End Function
'/*设备插拔事件处理*/
Private Sub cheakline(iEventatus)
    Dim i As Byte
    Dim iEventStatus As Long
    iEventStatus = 3   '插拔事件代码

    If (iEventStatus = CH375_DEVICE_ARRIVAL) Then
        If (mOpen = -1) Then  '设备没打开
            mOpen = CH375OpenDevice(mIndex)                  '设备插入后打开设备
            If mOpen = -1 Then
                MsgBox "无法打开CH375设备", vbCritical, "信息提示"
                Exit Sub
            End If
            CH375SetTimeout mIndex, 3000, 3000
            Call Testcommunication  '测试PC机与单片机之间的USB通讯
            Call mCallInt  '设置中断
        End If
       
       
   ElseIf (iEventStatus = CH375_DEVICE_REMOVE) Then
    
        If (mOpen <> -1) Then
            CH375CloseDevice (mIndex)     '设备拔出,关闭设备句柄
            mOpen = -1
        End If
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)     '退出窗体
    CH375SetDeviceNotify mIndex, vbNullString, 0&    '取设备插拔通知
    CH375SetIntRoutine mIndex, 0&                    '取消中断上传
    CH375CloseDevice (mIndex)     '程序退出关闭设备
End Sub


'最好采用每次只发送8位,并且添加标志用来区别数据来源和分离数据
Private Function pressdata(ByVal average As Long)
    Dim data() As String
    Dim i As Long
    If (datalong = 3) Then
       For i = 1 To 3
    '    data(1) = datamary
    '    data(2) = datamary
    '    data(3) = datamary
         data(i) = datamary
         Next i
       Else
         MsgBox "CH375ReadData 上传数据长度出错", vbExclamation, mCaptionInform
    End If
        average = CInt(data(1))
        Return
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -