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

VB中利用winsock控件通讯程序好多错误,希望大家帮忙修改一下

'多个label,text等控件,winsock控件两个,需要用到类模块吗?
好多错误啊,初学VB,希望大家给些指点(*^__^*) 







Private Sub Form_Load() '初始化
 Me.WindowState = 2 '全屏显示窗口
 
 ''''''''''''''winsock1'''''''发送'''''''''
 With Form1.Winsock1
 Winsock1.RemoteHost = "192.168.1.33"
 Winsock1.Protocol = sckUDPProtocol '使用udp协议
 Winsock1.RemotePort = 5555 '接收机端口
 Winsock1.LocalPort = 6666 '广播使用的端口
 Winsock1.Bind
  
 ''''''''''''''''''''''''''''''''''''''''''''''
 
 ''''''''''''''winsock2'''''''接收''''''''
 With Form1.Winsock2
 Winsock2.RemoteHost = "192.168.1.38" '广播IP
 Winsock2.Protocol = sckUDPProtocol '使用udp协议
 Winsock2.RemotePort = 5555 '广播端口
 Winsock2.LocalPort = 6666 '本地端口
 Winsock2.Bind
     
 ''''''''''''''''''''''''''''''''''''''''''

  '''定义上位机发送
    Private Type send '定义上位机发送数据包结构体
    
       speed_set As Single '转速
       v_capset As Single '直流电容电压
       '''''''''''工况'''''''''''''''
       motor_DF As Integer '双馈运行模式
       motor_AS As Integer '异步运行模式
       normal_shutdown As Integer '电机正常降速,准备转入电阻停机模式
       fault_shutdown_out As Integer '故障停机模式
    End Type
 
 '''''''''''''定义上位机接收
    Private Type receive '定义上位机接收数据包结构体
        v_cap  As Single '直流电容电压值
        speed  As Single   '转速
        isa As Single  '定子电流A
        isb As Single  '定子电流B
        isc As Single  '定子电流C
        vsa As Single  '定子电压A
        vsb As Single  '定子电压B
        vsc As Single  '定子电压C
        ira  As Single    '转子电流A
        irb  As Single     '转子电流B
        irc  As Single      '转子电流C
        vra  As Single  '转子电压A
        vrb   As Single '转子电压B
        vrc   As Single     '转子电压C
        
        stat_switch_stator As Integer '电机定子开关状态信号
        stat_switch_rectifer As Integer '变频器整流侧电源开关状态信号
        stat_switch_rotor_resis As Integer '转子电阻投切开关状态信号
        stat_switch_inverter As Integer '变频器投切开关状态信号
        stat_switch_protect_resis As Integer '变频器保护电阻投切开关状态信号

        fault As Integer '故障信号
        discharge As Integer '放电信号
  
     End Type
 
       
  '''''''''''''''''''''''''''''''''''编辑E'''''''''''''''''''''''''''
 
 
 '接收
 ''''''''''''''''''''接收参数
   Dim rr As receive
   lable3(3).Caption = rr.v_cap '直流电容电压值
   lable3(0).Caption = rr.speed '转速
   
   lable3(2).Caption = rr.isa '定子电流A
   rr.isb  '定子电流B
   rr.isc  '定子电流C
   
   lable3(5).Caption = rr.vsa '定子电压A
   rr.vsb  '定子电压B
   rr.vsc  '定子电压C
   
   lable3(1).Caption = rr.ira '转子电流A
   rr.irb  '转子电流B
   rr.irc  '转子电流C
   
   lable3(4).Caption = rr.vra '转子电压A
   rr.vrb  '转子电压B
   rr.vrc  '转子电压C
            
            
   ''''''''''''''''''''''''''''''''''''''''''''''''''''
  
 '''''''''''''''''''''''''''接收指示灯信号
  
  If rr.stat_switch_stator = 0 Then '电机启动(电机定子开关状态信号)
   Shape1(0).FillColor = &HFF&    '红色
  Else: rr.stat_switch_stator = 1
   Shape1(0).FillColor = &HFF00&   '绿色
  End If
   
   If rr.fault = 1 Then '故障(故障信号)
    Shape1(1).FillColor = &HFF& '红色
   Else: rr.fault = 0
    Shape1(1).FillColor = &HE0E0E0    '灰色
   End If
   
  If rr.discharge = 0 Then '放电(放电信号)
   Shape1(2).FillColor = &HFF& '红色
  Else: rr.discharge = 1
   Shape1(2).FillColor = &HFF00&     '绿色
  End If
  '''''''''''''''''''''''''''''''''''''''''''''''''''''
  
  '''''''''''''''''''''''''''''''''接收开关信号
  
 
  If rr.stat_switch_stator = 0 Then '电机定子开关状态信号
    Line1.Y2 = Y1 - 10
  Else: Line1.Y2 = Y1 - 6
  End If
  
  If rr.stat_switch_rotor_resis = 0 Then  '转子电阻投切开关状态信号
    Line1.Y2 = Y1 - 10
  Else: Line1.Y2 = Y1 - 6
  End If
  
  If rr.stat_switch_inverter = 0 Then  '变频器投切开关状态信号
    Line1.X2 = X1 + 10
  Else: Line1.X2 = X1 + 6
  End If
  
  If rr.stat_switch_protect_resis = 0 Then '变频器保护电阻投切开关状态信号
   Line1.X2 = X1 - 10
  Else: Line1.X2 = X1 - 6
  End If
  
  If rr.stat_switch_rectifer = 0 Then  '变频器整流侧电源开关状态信号
    Line1.Y2 = Y1 - 10
  Else: Line1.Y2 = Y1 - 6
  End If
  
   
 
End Sub

Private Sub Command1_Click(Index As Integer)
 If Index = 0 Then '按下紧急停机按钮
  send.fault_shutdown_out = 1
       
 Else: Index = 1 '按下正常停机按钮
  send.normal_shutdown = 1
 End If
 
  

End Sub

Private Sub Command2_Click(Index As Integer)
 If Index = 0 Then '按下双馈按钮
  send.motor_DF = 1
 
 Else: Index = 1 '按下异步按钮
  send.motor_AS = 1
 End If
 
  

End Sub
Private Sub Command3_Click() '发送参数
  send.v_capset = Text1.Text '直流电容电压
  send.speed_set = Text2.Text '转速
End Sub
''''''''''''''''''''''''公共''''''''''''''''''
'''''''''''发送
k = Len(send)
k = LenB(send)

Dim bt() As Byte
ReDim bt(k - 1)
CopyMemory bt(0), send, 24
Form1.Winsock1.SendData bt
''''''''''''''''''''''''''''''
'''''''''接收
Dim btt() As Byte
total = Winsock2.BytesReceived
 CopyMemory rr, btt(0), total
'''''''''''''''''''''''''''''''''''''''
                     

--------------------编程问答-------------------- 单步调试和设断点调试是程序员必须掌握的技能之一。
补充:VB ,  非技术类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,