2017-05-30 13 views
1

Ich versuche eine App für eine Kontrollwaage der "X-Serie" von Mettler-Toledo Garvens GmbH mit GARECO zu entwickeln.Fernbedienung gareco x Serie

Was ist eine Kontrollwaage? Die Waage ist der letzte Teil einer Produktionslinie und misst das Produktgewicht, wenn sie ein Gewicht innerhalb der normalen Parameter der Produktspezifikationen hat. Das Gerät verfügt über einen internen Speicher und Sie können Ihre Produktspezifikationen pro Produkt in das System laden und das Produkt einfach über den Gerätebildschirm ändern.

Was ist GARECO? Die Fernbedienung von GARVENS Kontrollwaagen erhielt den Namen "GARECO", die Abkürzung für Garvens Remote Control.

Fernbedienungsanweisungen können von einem externen PC über die serielle Schnittstelle zum Wägeterminal übertragen werden, wobei alle Fernsteuerungsaktionen vom PC aus durchgeführt werden. Die Kontrollwaage reagiert auf erkannte Anweisungen und gibt die entsprechende Aktion frei. Die Anweisungen bestehen aus ASCII-Strings, von denen jeder mit den Zeichen CR und LF endet.

Was ist das Ziel unserer App? Wenn die Produktionslinie das Produkt ändert, ändern wir gerne das Kontrollwaagenprodukt für die Messung.

Weitere Informationen finden Sie in dem folgenden Link zu finden, wenn Sie

wie

https://www.prosoft-technology.com/content/download/2886/22284/version/1/file/gareco_engl_Version+108.pdf

Was verwenden wir?

• .NET 4.5,

• 10 Windows

• TCP/IP (direkt über das Ethernet-Kabel angeschlossen)

Test:

Wie oben angewiesen, das Gerät sollte Anweisungen vom PC annehmen. Es ist uns gelungen, eine Verbindung mit dem Gerät über Ethernet herzustellen, aber während wir Anweisungen senden, gibt es keine Antwort vom Gerät. Unten sehen Sie den von uns verwendeten Code.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 


    TcpClient client = new TcpClient(); 

    private void button2_Click(object sender, EventArgs e) 
    { 

     client.Connect("192.168.0.1", 23); 
    } 

    string _infoFB = "FB_INFO(CR)(LF)"; 

    byte[] p; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     client.Close(); 
    } 



    private void button3_Click(object sender, EventArgs e) 
    { 

     p = Encoding.ASCII.GetBytes(_infoFB); 
     NetworkStream ntstream = client.GetStream(); 

     if (ntstream.CanWrite) 
     { 
      ntstream.Write(p, 0, p.Length); 

       byte[] myReadBuffer = new byte[1024]; 
       StringBuilder myCompleteMessage = new StringBuilder(); 
       int numberOfBytesRead = 0; 
       do 
       { 
        numberOfBytesRead = ntstream.Read(myReadBuffer, 0, myReadBuffer.Length); 
        myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); 
       } 
       while (ntstream.DataAvailable); 

       foreach (var item in myCompleteMessage.ToString()) 
       { 
        listBox1.Items.Add(item); 
       } 
     } 

     if (ntstream.CanRead) 
     { 
      if (ntstream.DataAvailable) 
      { 
       byte[] myReadBuffer = new byte[1024]; 
       StringBuilder myCompleteMessage = new StringBuilder(); 
       int numberOfBytesRead = 0; 
       do 
       { 
        numberOfBytesRead = ntstream.Read(myReadBuffer, 0, myReadBuffer.Length); 
        myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); 
       } 
       while (ntstream.DataAvailable); 



       foreach (var item in myCompleteMessage.ToString()) 
       { 
        listBox1.Items.Add(item); 
       } 
      } 
      else 
      { 
       MessageBox.Show("Sorry. \n You cannot read from this NetworkStream."); 
      } 

     } 

    } 
    string recivedPulse; 
    private void button4_Click(object sender, EventArgs e) 
    { 
     p = Encoding.ASCII.GetBytes(_infoFB); 
     recivedPulse = Encoding.ASCII.GetString(p, 0, p.Length); 
     listBox1.Items.Add(recivedPulse); 
    } 
} 

}

Antwort

0

Die Nachricht sollte eigentlich "FB_INFO\r\n", nicht "FB_INFO(CR)(LF)". CR und LF sind Abkürzungen für "Wagenrücklauf" und "Zeilenvorschub", die 2 spezielle Steuerbytes sind.

Die Antwort des Geräts sollte wie folgt aussehen: FB_INF 1 S R oder ähnlich. Die Zeichen S, R und mögliche andere (z. B. G und M) beziehen sich auf die verfügbaren Lizenzen des Geräts.

Für weitere Informationen, die Sie auch an das Unternehmen wenden können Objective, die für Mettler/Garvens und andere Geräte (in Java geschrieben) einen ausgezeichneten Gerätetreiber bietet.

Bitte beachten Sie auch, dass es eine neuere Version der Protokollbeschreibung ist: 1.10