📄 zdjcform.~cpp
字号:
Debug += Hex;
}
Hex.printf ("%.2X ", CRCValue.b[0]);
Debug += Hex;
Hex.printf ("%.2X ", CRCValue.b[1]);
Debug += Hex;
Debug += "\n";
ErrorMessage (Debug.c_str());
}
}
if (iBufLength == 4)
{
CRCValue.w = CRC16 (Buffer, 2);
if (CRCValue.b[0] == Buffer[2] &&
CRCValue.b[1] == Buffer[3]) //校验码判断
{
switch (Buffer[1])
{
case 0x86:
ShowMessage ("设置时间成功!");
break;
case 0x83:
ShowMessage ("设置信息成功!");
bAddress = EditAddress->Text.ToInt();
TreeView->Selected->Text = EditAddress->Text;
break;
case 0x81:
ShowMessage ("设置交班成功!");
break;
}
}
else
{
StatusBar->Panels->Items[2]->Text = "CRC校验错!";
AnsiString Hex, Debug;
for (int i=0; i<iBufLength; i++)
{
Hex.printf ("%.2X ", Buffer[i]);
Debug += Hex;
}
Hex.printf ("%.2X ", CRCValue.b[0]);
Debug += Hex;
Hex.printf ("%.2X ", CRCValue.b[1]);
Debug += Hex;
Debug += "\n";
ErrorMessage (Debug.c_str());
}
}
}
}
void __fastcall TMainForm::TimerSeekTimer(TObject *Sender)
{
//计算校验码
WORDTYPE CRCValue;
AnsiString TerCountString;
AnsiString TryTimes;
AnsiString AddressString;
if (bAddress >= iPosBeg &&
bAddress <= iPosEnd)
{
if (iTryTimes < iPosTimes)
{
SendData (bAddress, Command_85, 4, 11);
AddressString = bAddress;
TryTimes = iTryTimes;
StatusBar->Panels->Items[1]->Text = "正在搜索" + AddressString + "号设备,第" + TryTimes +"次尝试 ...";
iTryTimes ++;
}
else
{
iTryTimes = 0;
bAddress ++;
}
StatusBar->Panels->Items[3]->Text = "正在搜索" + SelComNode->Text + "上的设备...";
}
else
{
TerCountString = iTerCount;
TimerSeek->Enabled = false;
if (Comm.IsOpen())
{
StatusBar->Panels->Items[0]->Text = SelComNode->Text + "已经关闭!";
Comm.Close();
}
StatusBar->Panels->Items[1]->Text = "";
StatusBar->Panels->Items[3]->Text = "搜索完毕,共搜索到" + TerCountString + "个设备!";
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
TimerSeek->Enabled = false;
TimerQuery->Enabled = false;
if (Comm.IsOpen())
Comm.Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::TimerQueryTimer(TObject *Sender)
{
switch (ComStatus)
{
case COM_80:
SendData (bAddress, Command_80, 4, 22);
break;
case COM_82:
SendData (bAddress, Command_82, 4, 22);
break;
case COM_84:
SendData (bAddress, Command_84, 5, 35);
break;
case COM_85:
SendData (bAddress, Command_85, 4, 11);
break;
}
StatusBar->Panels->Items[3]->Text = "正在与" + TreeView->Selected->Text + "号设备通信!";
}
//---------------------------------------------------------------------------
void TMainForm::ReadZDClassInfo (Byte *Buffer)
{
WORDTYPE WordType;
//织带长度
WordType.b[1] = Buffer[3];
WordType.b[0] = Buffer[4];
LCDZDCD->Value = WordType.w;
//织带时间
WordType.b[1] = Buffer[5];
WordType.b[0] = Buffer[6];
LCDZDSJ->Value = WordType.w;
//调试长度
WordType.b[1] = Buffer[7];
WordType.b[0] = Buffer[8];
LCDTSCD->Value = WordType.w;
//调试时间
WordType.b[1] = Buffer[9];
WordType.b[0] = Buffer[10];
LCDTSSJ->Value = WordType.w;
//异常脉冲次数
WordType.b[1] = Buffer[11];
WordType.b[0] = Buffer[12];
LCDYCMC->Value = WordType.w;
//累计停机次数
//WordType.b[1] = Buffer[9];
//WordType.b[0] = Buffer[10];
//LCDTJCS->Value = WordType.w;
//主机停机次数
WordType.b[1] = Buffer[13];
WordType.b[0] = Buffer[14];
LCDZJTCS->Value = WordType.w;
//主机停机时间
WordType.b[1] = Buffer[15];
WordType.b[0] = Buffer[16];
LCDZJTSJ->Value = WordType.w;
//经线断停机次数
LCDJDCS->Value = Buffer[17];
//经线断停机时间
LCDJDSJ->Value = Buffer[18];
//纬线断停机次数
LCDWDCS->Value = Buffer[19];
//纬线断停机时间
LCDWDSJ->Value = Buffer[20];
//底线断停机次数
LCDDDCS->Value = Buffer[21];
//底线断停机时间
LCDDDSJ->Value = Buffer[22];
//卷绕停机次数
LCDJRCS->Value = Buffer[23];
//卷绕停机时间
LCDJRSJ->Value = Buffer[24];
//记录号
LCDRecordID->Value = Buffer[2];
//班开始时间
LCDBegin->Value = GetBegin(Buffer);
//班结束时间
LCDEnd->Value = GetEnd(Buffer);
//当班日期
LCDClassDate->Value = GetDate(Buffer);
}
void TMainForm::ReadGroupInfo (Byte *Barray)
{
Edit_11->Text = BCDToStr(Barray[2]);
Edit_12->Text = BCDToStr(Barray[3]);
Edit_13->Text = BCDToStr(Barray[4]);
Edit_14->Text = BCDToStr(Barray[5]);
Edit_21->Text = BCDToStr(Barray[6]);
Edit_22->Text = BCDToStr(Barray[7]);
Edit_23->Text = BCDToStr(Barray[8]);
Edit_24->Text = BCDToStr(Barray[9]);
Edit_31->Text = BCDToStr(Barray[10]);
Edit_32->Text = BCDToStr(Barray[11]);
Edit_33->Text = BCDToStr(Barray[12]);
Edit_34->Text = BCDToStr(Barray[13]);
if (Barray[18] == 0x03)
RadioButtonThree->Checked = true;
if (Barray[18] == 0x04)
RadioButtonFour->Checked = true;
if (RadioButtonFour->Checked)
{
Edit_41->Text = BCDToStr(Barray[14]);
Edit_42->Text = BCDToStr(Barray[15]);
Edit_43->Text = BCDToStr(Barray[16]);
Edit_44->Text = BCDToStr(Barray[17]);
}
else
{
Edit_41->Text = "";
Edit_42->Text = "";
Edit_43->Text = "";
Edit_44->Text = "";
}
}
void __fastcall TMainForm::TBHaltCommClick(TObject *Sender)
{
TimerSeek->Enabled = false;
TimerQuery->Enabled = false;
if (Comm.IsOpen ())
{
//Comm.Close ();
//StatusBar->Panels->Items[0]->Text = SelComNode->Text + "已经关闭!";
StatusBar->Panels->Items[1]->Text = "";
StatusBar->Panels->Items[2]->Text = "";
StatusBar->Panels->Items[3]->Text = "通信被终止!";
}
}
//---------------------------------------------------------------------------
AnsiString TMainForm::GetDate(Byte *Barray)
{
AnsiString DateString;
DateString = BCDToStr(Barray[32]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[30]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[29]);
return DateString;
}
AnsiString TMainForm::GetStartDate(Byte *Barray)
{
AnsiString DateString;
DateString = BCDToStr(Barray[19]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[17]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[16]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[15]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[14]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[13]);
return DateString;
}
AnsiString TMainForm::GetBegin (Byte *Barray)
{
AnsiString DateString;
DateString = BCDToStr(Barray[25]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[26]);
return DateString;
}
AnsiString TMainForm::GetEnd (Byte *Barray)
{
AnsiString DateString;
DateString = BCDToStr(Barray[27]);
DateString = DateString + ".";
DateString = DateString + BCDToStr(Barray[28]);
return DateString;
}
//---------------------------------------------------------------------------
AnsiString TMainForm::BCDToStr(Byte bBCD)
{
Byte bData;
AnsiString StrDataH, StrDataL;
bData = bBCD & 0xf0; //高位
bData = bData >> 4;
StrDataH = bData;
bData = bBCD & 0x0f;
StrDataL = bData;
return StrDataH + StrDataL;
}
//---------------------------------------------------------------------------
void TMainForm::ReadTermInfo (Byte *Buffer) //读终端信息
{
WORDTYPE WordType;
//脉冲
WordType.b[1] = Buffer[2];
WordType.b[0] = Buffer[3];
LCDPulse->Value = WordType.w;
//K值
WordType.b[1] = Buffer[4];
WordType.b[0] = Buffer[5];
EditKValue->Text = WordType.w;
//本机状态
switch (Buffer[6])
{
case 0x00:
StatusBar->Panels->Items[1]->Text = "主机停——调试!";
break;
case 0x01:
StatusBar->Panels->Items[1]->Text = "主机转——调试!";
break;
case 0x02:
StatusBar->Panels->Items[1]->Text = "主机停——运行!";
break;
case 0x03:
StatusBar->Panels->Items[1]->Text = "主机转——运行!";
break;
}
//波特率
ComboBoxBaud->ItemIndex = Buffer[7];
//通信地址
EditAddress->Text = Buffer[8];
//机器号
WordType.b[1] = Buffer[9];
WordType.b[0] = Buffer[10];
EditMachNum->Text = WordType.w;
//车间号
EditShopNum->Text = Buffer[11];
//分厂号
EditFactNum->Text = Buffer[12];
//开机时间
LCDStart->Value = GetStartDate (Buffer);
}
void TMainForm::ReadTimeInfo (Byte *Barray)
{
WORDTYPE WordType;
EditSecond->Text = BCDToStr(Barray[2]);
EditMin->Text = BCDToStr(Barray[3]);
EditHour->Text = BCDToStr(Barray[4]);
EditWeek->Text = BCDToStr(Barray[7]);
EditDate->Text = BCDToStr(Barray[5]);
EditMonth->Text = BCDToStr(Barray[6]);
EditYear->Text = BCDToStr(Barray[8]);
}
void TMainForm::SendData (Byte bAddr, Byte *Barray, int iLen, int iRecive)
{
WORDTYPE CRCValue;
Barray[0] = bAddr;
CRCValue.w = CRC16 (Barray, iLen-2);
Barray[iLen-2] = CRCValue.b[0];
Barray[iLen-1] = CRCValue.b[1];
Comm.Write (Barray, iLen);
Comm.SetNotifyNum (iRecive);
}
void __fastcall TMainForm::EditKValueKeyPress(TObject *Sender, char &Key)
{
KeyIsDigital (this->Handle, EditKValue, Key);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::EditAddressKeyPress(TObject *Sender, char &Key)
{
KeyIsDigital (this->Handle, EditAddress, Key);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::EditMachNumKeyPress(TObject *Sender, char &Key)
{
KeyIsDigital (this->Handle, EditMachNum, Key);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::EditShopNumKeyPress(TObject *Sender, char &Key)
{
KeyIsDigital (this->Handle, EditShopNum, Key);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::EditFactNumKeyPress(TObject *Sender, char &Key)
{
KeyIsDigital (this->Handle, EditFactNum, Key);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BitBtnModifyClick(TObject *Sender)
{
bool TimerStatus;
Byte Buffer[22];
WORDTYPE WordType;
TimerStatus = TimerQuery->Enabled;
TimerQuery->Enabled = false;
//准备数据
Buffer[0] = bAddress;
//命令
Buffer[1] = 0x83;
//脉冲周期
WordType.w = LCDPulse->Value.ToInt();
Buffer[2] = WordType.b[1];
Buffer[3] = WordType.b[0];
//K值
WordType.w = EditKValue->Text.ToIntDef(1);
Buffer[4] = WordType.b[1];
Buffer[5] = WordType.b[0];
//波特率
Buffer[7] = ComboBoxBaud->ItemIndex;
//通信地址
Buffer[8] = EditAddress->Text.ToIntDef(1);
//机器号
WordType.w = EditMachNum->Text.ToIntDef(0);
Buffer[9] = WordType.b[1];
Buffer[10] = WordType.b[0];
//车间号
Buffer[11] = EditShopNum->Text.ToIntDef(0);
//分厂号
Buffer[12] = EditFactNum->Text.ToIntDef(0);
WordType.w = CRC16 (Buffer, 20);
Buffer[20] = WordType.b[0];
Buffer[21] = WordType.b[1];
//发送数据
SendData (bAddress, Buffer, 22, 4);
TimerQuery->Enabled = TimerStatus;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BitBtnTimeClick(TObject *Sender)
{
bool TimerStatus;
Byte Buffer[11];
WORDTYPE WordType;
TimerStatus = TimerQuery->Enabled;
TimerQuery->Enabled = false;
//准备数据
//地址
Buffer[0] = bAddress;
//命令
Buffer[1] = 0x86;
//年
Buffer[8] = StrToBCD(EditYear->Text);
//星期
Buffer[7] = StrToBCD(EditWeek->Text);
//月
Buffer[6] = StrToBCD(EditMonth->Text);
//日
Buffer[5] = StrToBCD(EditDate->Text);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -