2017-10-15 28 views
0

我已經開發了使用C#.Net從稱重橋機器獲取重量的應用程序。我嘗試了很多方法,但是,沒有從稱重橋機讀取正確的數據格式重量。我得到的輸出喜歡從串口規模獲取文本框中的所需輸出

00000001Kg00000001B00000001B00000001B00000001B00000001B00000001B00000001B

從串行port.i不斷得到想從稱重橋架整機重量我的代碼如下:

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

我怎麼能拿正確的體重保存到我的數據庫?爲了得到正確的重量它必須像

00000001公斤

實時並根據電子秤的重量變化本身。

+0

你肯定沒有在數據中的任何控制字符?我假設這是串行端口尺度在測量之間發送的數據,以便能夠正確處理數據。 –

+0

不,我不確定,但它總是給我不斷接收字符串,因爲我上面顯示...最重要的是我沒有解決這個 – mynameiskhan

+0

所以,也許你應該再檢查它?我們不能爲你做到這一點。 –

回答

0

您的最後一行代碼只是將所有內容附加到文本框中。您可能需要事先將其清除,並可能嘗試檢查您收到的數據是否爲您不需要的字符串(00000001B),並且不要添加它。

記錄數據,你可以使用TextChanged事件的文本框...只是一個想法...

+0

我這樣做了,但它不能在每次接收數據後清除文本框。 – mynameiskhan