|
|
[求助]
C++builder编程求助
偶是C++菜鸟,现在在C++builder编程时遇到问题,请大家帮助。
有个实验得用串口控制快门:控制快门打开X秒,关闭Y秒,并且要重复Z次;在循环过程中,若遇到紧急情况就中止循环,同时向并口发送信号。 目前已实现前半部分,也就是说快门已能按要求工作,并口操作也已解决。但在循环时,按“紧急停止”键,该键无“下沉”(看似不起作用),但循环结束后能显示该键按下了(显示程序中要求输出的Something is wrong!)
下面是程序(只编了一个快门的),请帮忙看下应该如何改,谢谢!
#include
#pragma hdrstop
#include "PortTalk.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Comm"
#pragma resource "*.dfm"
TDateTime startTime;
int mark1=1; //紧急停止标志位
int kmen1,kmen2,kmen3; //快门选择标志
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//OpenPortTalk(); //并口初始化,打开地址操作
//outportb(0xE800,0xFF); //向并口数据寄存器写0x00,并口卡地址为E800;
//ClosePortTalk(); //关闭地址操作
Button1->Enabled=false;
Edit1->Enabled=false;
Edit2->Enabled=false;
Edit3->Enabled=false;
Edit4->Enabled=false;
Edit5->Enabled=false;
CheckBox1->Enabled=false;
CheckBox2->Enabled=false;
CheckBox3->Enabled=false;
}
//--------------实验开始按钮---------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Enabled=false;
startTime=Time(); //显示开始时间
Edit3->Text=TimeToStr(startTime);
int num1=Edit1->Text.ToInt(); //循环次数
int delay1=Edit2->Text.ToInt(); //快门打开的持续时间
float delay2=(Edit5->Text.ToDouble())*1000; //快门关闭的持续时间
int kmen=kmen1 + kmen2 + kmen3; //用于判断是哪些快门需要打开
switch (kmen)
{
case 1:
{
for (int i=1;i<=num1;i++)
{
Comm1->OutputString('@'); //快门打开
Sleep(delay1);
Comm1->OutputString('A'); //快门关闭
Sleep(delay2);
if (mark1==0)
{
ShowMessage ("Something is wrong!" ;
break;
}
}
break;
}
case 10:
{
break;
}
case 11:
{
break;
}
case 100:
{
break;
}
case 101:
{
break;
}
case 111:
{
break;
}
}
startTime=Time(); //显示实验结束时间
Edit4->Text=TimeToStr(startTime);
}
//-----------实验结束按钮----------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//-----------紧急停止按钮-----------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//Button1->Enabled=false;
ShowMessage ("Something is wrong!" ;
//outportb(0xE800,0x00); //向并口数据寄存器写0x00,并口卡地址为E800; 使得红外刺激仪紧急停止
//ClosePortTalk(); //关闭地址操作
mark1=0;
}
//---------串口选择------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
if (Comm1->PortOpen)
{
ShowMessage ("Port has been opened !" ;
return ;
}
//设定通信端口
if (RadioGroup1->ItemIndex==0) Comm1->CommPort=pnCOM1;
else Comm1->CommPort=pnCOM6;
Comm1 -> PortOpen=true; //打开通信端口
ShowMessage ("Port has been opened now!" ;
}
//---------实验模式选择--------------------------------------------------------
void __fastcall TForm1::RadioGroup2Click(TObject *Sender)
{
CheckBox1->Enabled=true;
CheckBox2->Enabled=true;
CheckBox3->Enabled=true;
Edit1->Enabled=true;
}
//-----------打开快门一 -----------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
kmen1=1;
}
//-----------打开快门二 -----------------------------------------------------
void __fastcall TForm1::CheckBox2Click(TObject *Sender)
{
kmen2=10;
}
//-----------打开快门三------------------------------------------------------
void __fastcall TForm1::CheckBox3Click(TObject *Sender)
{
kmen3=100;
}
//-----------输入循环次数----------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
Edit2->Enabled=true;
}
//-----------输入快门关闭持续时间-------------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
Edit5->Enabled=true;
}
//-----------输入快门打开持续时间-------------------------------------------
void __fastcall TForm1::Edit5Change(TObject *Sender)
{
Button1->Enabled=true;
}
|
» 猜你喜欢
售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急
已经有6人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有5人回复
售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急
已经有6人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有4人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有4人回复
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有6人回复
售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急
已经有5人回复
课题组会帮你通过考核么?
已经有4人回复
各位大佬,路线设计求助
已经有8人回复
售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
|