Timer receive_timer;
Timer send_timer;
public Serial_Xray()
{
port=new SerialPort();
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
receive_timer= new Timer();
send_timer = new Timer();
receive_timer.Interval = 500;
receive_timer.Tick += new System.EventHandler(this.receive_timer_Tick);
send_timer.Interval = 1000;
send_timer.Tick += new System.EventHandler(this.send_timer_Tick); for (int i = 0; i < 1024; i++)
{
readbuffer[i] = 0;
}
}
public override void CMD_Send(byte[] cmd)
{
try
{
port.Write(cmd, 0, cmd.Length);
receive_timer.Enabled = true;
}
catch (Exception e)
{
On_Error(e.ToString());
}
} private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//send_timer.Enabled = false;
int len;
len = port.Read(readbuffer, 0, 1024);
send_timer.Enabled = false;
receive_timer.Enabled = false;
On_Receive(readbuffer); if (Tell_CMD(readbuffer, len))
{
receive_timer.Enabled = false;
}
else
{
receive_timer.Enabled = true;
} }
{
receive_timer.Enabled = false;
On_Error("正しいコマンドが来ていません");
CMD_POS = 0;
} private void send_timer_Tick(object sender, EventArgs e)
{
send_timer.Enabled = false;
On_Error("通信問題が行い、確認してください");
CMD_POS = 0;
}
按下按钮的话。实现···CMD_send()函数。有代码进来时关掉计时。问题是没有代码进来,但是timer的事件内容也不实现
private void receive_timer_Tick(object sender, EventArgs e)
{
receive_timer.Enabled = false;
On_Error("正しいコマンドが来ていません");
CMD_POS = 0;
} private void send_timer_Tick(object sender, EventArgs e)
{
send_timer.Enabled = false;
On_Error("通信問題が行い、確認してください");
CMD_POS = 0;
}
按下按钮的话。实现···CMD_send()函数。有代码进来时关掉计时。问题是没有代码进来,但是timer的事件内容也不实现
receive_timer.Start() 在哪?
public Serial_Xray()
{
port=new SerialPort();
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); receive_timer.Enabled = True;
send_timer.Enabled = True;
for (int i = 0; i < 1024; i++)
{
readbuffer[i] = 0;
}
}
上面·receive_timer.enabled=true;那个就是start啊
我这个是个class 新建这个class的时候定义不是一样的吗 ??有什么区别。
不好意思我没看懂。。
你说的再定义是new吗?不好意思我刚学。不是很懂。。
定义的话一般是在外面定义,然后class 生成的时候对他进行初始化。使用class 的时候我也只是做一次new,然后利用里面的函数啊
上面·receive_timer.enabled=true;那个就是start啊
刚才看错了,你用的是控件Timer Enable是说控件有效,但是你并没有启动定时器呀,所以要调用timer.Start();
上面·receive_timer.enabled=true;那个就是start啊
刚才看错了,你用的是控件Timer Enable是说控件有效,但是你并没有启动定时器呀,所以要调用timer.Start();timer.start()和enabled是一样的吧,一个是改属性,一个用函数
还可以通过将 Enabled 设置为 true 开始计时。说明:
如果 AutoReset 为 false,则必须调用 Start 方法才能再次开始计数。
嗯 谢谢。forms的timer没有autoReset这个属性。所以我用systems 的timer,吧autoreset改成true的就好了。`