c# - 如何从arduino检索值到asp.net
问题描述
我无法将值从 arduino 检索到 asp.net 中的变量,然后将其返回到正在执行返回视图的图表中。
图表全部完成,我想做的是从恒温器中获取值并将它们添加到图表中
检索值代码(可能是错误的)
void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
float c1 = 1.009249522e-03f, c2 = 2.378405444e-04f, c3 = 2.019202697e-07f;
float R1 = 10000f;
SerialPort port;
string data = string.Empty;
port = (SerialPort)sender;
// read the data from the port
data = port.ReadExisting();
// print Arduino data to the screen
int V0 = Int32.Parse(data);
double R2 = R1;
double logR2 = (double)Math.Log(R2);
double T = (1f / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
Tc = T - 273.15f;
float Tf = (Tc * 9f) / 5f + 32f;
// you could work with Tc and Tf if you want, (stok data or other)
}
Arduino代码
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
Tc = T - 273.15;
Tf = (Tc * 9.0)/ 5.0 + 32.0;
Serial.print("Temperature: ");
Serial.print(Tf);
Serial.print(" F; ");
Serial.print(Tc);
Serial.println(" C");
delay(500);
}
解决方案
我建议你试试这样:
1.Arduino代码:
loop{
Vo = analogRead(ThermistorPin);
Serial.println(Vo);
delay(500);
}
2.然后用Arduino软件的Serial Monitor检查,应该看到Vo每0.5秒更新一次。
3.在C#程序中,在表单中添加一个TextBox(这是为了测试,把它变大,命名为txtInData)。
4.然后试试下面的C#代码,
public Form1()
{
InitializeComponent();
serialPort.Open();
}
void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
String data = serialPort.ReadExisting();
CheckForIllegalCrossThreadCalls = false;
txtInData.Text += data;
}
catch (Exception ex)
{
MessageBox.Show("Serial Port Read Error: " + ex.ToString(), "Error");
}
}
5.运行C#程序,检查是否有与步骤2类似的结果。如果没有,请尝试添加serialPort.DataReceived += serialPort_DataReceived;
后serialPort.Open();
。
6.您现在应该可以解析传入的数据了。您仍然可以使用 TextBox 来检查您的计算结果。不再需要时删除 TextBox。
希望有帮助!
推荐阅读
- java - 有没有更好的方法来编写这段代码?(在数组中查找最小数和最大数)[Java]
- kotlin - 在不使用正则表达式的情况下有效地将 Kotlin 字符串分解为固定长度的子字符串
- amazon-web-services - 通过 AWS Glue 执行 Redshift 过程
- php - Prestahop 1.7.6 如何删除/禁用产品页面?
- c++ - 如何通知服务驱动程序卸载?
- spring-boot - Spring Boot logback 无法记录到 kubernetes 多个 pod 上的文件
- c# - C# 7.3 IAsyncEnumerator 对象的状态无效
- reactjs - React 异步状态更新 setState 参数(函数与非函数)
- mxgraph - mxgraph 如何使边缘可放置并在源和目标之间插入新顶点
- http - 如何在颤动中解析这个json?