【问题标题】:Putting 2 different data values, where the data comes from serial port, into an array将 2 个不同的数据值(数据来自串行端口)放入一个数组
【发布时间】:2019-12-15 18:53:17
【问题描述】:

我有一个硬件,它通过串行端口连续发送温度和湿度值。例如(25 摄氏度和 47% 湿度);

25
47
25
47

所以它一直这样发送。

我正在使用此代码接收这些值:

data = serialPort.ReadLine();

data 变量在每个接收周期改变它的值。我想将这些值保存在一个数组中并刷新它们。第一个值(温度)必须在索引为 0 的数组中,与索引为 1 的第二个值(湿度)相同。data_array[0] 必须是 25data_array[1] 必须是 47

有什么办法吗?

Edit_1

还有一个问题我想问。我想将这些值写入文本框的文本。例如;当我尝试textBox_Temp.Text = data_array[0].ToString(); 时会出错。

【问题讨论】:

    标签: c# arrays serial-port serial-communication


    【解决方案1】:

    如果您希望每次连续读取两个数字,为​​什么不简单地读取两个输入?

       data_array[0] = serialPort.ReadLine();
       data_array[1] = serialPort.ReadLine();
    
    

    其中 data_array 是一个简单的int[] data_array = new int[2];

    我相信你有一个循环来继续阅读这些值。在循环外初始化data_array,每次都串行更新值。

    【讨论】:

    • 首先谢谢你。有效。现在如何将这些不同的值写入不同的 TextBox 文本中。
    • 这应该是 = 签名.. 我的错。您可以将data_array[0].ToString() 的值分配给textBox.Text。如果这对您的问题有帮助,请将帖子标记为已回答
    • 我尝试了textBox_Temp.Text = data_array[0].ToString(); 并给出了类似System.InvalidOperationException: 'Cross-thread operation is not valid: The' txtBox_temperature 'control was accessed from another thread other than the thread from which it was created.' 的错误。
    • 这是一个不同的问题,不确定如何在以不同方法读取值的同时更新 UI 的字段。
    • textBox.Temp.Invoke(new MethodInvoker(delegate { textBox.Temp.Text = data_array[0].ToString(); })); 没有出错,目前正在运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多