gpt4 book ai didi

c# - 从串口读取并显示结果

转载 作者:行者123 更新时间:2023-11-30 12:48:02 25 4
gpt4 key购买 nike

这是我到目前为止想出的代码:

protected void Page_Load(object sender, EventArgs e)
{
try {
serialPort1.PortName = "COM4";
serialPort1.BaudRate = 9600;
serialPort1.Open();
this.serialPort1.DataReceived += new
System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
Label1.Text = "Connected";
UpdatePanel1.Update();
}
catch (Exception ex) {

}
}

string x = "";
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e){

x = serialPort1.ReadExisting();
TextBox1.Text = x;
UpdatePanel1.Update();
}

问题是代码运行后文本框仍然是空的...(我使用 AJAX 更新面板刷新文本框文本)问题是当我在调试期间设置断点时,从串口接收到的数据在变量并设置为新的文本框文本,但是当代码完成时没有显示任何内容......我很确定更新面板可以工作,因为我已经测试过了。

PS 串行端口连接到 rfid 阅读器,我正在尝试读取标签。我已经成功编写了一个 Windows 窗体应用程序来执行我想要的操作,但我需要将它迁移到 ASP.NET

最佳答案

只有当阅读器连接到服务器(而不是运行浏览器的机器)时,才能在 ASP.NET 应用程序中从串口读取数据。它似乎工作只是因为你在本地测试它。

初始页面呈现完成后,serialPort1 对象将被销毁。 ASP.NET 页面仅在页面呈现之前存在。然后它被摧毁。下一个请求再次重新创建所有对象。因此,每次浏览器访问服务器时,串口都会被打开。

UpdatePanel 仅将经典浏览器请求更改为 AJAX - 它不会更改 ASP.NET 服务器处理的工作方式。它仍然是客户端浏览器触发的请求-响应 Action 。在您的情况下,UpdatePanel 必须在计时器上查询服务器。

最好的办法是根据您的 Windows 窗体代码创建一个 ActiveX 控件并将其嵌入您的网站。

关于c# - 从串口读取并显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15197052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com