C#在主程序中使用来自串口的日期

伊格尔B

我需要从 COM 端口读取数据。数据来自Arduino,它需要由C#程序解析并在主机PC上做某些事情。我可以读取数据,但只能使用无休止的“while true”循环。这阻止了要执行的表单和其他任务。所以目前它看起来像这样:

while (true) {
                oneLine = myPort.ReadLine();
                this.Invoke(new EventHandler(display_data_Event));

                // TBD: add analysis of data from port
                // TBD: execute according to data from Arduino
            }

处理程序:

        private void display_data_Event(object sender, EventArgs e)
    {
        string curr_time = DateTime.Now.ToString("h:mm:ss tt");
        port_in_TextBox.AppendText(curr_time + "       " + oneLine + "\n");
    }

所以我可以将数据显示到文本框中,但不能在我的主程序中使用它。

如何仅在事件发生时使用“一行”字符串,而不是“while true”?我尝试从处理程序调用函数 - 我猜它失败了,因为它是另一个线程。所以也许问题是如何将字符串从一个线程共享到另一个线程。

绿色奥德曼

我迷路了,这里是核心程序:https : //docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.datareceived?view=netframework-4.8

现在,问题是您需要一个输入还是多个输入。如果是前者,添加AutoResetEventso 主程序将被阻塞,读取数据将发出解除阻塞的信号。或者,如果有很多行,请在您阅读每一行之后在事件中添加您的“主要”操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在应用程序中使用来自 Angular 库的资产

在方法C#中使用来自函数的变量

在C ++中使用来自delphi dll的回调

在 NodeJS 中使用来自 JSON 的数据

在公式中使用来自selectInput的选择

在 javascript 中使用来自 API 的数据

C主程序与Java主程序

如何在其django应用程序中使用来自Paypal的Webhooks

在Perl或Neko中使用来自64位应用程序的32位库

在Spring应用程序属性中使用来自不同属性文件的变量

在程序中使用来自resources.resx的嵌入式文件

如何在应用程序中使用来自 url 的数据

AngularJS。在整个应用程序中使用来自不同控制器的值/范围

如何在主程序中使用构造函数注入

使用来自 C 库的损坏符号的 C++ 程序导致未定义符号

在不持有GIL的情况下在Python C Extension中使用来自PyObjects的数据

Azure AD - 在 C# Web API 中使用来自 Angular SPA 的图形 API 访问令牌

如何在 Python 代码中使用来自 IDA 的反编译 C 函数?

在 Big Query 中使用来自 Unix 时间的日期和时间列创建 Data Studio 报告表

使用来自 strptime 的日期时间数据绘制直方图

使用来自JDBC输入的日期时间替换@timestamp

使用React Hooks在ReactJS中使用来自StencilJS的事件?

如何在谷歌应用程序脚本中使用来自 2 列的 concat 值作为参数执行 VLOOKUP

在 R 中使用来自 dplyr 的 %>% 运算符

在python中使用来自不同容器的Kafka消息

在Groovy中使用来自JUnit5的assertThrows

在QueryOver语句中使用来自foreach的值

在ROS中使用来自多个主题的数据-Python

在 Swift 问题中使用来自 Firebase 查询的数据