我有一个项目,在这个项目中,我需要使用rs232从刻度中读取数据。称重的输出格式为"L00000".My问题是称重时,称重为"L00000,L00001,L00002,L00003,L00004“时,称重会不断地发送数据。在这种情况下,我感兴趣的是获得要存储在db中的最后一个部分"L00004“。以下是我的代码:请帮助我改进它。谢谢
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());
}
}
}发布于 2011-07-28 18:30:45
数据是如何分隔的,空格是a,还是不分隔?
如果是,就像问题中的那样
var data=comPort.ReadExisting().ToString();
var result=data.Split(',').Last();https://stackoverflow.com/questions/6857408
复制相似问题