1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| Public Function Send_cmd(ByVal Address_Byte, ByVal Command_Byte, ByVal Data_byte) As Byte
Dim Send_buffer(0 To 3), In_buffer(0 To 1028) As Byte
Dim BINARYSTRING As String
On Error GoTo errorhandler
Watchdog_T.Stop()
All_off.Enabled = False ' Disable buttons
All_on.Enabled = False
BC_ON.Enabled = False
BC_OFF.Enabled = False
Get_Port.Enabled = False
Set_port.Enabled = False
Set_single.Enabled = False
Toggle.Enabled = False
Del_single.Enabled = False
Exit_All_Off.Enabled = False
Windows.Forms.Cursor.Current = Windows.Forms.Cursors.WaitCursor
If Watchdog.Checked = True Then
Watchdog.Enabled = False
Watchdog_T.Stop()
End If
State_List.Items.Clear() ' Get state of relay cards for List-Box
If SerialPort1.IsOpen = False Then
MsgBox("No Com-Port selcted", MsgBoxStyle.Exclamation)
GoTo _End
End If
Send_buffer(0) = Command_Byte 'Create command-frame
Send_buffer(1) = Address_Byte
Send_buffer(2) = Data_byte
Send_buffer(3) = Command_Byte Xor Address_Byte Xor Data_byte 'Calculate "checksum"
TextBox.Text = ("CMD: " & Command_Byte.ToString & ", Adr: " & Address_Byte.ToString & ", Data_byte: " & Data_byte.ToString & ", CRC: " & Send_buffer(3).ToString)
SerialPort1.Write(Send_buffer, 0, 4)
sleep(Card_count * 8 + 10) ' delay for executing command & feedback (according to number of connected cards)
SerialPort1.DiscardOutBuffer()
SerialPort1.DiscardInBuffer()
GetSchaltzustände:
Send_buffer(0) = 2 ' Get Ports
Send_buffer(1) = 0 ' Broadcast
Send_buffer(2) = 0
Send_buffer(3) = Send_buffer(0) Xor Send_buffer(1) Xor Send_buffer(2)
SerialPort1.Write(Send_buffer, 0, 4)
sleep(Card_count * 8 + 10) ' delay for executing command & feedback (according to number of connected cards)
SerialPort1.DiscardOutBuffer()
For x As Byte = 0 To Card_count - 1
SerialPort1.Read(In_buffer, 0, 4)
Relay_state_backup(x) = In_buffer(2)
BINARYSTRING = Convert.ToString(In_buffer(2), 2)
BINARYSTRING = BINARYSTRING.PadLeft(8, "0"c) ' convert to binary
State_List.Items.Add((x + 1).ToString & ": " & vbTab & "dec.: " & In_buffer(2).ToString & vbTab & vbTab & "Bin.:" & BINARYSTRING)
Next
All_off.Enabled = True ' Enable buttons
All_on.Enabled = True
BC_ON.Enabled = True
BC_OFF.Enabled = True
Get_Port.Enabled = True
Set_port.Enabled = True
Set_single.Enabled = True
Toggle.Enabled = True
Del_single.Enabled = True
Exit_All_Off.Enabled = True
Windows.Forms.Cursor.Current = Windows.Forms.Cursors.Default
If Watchdog.Checked = True Then
Watchdog.Enabled = True
Watchdog_T.Start()
End If
GoTo _End
errorhandler:
MsgBox("Error executing command!", MsgBoxStyle.Exclamation)
_End:
End Function |
Partager