Search code examples
c#clientscaleethernet

How to read data from scale through ethernet using a client program


I have to connect Avery ZM510 scale to to a pc via ethernet. basically it should listen to the scale for data when user press print button. the suppliers said the scale is already configured as a server and gave an IP and said no need of a port number.

I tried below client program but no luck. Avery manuals also not containing any information about the API.

     using System;  
     using System.Net;  
     using System.Net.Sockets;  
     using System.Text;  
  

   public class SocketClient  
    {  
    public static int Main(String[] args)  
    {  
        StartClient();  
        return 0;  
    }  
  
  
    public static void StartClient()  
    {  
        byte[] bytes = new byte[1024];  
  
        try  
        {  
         
            IPHostEntry host = Dns.GetHostEntry("localhost");  
            IPAddress ipAddress = host.AddressList[0];  
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, "");  
  
          
            Socket sender = new Socket(ipAddress.AddressFamily,  
                SocketType.Stream, ProtocolType.Tcp);  
  
            // Connect the socket to the remote endpoint. Catch any errors.    
            try  
            {  
                // Connect to Remote EndPoint  
                sender.Connect(remoteEP);  
  
                Console.WriteLine("Socket connected to {0}",  
                    sender.RemoteEndPoint.ToString());  
  
                // Encode the data string into a byte array.    
                byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");  
  
                // Send the data through the socket.    
                int bytesSent = sender.Send(msg);  
  
              
                int bytesRec = sender.Receive(bytes);  
                Console.WriteLine("Echoed test = {0}",  
                    Encoding.ASCII.GetString(bytes, 0, bytesRec));  
  
                // Release the socket.    
                sender.Shutdown(SocketShutdown.Both);  
                sender.Close();  
  
            }  
            catch (ArgumentNullException ane)  
            {  
                Console.WriteLine("ArgumentNullException : {0}", ane.ToString());  
            }  
            catch (SocketException se)  
            {  
                Console.WriteLine("SocketException : {0}", se.ToString());  
            }  
            catch (Exception e)  
            {  
                Console.WriteLine("Unexpected exception : {0}", e.ToString());  
            }  
  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine(e.ToString());  
        }  
    }  
}  

Solution

  • Configure Scale IP and port and any simple client program will work.

     public partial class Form1 : Form
    {
        System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
    
    
        public Form1()
        {
            InitializeComponent();
        }
    
    
    
        private void Form1_Load(object sender, EventArgs e)
    
        {
    
            msg("Client Started");
    
            clientSocket.Connect("192.168.1.1", 8888); // Scale Ip and port
    
            label1.Text = "Client Socket Program - Server Connected ...";
    
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            NetworkStream serverStream = clientSocket.GetStream();
    
            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
    
            serverStream.Write(outStream, 0, outStream.Length);
    
            serverStream.Flush();
    
    
    
            byte[] inStream = new byte[10025];
    
            serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
    
            string returndata = System.Text.Encoding.ASCII.GetString(inStream);
    
            msg(returndata);
    
            textBox2.Text = "";
    
            textBox1.Focus();
        }
    
        public void msg(string mesg)
    
        {
    
            textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + mesg;
    
        }