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
wieWas 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);
}
}
}