2011-07-28 4 views
1

나는 rs232를 사용하여 저울에서 데이터를 읽을 것으로 예상되는 프로젝트를 가지고 있습니다. 저울의 출력 형식은 "L00000"입니다. 문제는 저울이 "L00000, L00001, L00002, L00003, L00004"와 같이 무게가 나가기 때문에 지속적으로 데이터를 전송한다는 것입니다. 이 경우 DB에 저장 될 마지막 부분 "L00004"를 얻는 것이 좋습니다. 내 코드는 다음과 같습니다. 친절하게 개선하도록 도와줍니다. 감사합니다rs232 포트에서 얻은 버퍼 데이터 처리

데이터가 구분되는 방법
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 

namespace WindowsFormsApplication5 
{ 
public partial class Form1 : Form 
{ 
    private List<byte> PortBuffer = new List<byte>(); 
    SerialPort comPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One); 
    public Form1() 
    { 
     InitializeComponent(); 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 


     if (comPort.IsOpen) 
     { 
      comPort.DiscardOutBuffer(); 
      MessageBox.Show("Data cleared"); 
      comPort.Close(); 
     } 

     if(!comPort.IsOpen) 
     { 
     comPort.Open(); 
     //sample of data as written by the scale. How can I get the last chunk only so that I format it for my needs 
     comPort.Write("L00002 L00002 L00002"); 

     int bytes = comPort.BytesToRead; 
     byte[] buffer = new byte[bytes]; 
     comPort.Read(buffer, 0, buffer.Length); 

     comPort.DataReceived += new SerialDataReceivedEventHandler(data_received); 

     comPort.Close(); 
     } 
     } 
    public void data_received(object sender,SerialDataReceivedEventArgs e) 
    { 
     MessageBox.Show("test" + comPort.ReadExisting().ToString()); 

    } 

    } 
} 

답변

1

의 공백 A, 또는 전혀 seperation에인가?

질문처럼 자사가 다음

var data=comPort.ReadExisting().ToString(); 
var result=data.Split(',').Last(); 
+0

아니, 그래서 내가 분할의 공간으로 대체 ('')하지만이 작동하지 않을 것 같으면. 내 버퍼 데이터를 잘 캡쳐했다고 생각하십니까? 'code' int bytes = comPort.BytesToRead; byte [] buffer = 새 바이트 [바이트]; comPort.Read (buffer, 0, buffer.Length); – KIUFELIX

+0

예, 이미 데이터를 버퍼로 읽은 것 같습니다. 첫 번째 코드에서 읽기 명령을 제거하십시오. –

+0

그 3 줄을 제거한 다음 메시지 상자에서 가져온 정확한 데이터를 게시 하시겠습니까? –