C# asp.net /Boolean /Arduino
本文关键字:Boolean Arduino net asp | 更新日期: 2023-09-27 18:02:48
你好,我在webform上有一个按钮,我想在第一次点击它发送"1"到arduino在第二点击"0",并持续这样,我编码它像这样:
Boolean test == false;
protected void Button3_Click(object sender, EventArgs e)
{
if (test == false)
{
serijska_vrata.Open();
serijska_vrata.Write("1");
serijska_vrata.Close();
test = true;
}
if(test == true)
{
serijska_vrata.Open();
serijska_vrata.Write("0");
serijska_vrata.Close();
test = false;
}
}
Serijska_vrata是SerialPort的名称;我有一种感觉,像布尔总是重置为假,从来没有得到值"真",我能做些什么来修复这个,请帮助,我是一个初学者在编程。
提前感谢您的帮助
是的,它永远不会写true,因为在ASP中。Net每次你发回给服务器,整个代码将被执行并呈现为HTML,然后服务器将处理整个对象,在下一次服务器将再次创建测试对象,并分配false给它。最好的解决方案是将布尔值的状态保存在一个隐藏值中,然后从中读取并更新它,或者您可以使用session,但如果会话状态过期,则需要处理会话状态。
这是一个webform应用程序,这意味着你可以在任何地方点击这个按钮,那么你想在哪里保持当前登录用户或当前会话的"测试"状态?如果你想在当前会话中保持"test"状态,请尝试使用ViewState保存"test"值。
private bool _test;
public bool test
{
get{
bool.TryParse(ViewState["test"],out _test);
return _test;
}
set{
ViewState["test"]=value;
}
}
protected void Button3_Click(object sender, EventArgs e)
{
if (test == false)
{
serijska_vrata.Open();
serijska_vrata.Write("1");
serijska_vrata.Close();
test = true;
}
if(test == true)
{
serijska_vrata.Open();
serijska_vrata.Write("0");
serijska_vrata.Close();
test = false;
}
}
不需要检查== true,
if(test)
与
相同if (test==true)
你需要稍微改变一下你的逻辑。
if (test)
{
serijska_vrata.Open();
serijska_vrata.Write("0");
serijska_vrata.Close();
test = false; }
// Add the else here and remove the if otherwise it
// will execute the if statement and test will always be false
// It also helps if test is not initialized.
else
{
serijska_vrata.Open();
serijska_vrata.Write("1");
serijska_vrata.Close();
test = true;
}