2017-10-15 16 views
0

私はC#.Netを使用して秤量ブリッジマシンから重量を取得するためのアプリケーションを開発しました。私は多くの方法を試していますが、体重ブリッジマシンから正しいデータフォーマットの重量を読み取っていません。シリアルポートスケールからテキストボックスに希望の出力を取得

private void Form1_Load(object sender, EventArgs e) 
    { 
     string[] portNames = SerialPort.GetPortNames(); 
     foreach (var portName in portNames) 
     { 
      comboBox1.Items.Add(portName);    
     } 
     comboBox1.SelectedIndex = 0;  
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (_serialPort != null && _serialPort.IsOpen) 
      _serialPort.Close(); 
     if (_serialPort != null) 
      _serialPort.Dispose(); 

     _serialPort = new SerialPort(comboBox1.Text, BaudRate, Parity.None, 8, StopBits.One); 
     _serialPort.DataReceived += SerialPortOnDataReceived; 
     _serialPort.Open(); 
     textBox1.Text = "Listening on " + _serialPort.PortName + "...\r\n";   
    } 
    private delegate void Closure(); 
    private void SerialPortOnDataReceived(object sender, SerialDataReceivedEventArgs serialDataReceivedEventArgs) 
    { 
     if (InvokeRequired) 
      BeginInvoke(new Closure(() => { SerialPortOnDataReceived(sender, serialDataReceivedEventArgs); })); 
     else 
     { 
      int dataLength = _serialPort.BytesToRead; 
      byte[] data = new byte[dataLength]; 
      int nbrDataRead = _serialPort.Read(data, 0, dataLength); 
      if (nbrDataRead == 0) 
       return; 
      string str = System.Text.Encoding.UTF8.GetString(data); 
      textBox1.Text += str.ToString(); 
     } 
    } 

がどのように私は得ることができます:私は私のコードが下に表示されたブリッジマシンの重量を量るから重量を取得したい

が連続してシリアルport.iから入手00000001Kg00000001B00000001B00000001B00000001B00000001B00000001B00000001B

のような出力を取得していますそれを私のデータベースに保存するための正しい重み?右の重量を得るために、それはリアルタイムで

00000001キロ

ようになると、スケールの重量を量るために応じて自分自身を変更する必要があります。

+0

あなたはデータ内の任意の制御文字がありませんか?私は、データを適切に処理できるようにするために、シリアルポートのスケールが測定値の間に送信するものだと考えています。 –

+0

いいえ私は確信していませんが、私は常に私が上記のように連続的に文字列を受け取ることを与えています...最も重要なことは私にはこれのための解決策がありません – mynameiskhan

+0

だから多分あなたはそれをチェックする必要がありますか?私たちはあなたのためにそれをすることはできません。 –

答えて

0

あなたの最後のコード行は、すべてをテキストボックスに追加するだけです。あらかじめクリアしておき、受信したデータが望ましくない文字列(00000001B)であるかどうかを確認し、追加しないでください。あなたがテキストボックスのTextChangedイベントを使用することができ、データをログに記録する

、...ちょうどアイデア...

+0

私はそれをしましたが、すべての受信データの後にテキストボックスをクリアするために働いていません。 – mynameiskhan

関連する問題