2017-05-30 5 views
1

私はMetro-Toledo Garvens GmbH "Gシリーズ"チェックウェイガーのアプリケーションをGARECOにインストールしようとしています。リモコンガレコxシリーズ

小切手とは?秤量器は生産ラインの最後の部分であり、製品仕様の通常のパラメータ内の重量を有する場合、製品重量を測定する。デバイスには内部メモリがあり、製品ごとの製品仕様をシステムにロードし、デバイス画面から製品を簡単に変更することができます。

ガーコとは何ですか? GARVENSチェックウェイザーの遠隔操作には、Garvens Remote Controlの略語である「GARECO」という名前が付けられました。

リモートコントロール命令は、シリアルインターフェースを介して外部PCから計量端末に送信することができ、すべてのリモートコントロールアクションはPCによって実行されます。小切手は認識された指示に反応し、対応する動作を解除する。命令はASCII文字列で構成され、それぞれの文字列はCRおよびLFで終わります。

私たちのアプリの目標は何ですか?生産ラインが製品を変更するとき、私たちは好きなように製品を変更します。あなたは私たちが何を使っている

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

を好きなら

さらに詳細には、次のリンクで見つけることができますか? (イーサネットケーブルを介して直接接続されている)TCP/IP

テスト•.NET 4.5•

、Windowsの10•

上記の指示通り、デバイス必要があります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); 
    } 
} 

}

答えて

0

メッセージは実際"FB_INFO\r\n"なく、"FB_INFO(CR)(LF)"なければなりません。 CRおよびLFは、2つの特別な制御バイトである「キャリッジリターン」および「ラインフィード」の略語です。

デバイスの応答は、FB_INF 1 S Rまたはそれに似ています。文字S、Rおよび可能な他の文字(例えば、GおよびM)は、デバイスの利用可能なライセンスを参照する。

詳細については、Objectiveにお問い合わせください。Mettler/Garvensおよびその他のデバイス用の優れたデバイスドライバ(Javaで書かれています)。

また、プロトコル記述のより新しいバージョンがあることに注意してください:1.10

関連する問題