コンピューターからPICに1バイトを送信しようとしています(注:PICは1バイトのみを受け入れ、それ以外の場合はデータ送信の最初のバイトのみを受け入れます)
合計8個のLEDだけを管理したいので、これはそれほど問題にはならないはずです。したがって、0から255までしか必要ありませんが、これを達成するのに問題があります。値1を写真に送信しようとすると、プログラムは31を送信します。5を送信しようとすると35を送信します。255を送信しようとすると、3 * 2 * 3 * 5 * 3 * 5 *を送信します。送信してみると、その前に3が追加されます。次のコードを使用して値を決定し、送信しています。
Dim t As Integer = 0
Dim result As Integer = 0
For Each chk As CheckBox In GroupBox1.Controls
If chk.Checked = True Then
result = result + 2 ^ t
End If
t = t + 1
Next
publisher.Connect(IPTo, PortTo)
Dim sendbytes() As Byte = ASCII.GetBytes(result)
publisher.Send(sendbytes, sendbytes.Length)
問題はASCIIへの変換にあると思います。
また、PICからPCへの入力を受信しようとしています。これには、タイマー内に次のスクリプトがあります。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
Dim ep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim rcvbytes() As Byte = subscriber.Receive(ep)
Dim translate As String
translate = System.BitConverter.ToInt32(rcvbytes, 0)
TBRcv.Text = translate
Catch ex As Exception
End Try
End Sub