定时器Timer 指定时间触发一个事件(比如定时发送短信)

package io.renren;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Test
{
    public static void main(String[] args)
    {
        Calendar calendar = Calendar.getInstance();
        
        /**
         * 指定触发的时间      现在指定时间为   2013年10月27号  15点  43 分 1 秒时触发
         */
//        calendar.set(Calendar.DAY_OF_MONTH,16);//设置日期为27号
//        calendar.set(Calendar.MONTH, 8);//设置日期为11月份   这里10表示11月份    11就表示12月份
//        calendar.set(Calendar.HOUR_OF_DAY, 11); //设置15点的时候触发
//        calendar.set(Calendar.MINUTE, 26); //设置43分钟的时候触发
//        calendar.set(Calendar.SECOND, 1); //设置第一秒的时候触发
        calendar.set(2020, 8, 16,11,37,10);

        Date time = calendar.getTime();
        Timer timer = new Timer();
        timer.schedule(new RemindTask(), time); 
    }
 
}

class RemindTask extends TimerTask {
    public void run() {
        System.out.println("你指定2020-9-16号11:30:01分执行已经触发!");
    }
}

 

在C#中,你可以使用`System.Timers.Timer`类来创建一个定时器,这个定时器可以配置为在指定时间间隔后触发事件。要实现定时器定时触发串口接收的功能,你可以将串口接收逻辑放在定时器事件处理方法中。以下是一个简单的示例代码来说明如何实现这一功能: ```csharp using System; using System.IO.Ports; using System.Timers; class SerialPortTimer { private SerialPort serialPort; private Timer timer; public SerialPortTimer(string portName, int baudRate) { serialPort = new SerialPort(portName, baudRate); // 配置串口参数(例如波特率等) timer = new Timer(1000); // 设置定时器每1000毫秒(1秒)触发一次 timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); // 绑定定时器事件 } private void timer_Elapsed(object sender, ElapsedEventArgs e) { // 检查串口是否打开并可读 if (serialPort.IsOpen && serialPort.BytesToRead > 0) { try { string receivedData = serialPort.ReadLine(); // 读取一行数据 // 处理接收到的数据 } catch (Exception ex) { // 异常处理 } } } public void Start() { if (!serialPort.IsOpen) serialPort.Open(); // 打开串口 timer.Enabled = true; // 启动定时器 } public void Stop() { timer.Enabled = false; // 停止定时器 if (serialPort.IsOpen) serialPort.Close(); // 关闭串口 } } class Program { static void Main() { SerialPortTimer serialTimer = new SerialPortTimer("COM3", 9600); serialTimer.Start(); // 在合适的时候调用Stop()停止定时器和串口 // serialTimer.Stop(); } } ``` 在上述代码中,我们定义了一个`SerialPortTimer`类,该类在构造函数中初始化串口和定时器,并且将定时器的`Elapsed`事件绑定到了一个事件处理方法`timer_Elapsed`。这个方法会在每次定时器触发时被调用,用于检查串口是否有数据可读,并读取数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值