|
楼主 |
发表于 2008-8-18 21:26:41
|
显示全部楼层
下面我们完成按钮的功能,双击Open 按钮,添加以下代码:
private: System::Void Open_Click(System::Object^ sender, System::EventArgs^ e) {
if(comm1->Checked == true)
{
System::String^ port = "COM1";
WCOMM->PortName::set(port);
}
else if(comm2->Checked == true)
{
System::String^ port = "COM2";
WCOMM->PortName::set(port);
}
else if(comm3->Checked == true)
{
System::String^ port = "COM3";
WCOMM->PortName::set(port);
}
else if(comm4->Checked == true)
{
System::String^ port = "COM4";
WCOMM->PortName::set(port);
}
else if(comm5->Checked == true)
{
System::String^ port = "COM5";
WCOMM->PortName::set(port);
}
WCOMM->Open();//打开串口
timer1->Enabled=true;//开启定时器
}
双击Close 按钮,添加以下代码:
private: System::Void Close_Click(System::Object^ sender, System::EventArgs^ e) {
timer1->Enabled=false; //关闭定时器
WCOMM->Close(); //关闭串口
}
双击Exit 按钮,添加以下代码:
private: System::Void Exit_Click(System::Object^ sender, System::EventArgs^ e) {
timer1->Enabled=false;
WCOMM->Close();
Application::Exit(); //退出程序
}
下面我们要为我们的小软件添加我们自己的信息,毕竟是我们自己写的嘛,尽管写得不好,留下点什么也是应该的吧,呵呵!
虽然实现的方式有些笨拙,达到目的就行了
双击About 按钮,添加以下代码:
private: System::Void About_Click(System::Object^ sender, System::EventArgs^ e) {
MessageBox::Show("mu.blank@gmail.com",
"About", MessageBoxButtons::OKCancel
/*MessageBoxIcon::Asterisk*/);
}
到此四个按钮的功能我们也完成了,下面我们要实现我们最终的目的,将3个变量的值发送出去,这个功能我们放在定时器的事件里,记得我们把定时器的Interval属性设置成100 了吗?这个单位是ms 100就说明是100ms会产生一个定时器事件,怎么样?比AVR的定时器方便多了吧?不要指望这个事件有多准确,实际上它是非常不准的,有兴趣的可以测试下,不过根据系统的不同可能差异也不同,但是也不会差多少,对于我们这个小东西,够了!
双击定时器timer1,添加以下代码:
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {
array<Byte> ^ pppbyte = gcnew array<Byte>{Rset->Value,Gset->Value,Bset->Value}; /*在可回收栈上声明并初始化一个数组gcnew相当于c++中的new,在c++中我们new出来后我们还要负责将这个数组deletel,用gcnew就不用,所有的工作,编译器帮你做了,这个是c++ CLI语法!内部一个垃圾回收站*/
WCOMM->Write(pppbyte,0,3);//发送3个字节的数据
}
如果你全部都照做了,那这个程序也就写好了,可是我要说的是,我们只做了一个程序的80%,还有20%我们没有完成
如果你想让你的这个程序在任何电脑上都能跑的话,那么你还需要学会怎样制作安装程序,怎样包含运行我们这个程序所需要的micosoft .NET Fromwork
休息一下,我将带领大家解开制作安装程序的秘密(有了VS2005 ,一切变得同样“超级简单”)!让我们的程序也像模像样! |
|