📄 unit1.~cpp
字号:
if(Form1-> T_AutoClear->Checked&&Form1-> DISPLAY->Lines->Count>62)Form1-> DISPLAY->Clear();//自动清空
if(Form1-> DISPLAY->Lines->Count>4096)//太长了,清空
{
Form1-> DISPLAY->Clear();//自动清空
Form1-> DISPLAY->Text="串口调试助手提醒您,数据太长,自动清空!";
}
}
//---------------------------------------------------------------------------
//发送数据
void __fastcall TForm1::Send_ButtonClick(TObject *Sender)
{
AnsiString str=Send_Box->Text;//取得发送文本
OleVariant temp; //声明变体变量
uchar c=0;
double result=0;//十进制发送缓冲区
unsigned long sendout=0;//十进制发送缓冲区
if(!str.Length())return;//发送缓冲区数据空.自动退出
if(Uart_Open)
{
//创建变体变量
temp=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);//创造单个变体int,(0,10))发送11个数据
if(Dec_Send->Checked==true)//十进制发送
{
for(int n=0;n<str.Length();n++)//读取数据
{
c=str[n+1];
if(c<48||c>57)//限制字符输入
{
Application->MessageBox("请输入合法数字!","输入错误",MB_OK);
return;
}
result=result*10+c-'0';//将char型转换为十进制
}
if(str.Length()>10||result>4294967295)//限制输入范围
{
Application->MessageBox("数值溢出!","输入错误",MB_OK);
return;
}
sendout=(unsigned long)result;//赋值到ulong型数据
do//直到把数据发送完毕
{
c=sendout&0xff;//取低八位
sendout>>=8; //循环取数
temp.PutElement(c,0);//字符传入变体变量;
MSComm1->Output=temp;//发送
}while(sendout);
}//以字符发送
else for(int n=1;n<=str.Length();n++)//直到发送完毕
{
c=str[n];
//if(c=='\r'||c=='\n')continue; //忽略换行符
temp.PutElement(c,0);//字符传入变体变量
MSComm1->Output=temp;
}
TXCount->Caption="TX:"+IntToStr(TX_Count++);//发送计数器计数
}
}
//---------------------------------------------------------------------------
//接收一个字符
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
Timer1->Enabled=true;
RX_Num++;
if(RX_Num>65529)RX_Num=0;//溢出,重新填充
RX_Count++;
if(RX_Count>9999999)RX_Count=0;//太长了,清掉
RXCount->Caption="RX:"+IntToStr(RX_Count);
}
//计数器清空
void __fastcall TForm1::ClearTXRXClick(TObject *Sender)
{
RX_Count=0;
TX_Count=0;
RXCount->Caption="RX:0";
TXCount->Caption="TX:0";
}
//---------------------------------------------------------------------------
//控制显示与否
void __fastcall TForm1::T_StopClick(TObject *Sender)
{
if(Display_Enable)
{
if(MSComm1->PortOpen)
{
MSComm1->PortOpen=false;//关闭串口
MSComm1->PortOpen=true;//再次打开串口
//利用这个语句把串口的缓存全部清空
}
Display_Enable=false;
T_Stop->Caption="继续显示";
}else
{
Display_Enable=true;
T_Stop->Caption="停止显示";
}
}
//---------------------------------------------------------------------------
//显示方式选择
void __fastcall TForm1::T_Type_HexClick(TObject *Sender)
{
if(T_Type_Hex->Checked)Display_Type=1;//十六进制显示
else Display_Type=2;//十进制显示
}
//---------------------------------------------------------------------------
//显示方式选择
void __fastcall TForm1::T_Type_DecClick(TObject *Sender)
{
if(T_Type_Hex->Checked)Display_Type=1;//十六进制显示
else Display_Type=2;//十进制显示
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FrontShowClick(TObject *Sender)
{
static bool Front_Show=false;
if(Front_Show)
{
Front_Show=false;
FrontShow->Caption="TOP";
SetWindowPos(Form1->Handle,HWND_NOTOPMOST,0,0,0,0,(SWP_NOSIZE|SWP_NOMOVE));
SetWindowPos(Form2->Handle,HWND_NOTOPMOST,0,0,0,0,(SWP_NOSIZE|SWP_NOMOVE));
//非前端显示
}else
{
Front_Show=true;
FrontShow->Caption="OFF";
SetWindowPos(Form1->Handle,HWND_TOPMOST,0,0,0,0,(SWP_NOSIZE|SWP_NOMOVE));
SetWindowPos(Form2->Handle,HWND_TOPMOST,0,0,0,0,(SWP_NOSIZE|SWP_NOMOVE));
//前端显示
}
}
//---------------------------------------------------------------------------
//发送文件
void __fastcall TForm1::Send_FilesClick(TObject *Sender)
{
if(SendFileEn)
{
Timer2->Interval=1000;
Timer2->Enabled=false;//发送中断关闭
Send_Files->Caption="发送文件";
Open_Filse->Enabled=true;//打开打开文件按钮
SendFileEn=false;
}else//开始发送文件
{
Timer2->Interval=1;//1ms发送一个数据
Timer2->Enabled=true;//使能中断
Send_Files->Caption="终止发送";
Open_Filse->Enabled=false;//关闭打开文件按钮
SendFileEn=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Close_UartClick(TObject *Sender)
{
Form1->Close();//关闭程序
}
//---------------------------------------------------------------------------
//自动发送开启与否
void __fastcall TForm1::Auto_SendClick(TObject *Sender)
{
if(Auto_Send->Checked)
{
Timer2->Enabled=true;//使能定时器二
Timer2->Interval=StrToInt(AutoSend_Time->Text);
}else Timer2->Enabled=false;//关掉定时器二
}
//---------------------------------------------------------------------------
//定时器二 ,自动发送
//每ms发送100个数据
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
static unsigned long n=1;//存储文字长度
uchar count_send=0;
AnsiString str=Send_Box->Text;//取得发送文本
OleVariant temp; //声明变体变量
uchar c;
if(SendFileEn&&Uart_Open)//发送文件,串口必须打开
{
while(n<=str.Length())//直到发送结束
{
c=str[n];
n++;
//if(c=='\r'||c=='\n')return; //忽略换行符
temp=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);//创造单个变体int,(0,10))发送11个数据
temp.PutElement(c,0);//字符传入变体变量
MSComm1->Output=temp;
TXCount->Caption="TX:"+IntToStr(TX_Count++);//发送计数器计数
count_send++;
if(count_send>10)return;//每1ms发送100个字符
}
//发送结束了
n=1;//计数器复位
Timer2->Enabled=false;//中断关闭
Timer2->Interval=1000;
Send_Files->Caption="发送文件";
Open_Filse->Enabled=true;//打开打开文件按钮
SendFileEn=false;//文件发送使能标志清空
return;
}
else Send_ButtonClick(Form1);
}
//---------------------------------------------------------------------------
//定时时间设置
void __fastcall TForm1::AutoSend_TimeChange(TObject *Sender)
{
char *cs;
unsigned long settime;
AnsiString c;
c=AutoSend_Time->Text;
cs=c.c_str();
for(int t=0;t<c.Length();t++)
{
if(cs[t]>57||cs[t]<48)
{
Application->MessageBox("请输入数字!","输入错误",MB_OK);
AutoSend_Time->Text=1000;//重新设置
return;
}
}
settime=StrToInt(AutoSend_Time->Text);//得到时间长度(ms)
if(settime>65535||settime==0)//范围设置
{
Application->MessageBox("定时范围:1~65535(ms)","数据溢出",MB_OK);
AutoSend_Time->Text=1000;//重新设置
return;
}
Timer2->Interval=settime;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Open_FilseClick(TObject *Sender)
{
if(Form1->OpenDialog1->Execute())//如果执行有效则继续执行
{
Send_Files->Enabled=false;//关闭发送按钮,避免触发Send_BoxChange事件
Send_Box->Lines->LoadFromFile(Form1->OpenDialog1->FileName);
Send_Button->Enabled=false;//关闭发送按钮
Auto_Send->Checked=false;//自动发送取消
Auto_Send->Enabled=false;//自动发送关闭
SendFileEn=false;//关闭发送使能
Send_Files->Caption="发送文件";
Send_Files->Enabled=true;//开启发送按钮
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Send_BoxChange(TObject *Sender)
{
FileSend_Juder();//发送文件退出处理
}
//---------------------------------------------------------------------------
//打开升级链接
void __fastcall TForm1::Label11Click(TObject *Sender)
{
ShellExecute(NULL,"OPEN","http://blog.ednchina.com/atom6037/168302/message.aspx",NULL,NULL,SW_SHOW);
}
//---------------------------------------------------------------------------
//打开对话框二
void __fastcall TForm1::Label12Click(TObject *Sender)
{
Form2->Show();
Form2->Label1->Caption=Label10->Caption;//获得相同版本号
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -