c# Serial comms 读取数据并添加到数组
c# Serial comms Read data and add to an array
我对这个 Windows 表格申请有些迷茫:(
我有一个数据流以 \W0987654321\L555666444\W3456789900\L9842429009 的格式到达串行端口,因此它以 \L 和 \W
的不同值重复
我需要拆分 \W 和 \L 值并将它们添加到一个数组中,该数组将根据需要进行扩展。然后将它们实时绘制在图表上。
我迷路的地方是如何读取端口以在它到达后获取每个完整值而不是截断它。我只是无法理解这个所以任何帮助都会很棒...
我这样打开端口:
port.PortName = "COM9";
port.BaudRate = 38400;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.DtrEnable = false;
port.Handshake = Handshake.None;
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived_1);
port.Open();
textBox1.Clear();
port.DiscardInBuffer();
port.DtrEnable = true;
目前我已经全部写入文本框:
private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
InputData = port.ReadExisting();
if (InputData != String.Empty)
{
this.BeginInvoke(new SetTextCallback(SetText), new object[] { InputData });
}
}
private void SetText(string text)
{
this.textBox1.AppendText(text);
}
显示所有数据OK
var readQueue = string.Empty;
private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
readQueue += port.ReadExisting();
while (readQueue.Substring(1).Contains(@"\"))
{
var slashPos = readQueue.IndexOf(@"\",1);
var completeEntry = readQueue.Substring(0, slashPos);
Console.WriteLine(completeEntry);
readQueue = readQueue.Substring(slashPos);
}
}
我对这个 Windows 表格申请有些迷茫:(
我有一个数据流以 \W0987654321\L555666444\W3456789900\L9842429009 的格式到达串行端口,因此它以 \L 和 \W
的不同值重复我需要拆分 \W 和 \L 值并将它们添加到一个数组中,该数组将根据需要进行扩展。然后将它们实时绘制在图表上。
我迷路的地方是如何读取端口以在它到达后获取每个完整值而不是截断它。我只是无法理解这个所以任何帮助都会很棒...
我这样打开端口:
port.PortName = "COM9";
port.BaudRate = 38400;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.DtrEnable = false;
port.Handshake = Handshake.None;
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived_1);
port.Open();
textBox1.Clear();
port.DiscardInBuffer();
port.DtrEnable = true;
目前我已经全部写入文本框:
private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
InputData = port.ReadExisting();
if (InputData != String.Empty)
{
this.BeginInvoke(new SetTextCallback(SetText), new object[] { InputData });
}
}
private void SetText(string text)
{
this.textBox1.AppendText(text);
}
显示所有数据OK
var readQueue = string.Empty;
private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
readQueue += port.ReadExisting();
while (readQueue.Substring(1).Contains(@"\"))
{
var slashPos = readQueue.IndexOf(@"\",1);
var completeEntry = readQueue.Substring(0, slashPos);
Console.WriteLine(completeEntry);
readQueue = readQueue.Substring(slashPos);
}
}