作者chris70211 (克里斯)
看板C_Sharp
标题[问题] 用TIMER定时发送资料
时间Fri Jan 4 11:42:46 2013
小弟写了一个用232传输资料的程式
想利用timer达到定时发送资料的功能(如每隔两秒发送一次)
发送程式
{
if (timer1.Enabled==false)
{
string s1 = "\x02" + Convert.ToString(A_kg) + "\x0d" + "\x0a";
serialport.Write(s1);
timer1.Enabled=true;//开启计时器
}
}
private void timer1_Tick(object sender, EventArgs e)
{
counter++
if (counter==3)//三秒
{
timer1.Enabled=false;关闭计时器
}
}
可是却没办法正常启动 似乎计时器无法触发
想问问要怎麽改才能照所需的功能执行
新手一枚 请大家多多指教<(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 39.12.111.196
1F:→ totte:您是指timer1.Start(); ?? 01/04 12:47
恩 我是用VS2008 c#
想知道要怎麽在发送资料的执行绪插入一个TIMER(时间)达到定时发送的功能
刚接触C# 想问问要怎麽写才正确>"<
※ 编辑: chris70211 来自: 27.246.57.225 (01/04 13:25)
2F:→ hoihkj:counter有归零? 01/04 14:21
3F:→ rainbow001:timer不用关闭,应该要一直计数.. 01/04 15:59
4F:→ rainbow001:另外在你的发送端程式,加个判断式 01/04 16:00
5F:→ rainbow001:if(counter%2==0) {...} 01/04 16:01
6F:→ ssccg:两秒一次就timer1.Interval = 2000 就好 01/04 17:51
7F:→ ssccg:要定时做的动作是写在timer1_Tick里 01/04 17:55
8F:→ tsczx:如果是写Service触发不是写在Tick,另外预设值Enabled有开? 01/06 18:39
由於在发送资料之前有利用usb将资料接收并运算 如果将发送资料的动作写在Tick里
由於我是用Tick.Emabled=true 但这样好像不会正确的转进Tick里动作
因为动作需求 是利用一个button进行资料接收运算及发送
无法将发送资料的动作写在另一个BUTTON
PS.小弟真的是新手一枚 有什麽观念不清的地方 请大家多多见谅!!
也感谢大家的回覆 <(_ _)>
※ 编辑: chris70211 来自: 39.10.231.185 (01/07 08:39)
9F:→ tsczx:我不是很看得懂你的问题跟需求,可以写清楚点,试着跑debug看 01/07 22:42
刚接触c#两三个礼拜而已 之前主要是用matlab再写程式
所以一些物件导向 执行绪的观念都不是很清楚 (还在努力中)
只是有监於时间的紧迫性没办法慢慢学 只好先从看别人的code 改code着手
目前的程式是用usb接收资料 然後根据时间设定来发送资料(232)
而主要的动作都写在接收资料的BUTTON内 所以不知道要怎麽样将接收资料的BUTTON与
计时器的BUTTON做结合 至於将主动做写在计时器这一点目前还在思考怎麽做
不知道能不能写成像下面这样:
BUTTON1~主要动作
{
接收资料
232发送命令同时进行计时&设定时间(例如三秒)
到达设定时间(三秒)
将第三秒撷取到的这笔资料再透过232发送出去
}
BUTTON2~计时
{
count++
if (count==3){关闭计时器}
}
接收资料的部分不需要跟计时器同步动作(应该没办法吧)
之前试着用 timer.enable=true或false 不过似乎没办法触发
所以想了解应该怎麽写才能达到我的动作需求
如果有什麽观念错误 请体谅原PO还是个学不到一个月的菜鸟吧Q__Q
※ 编辑: chris70211 来自: 114.38.114.90 (01/07 23:57)
10F:→ ssccg:timer是每过一段时间(timer.Interval)做同一件事 01/08 03:36
11F:→ ssccg:你需要的等一段时间後做一次事情,应该用Thread.Sleep(3000) 01/08 03:39
12F:→ ssccg:你还是先讲清楚你是要定时"每"x秒发一次 01/08 03:44
13F:→ ssccg:还是按按钮後,发送命令→等x秒→发送命令→结束 01/08 03:44
14F:→ hoihkj:有没完整专案档可提供下载? 01/08 07:40
S大 如你所说是按完按钮後发送命令->等x秒->接收usb 资料->发送下一个命令
保持这个回圈 秒数设定的部分会放在阵列 如果是这样的动作的话是否用
Thread Sleep即可?
H大我是抓网路上的generic_hid_cs这是档名 可是我忘记在哪抓得了>"<
如果你有需要
http://www.lvr.com/usbcode.htm 这个对你应该有用
※ 编辑: chris70211 来自: 39.12.23.249 (01/08 08:42)
15F:→ hoihkj:XD HID 我只是想解你的timer问题 不是很确定 若只是要收到 01/08 09:03
16F:→ hoihkj:资料後delay3S送232写在同个button1应该可以达到阿 01/08 09:04
17F:→ hoihkj:btn1>收usb>delay3s>送232 这样吗? 01/08 09:10
18F:→ hoihkj:要loop就给for回圈或timer内call button1 01/08 09:16
19F:→ hoihkj:for UI可能会卡住 用timer也许比较理想 01/08 09:16
20F:→ tsczx:等X秒後再做动作,是用Sleep,想要按下去"每"两秒抓一次用 01/08 11:16
21F:→ tsczx:Timer,而且我有点困惑,你要先等待两秒,再去抓,那Timer设长一 01/08 11:23
22F:→ tsczx:比较好,Sleep两秒>>每两秒执行Timer,会只有第一次Sleep两秒 01/08 11:25