vb.net 如何使用以太网连接从秤读取重量

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/31302344/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 19:16:30  来源:igfitidea点击:

How to read weight from scale using ethernet connection

.netvb.nettcpethernet

提问by Dallas

I have a Mettler Toledo XS32000L scale and I am simply trying to read the weight via an Ethernet connection and a VB.net (2010) application. I have found plenty of information/code for a serial(COM) connection but nothing for an Ethernet connection.

我有一个 Mettler Toledo XS32000L 秤,我只是想通过以太网连接和 VB.net (2010) 应用程序读取重量。我找到了大量串行(COM)连接的信息/代码,但没有找到以太网连接的信息/代码。

Communication mode: Client & Server Remote Host Address: 192.168.0.2. Remote Host Port Number: 8001 Local server Port Number: 8000 (Scale IP: 192.168.0.1)

通讯方式:Client & Server 远程主机地址:192.168.0.2。远程主机端口号:8001 本地服务器端口号:8000(扩展 IP:192.168.0.1)

I am able to ping the scale with a reply. I have tried using a HyperTerminal but with no luck. Any help would be greatly appreciated, and hopefully this post can help many others to come. Thanks!

我可以通过回复来 ping 秤。我曾尝试使用超级终端,但没有成功。任何帮助将不胜感激,希望这篇文章可以帮助许多其他人。谢谢!

Other Resources

其他资源

Code for a VB application with a SERIAL connection: http://control.com/thread/1240210560

具有 SERIAL 连接的 VB 应用程序代码:http: //control.com/thread/1240210560

Another helpful link(but not for me): http://vb.net-informations.com/communications/vb.net_socket_programming.htm

另一个有用的链接(但不适合我):http: //vb.net-informations.com/communications/vb.net_socket_programming.htm

回答by Dallas

Alright - despite the criticism, I am going to post the solution after hours of researching. I created a TCP client and the modified the settings (IP, port, etc.) Hopefully this helps some future programmers!

好吧 - 尽管有批评,我还是会在经过数小时的研究后发布解决方案。我创建了一个 TCP 客户端并修改了设置(IP、端口等)希望这对未来的程序员有所帮助!

Imports System.Net.Sockets

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Call Connect("192.168.0.1", "S" & vbCrLf)
End Sub

Shared Sub Connect(ByVal server As [String], ByVal message As [String])
    Try
        ' Create a TcpClient. 
        ' Note, for this client to work you need to have a TcpServer  
        ' connected to the same address as specified by the server, port 
        ' combination. 
        Dim port As Int32 = 8000
        Dim client As New TcpClient(server, port)

        ' Translate the passed message into ASCII and store it as a Byte array. 
        Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)

        ' Get a client stream for reading and writing. 
        '  Stream stream = client.GetStream(); 
        Dim stream As NetworkStream = client.GetStream()

        ' Send the message to the connected TcpServer. 
        stream.Write(data, 0, data.Length)

        'Console.WriteLine("Sent: {0}", message)
        MsgBox("Sent: {0} " & message)
        ' Receive the TcpServer.response. 
        ' Buffer to store the response bytes.
        data = New [Byte](256) {}

        ' String to store the response ASCII representation. 
        Dim responseData As [String] = [String].Empty

        ' Read the first batch of the TcpServer response bytes. 
        Dim bytes As Int32 = stream.Read(data, 0, data.Length)
        responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
        'Console.WriteLine("Received: {0}", responseData)
        MsgBox("Received: {0} " & responseData)

        ' Close everything.
        stream.Close()
        client.Close()
    Catch e As ArgumentNullException
        'Console.WriteLine("ArgumentNullException: {0}", e)
        MsgBox("ArgumentNullException: {0}" & e.Message)
    Catch e As SocketException
        'Console.WriteLine("SocketException: {0}", e)
        MsgBox("SocketException: {0}" & e.Message)
    End Try

    MsgBox("Got to this point in code")

    'Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
    'Console.Read()
End Sub 'Connect

End Class