【问题标题】:Catch serial port stream to the database捕获串口流到数据库
【发布时间】:2018-02-09 03:42:56
【问题描述】:

我遇到了一个应用程序,该应用程序应该从该字符串接收来自串行端口流(工业重量)的数据,我只需要削减称重值并将其发送到数据库。

我遇到的唯一问题是抓线并削减称重值。

这是我将串行流捕获到 textBoxes 字段中的方法:

public void write_to_field(object sender, EventArgs e)
{
     if (textBox1.Text.Length <= Convert.ToInt16(strLenghBox.Text))
     {
           string DispString;
           DispString = serialPort1.ReadLine();
           textBox1.AppendText(DispString);
      }
      else
      {
           textBox1.Text = "";
      }
 }

在 texbox 字段中,我有连续的数据流,当其中的字符数达到每个 (strLenghBox.Text) 字符数时,我清除文本框。

但它工作不正确,因为我有偏移量(我可能不是从开头开始获取字符串,我将获取并偏移)而且我无法捕获重量值以将其传递给数据库,因为该字段未满时间和我有一个偏移量。

我想在这种情况下我可能会走错路。

【问题讨论】:

  • 我实际上是这样启动该方法的: private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { this.Invoke(new EventHandler(write_to_field)); }
  • 您好。我们社区中的许多人有时会说,每次他们看到关于软件工程师的性别假设时,他们都会担心人们会感到被排斥。我想知道,您能否尽量避免在您的帖子中添加面向男性的问候和代词,以营造一个更受欢迎的环境?谢谢。

标签: c# string winforms stream serial-port


【解决方案1】:

您正在尝试从可以发送碎片数据的源中检索数据。为确保数据完整性,您可能需要:

  • 无论流中的格式如何,都可以堆积数据的队列
  • 一种删除数据直到检索到完整值或队列为空的方法
  • 一种检测是否已检索到完整值的方法(您一直不清楚数据在流中是如何分隔的,例如换行符等分隔符)

这样您就可以将数据读取与值检测和显示分开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多