[问题] textBox数值更新

楼主: highbr520 (工数煞到地平线)   2020-03-09 21:55:24
各位先进大家好,小弟在做关于传感器方面的应用
我是使用TwinCAT与传感器建立PLC变量
并使用C#的ADS协议来获取我要的传感器数值
这部份程式大概会是这样:
private TcAdsClient tcAdsClient=new TcAdsClinet();
private int hvar=new int();
int dataone;
void DataLoad ()
{
hvar=tcAdsClinet.CreateVariableHandle("Plc");
dataone=(int)tcAdsClient.Readany(hvar,typeof(int));
textBox.Text=Convert.ToString(dataone);
}
private void timer_Tick(object sender, EventArgs e)
{ DataLoad
}
以上主要是将我的传感器数值建立并显示在textBox
我目前想做到的是能够透过这个传感器的数值变化
来做为我机器移动的判断依据
将我的机器移动到我想要移动到的位置
这边的控制程式是以button去写的
我的这部份程式大概是这样:
private void button_Click(object sender,EventArgs e)
{
Move (1,2,3);//移动至(1,2,3)座标位置
for(int j=2;j<10;j++)
{
if(double.Parse(textBox.Text)<5)
{
Move (1,j,3+1);
}
else
{
Move (1,j,3-1);
}
}
}
程式主要的问题在于这个传感器数值textBox
它一直是在接口上刷新,而我时时在监测数值
而当我把textBox.Text当成条件式来使用时
条件式会直接读取button按下去的瞬间的textBox值
来判断它要走哪一行程式,在机器移动过程中
它就不会再去做判断,假设button按下去时数值为3
它就只会执行Move (1,j3+1);
在这个循环走完前都只走一样的路径
即使过程中textBox数值改变都不会执行另外一行
我不太晓得问题出在哪里,还是不能把textBox.Text
这个控件来当作判断式呢?
主要希望它能在过程中也能时时得到传感器的值
且根据这个值来做它必须移动到的点
或者有没有可能这个跟多执行绪有关呢?
手机排版请见谅,希望能跟各位大大讨论
小弟感激不尽,谢谢各位
作者: konkonchou (卡卡猫)   2020-03-09 23:26:00
你需要一只BackgroundWorker去处理timer_Tick或是IoT最常用的是异步设计, 可以去了解一下 async和 await 异步程式设计方式
作者: Nilife (Al-Qaeda)   2020-03-10 07:29:00
先把text存到区域变量,判断式读这个变量?
作者: s4300026 (s4300026)   2020-03-10 11:55:00
application.doeventform thread 在做事情时不会更新ui所以tb.text 会拿到一样的值
楼主: highbr520 (工数煞到地平线)   2020-03-10 14:57:00
谢谢各位 我会尝试看看的!

Links booklink

Contact Us: admin [ a t ] ucptt.com