遥控gareco x系列

时间:2017-05-30 15:09:38

标签: c# telnet ethernet

我正在尝试为安装了GARECO的Mettler-Toledo Garvens GmbH“X系列”自动检重秤开发应用程序。

什么是检重秤?称重器是生产线的最后一部分,如果产品重量在产品细节的正常参数范围内,则测量产品重量。该设备具有内部存储器,您可以将每个产品的产品规格加载到系统中,并轻松地从设备屏幕更改产品。

什么是GARECO? GARVENS自动检重秤的遥控器名为“GARECO”,是Garvens遥控器的缩写。

远程控制指令可由外部PC通过串行接口传输到称重终端,所有远程控制操作均由PC实现。检重秤对其已识别的指令作出反应并释放相应的动作。指令由ASCII字符串组成,每个字符串以字符CR和LF结尾。

我们的应用程序的目标是什么?当生产线更换我们喜欢的产品时,请更换检重秤产品进行测量。

如果您愿意,可以在以下链接中找到更多信息

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

我们在使用什么?

•.NET 4.5,

•Windows 10,

•TCP / IP(通过以太网电缆直接连接)

测试:

如上所述,设备应接受来自PC的指令。 我们设法通过以太网与设备建立连接,但是当我们发送指令时,设备没有响应。 下面,您可以看到我们使用的代码。

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

}

1 个答案:

答案 0 :(得分:0)

邮件实际上应该是"FB_INFO\r\n",而不是"FB_INFO(CR)(LF)"CRLF是“回车”和“换行”的缩写,是2个特殊控制字节。

设备的响应应该类似FB_INF 1 S R或类似。字符S,R和其他可能的字符(例如G和M)指的是设备的可用许可证。

有关更多信息,您还可以联系公司Objective,该公司为Mettler / Garvens和其他设备(用Java编写)提供了出色的设备驱动程序。

另请注意,有一个更新版本的协议说明:1.10