Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用串行端口_Vb.net - Fatal编程技术网

Vb.net 使用串行端口

Vb.net 使用串行端口,vb.net,Vb.net,一段时间以来,我一直在学习如何编写VB.NET。在这个页面和互联网的帮助下,我成功地创建了一个程序,将一些十六进制值发送到一个接口盒,并从中获得一个常规响应 这里的问题是通信是TCP/IP。但是现在我有了一个带有USB接口的新盒子,现在我一点也不知道如何使用串行端口发送和接收相同的十六进制值 下面是代码。我不知道是否有人可以帮我设置一个名为COM13的串行端口,或者至少向我解释一下该怎么做 这就是程序所做的 推扫 连接到机箱的TCP/IP(10.2.12.65) 发送激活协议e133 发送get

一段时间以来,我一直在学习如何编写VB.NET。在这个页面和互联网的帮助下,我成功地创建了一个程序,将一些十六进制值发送到一个接口盒,并从中获得一个常规响应

这里的问题是通信是TCP/IP。但是现在我有了一个带有USB接口的新盒子,现在我一点也不知道如何使用串行端口发送和接收相同的十六进制值

下面是代码。我不知道是否有人可以帮我设置一个名为COM13的串行端口,或者至少向我解释一下该怎么做

这就是程序所做的

  • 推扫
  • 连接到机箱的TCP/IP(10.2.12.65)
  • 发送激活协议e133
  • 发送get date命令05 6c 29 f1 3c 81
  • 框用字节响应返回日期
  • 当程序读取对应于81(十六进制)的字节时,它开始将它们转换为字符,并将它们添加到要显示在底部文本框中的字符串中
  • 基本上就是这样。问题是,到目前为止,我只能发送文本字符串,但框无法识别它,它响应垃圾,而不是日期

    代码如下:

    Imports System.Net.Sockets  
    Imports System.Threading
    Imports System.IO  
    
    Public  Class Form1
        Dim client As New TcpClient
        Dim transmit As NetworkStream
        Dim protocol As Byte()
        Dim data As Byte()
        Dim ByteArrayToHexStr As String = String.Empty
        Dim message As String
        Dim datos_byte As Byte()
        Dim respuesta As [String] = [String].Empty
        Dim transision As [String] = [String].Empty
        Dim Date_full As [String] = [String].Empty
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            TextBox1.Clear()
            client = New TcpClient("10.2.12.65", 10001)
            transmit = client.GetStream()
            protocol = {225, 51} ' E1 33 in hex value
            transmit.Write(protocol, 0, protocol.Length)
            Thread.Sleep(45)
    
            data = {5, 108, 41, 241, 60, 129} ' 05 6c 29 f1 3c 81 in hex value
            transmit.Write(data, 0, data.Length)
            data = New Byte(66) {}
            Thread.Sleep(45)
    
            Dim bytes As Int32 = transmit.Read(data, 0, data.Length)
            Dim Date1 As String = String.Empty
            Dim Date2 As String = String.Empty
            Dim Date_temp As Integer = 0
    
            For i As Integer = 0 To UBound(data)
                Date1 = data(i)
                If Date1 = "129" Then
                    Date_temp = i + 1
                    i = 1000
                    For k As Integer = 0 To 5
                        If k = 0 Then
                            Date1 = data(Date_temp + k)
                            Date_full = Chr(Date1)
                        Else
                            Date1 = data(Date_temp + k)
                            Date2 = Chr(Date1)
                            Date_full = Date_full & Date2
                        End If
                    Next
                Else
                End If
            Next
            Thread.Sleep(45)
    
            transmit.Close()
            client.Close()
            TextBox1.Text = TextBox1.Text & Date_full
        End Sub
    End Class
    

    请看一下Microsoft的SerialPort类示例:


    如果返回垃圾,则可能表明波特率配置不正确。我不知道“box”是什么意思,但这个设备应该有一个指定的波特率,您应该可以在它的数据表或产品信息中找到它。

    就像您声明了一个新的TcpClient一样,您应该声明一个Ports.SerialPort对象(给定您当前的Imports语句)。然后设置端口的属性(名称、波特率等)。然后打开它。使用Write方法。关上它。然后处理端口的DataReceived事件以缓冲响应并相应地采取行动。非常感谢,你是对的,它与tcp相同,我只需要配置端口。