I'm trying to communicate with a device using a winsocket.
I want to try and change it's IPaddress so I need to follow a specific sequence.
So I need to start with a DLE + STX, then the IP-number, the subnet, the gateway, the port and if DHCP should be enabled or not and finally another DLE + ETX.
I'm creating a byte array to send all of the info but there are two questions that I have doing this.
#1 How do I send the control characters (DLE / STX / ETX)?
#2 How do I split up the port in multiple bytes?
Below is my code:
Expand|Select|Wrap|Line Numbers
- ' First extract all data
- Dim Bites(16) As Byte '9-byte array
- Dim IP() As String
- Dim Subnet() As String
- Dim Gateway() As String
- Dim Port As String
- ' IPAddress
- IP = Split(txtModuleIp.Text, ".")
- ' Subnet
- Subnet = Split(txtModuleSubnet.Text, ".")
- ' Gateway
- Gateway = Split(txtModuleGateway.Text, ".")
- ' Port
- Port = txtModulePort.Text
- ' Create Byte array
- Bites(0) = DLE
- Bites(1) = STX
- Bites(2) = IP(0) '192
- Bites(3) = IP(1) '168
- Bites(4) = IP(2) '1
- Bites(5) = IP(3) '11
- Bites(6) = Subnet(0) '255
- Bites(7) = Subnet(1) '255
- Bites(8) = Subnet(2) '255
- Bites(9) = Subnet(3) '0
- Bites(10) = Gateway(0) '192
- Bites(11) = Gateway(1) '168
- Bites(12) = Gateway(2) '1
- Bites(13) = Gateway(3) '1
- Bites(14) = Port '50505
- Bites(15) = Dhcp '0 for disabled / 1 for enabled
- Bites(16) = DLE
- Bites(17) = ETX
- If Sock.State = sckConnected Then
- Sock.SendData Bites
- lblStatus.Caption = " Sending message"
- End If
The control characters are being displayed as 0.
So I'm guessing that there is a conflict in the way I'm trying to send these values.
Ideally I would like to send it as hex but my bytearray doesn't seem to allow me.
If anybody has some ideas, it would be very helpful.
Thanks,
Kenneth