📄 downcmd.cpp
字号:
{
int RcvIvtime;
unsigned char checksum = 0, len, datalen;
unsigned char cs_bytecount;
unsigned char i, k ;
unsigned char PutOutTemBuff[50];
char string[10];
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= CmdDataBuf[3];
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= 0x04; //功能码
PutOutTemBuff[6]= 0x03; //数据区的长度3个字节
PutOutTemBuff[7]= CmdDataBuf[7];
PutOutTemBuff[8]= CmdDataBuf[8];
PutOutTemBuff[9]= CmdDataBuf[9];
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]+ 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
PutOutTemBuff[cs_bytecount+2]='\0';
SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令
}
void Send_Sc_to_GatherMachine( unsigned char *CmdDataBuf )
{
int num_of_thr;
unsigned char checksum = 0;
unsigned char cs_bytecount;
unsigned char i, j;
unsigned char PutOutTemBuff[150];
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= CmdDataBuf[3];
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= 0x06; //功能码
PutOutTemBuff[7]= CmdDataBuf[14];
PutOutTemBuff[8]= CmdDataBuf[15];
num_of_thr = (CmdDataBuf[14]-48)*10 + CmdDataBuf[15]-48; //把十进制字符型转换成十进制整型,门限条件的个数
for(i=0; i<num_of_thr; i++)
for(j=0; j<10; j++)
PutOutTemBuff[9+10*i+j] = CmdDataBuf[16+10*i+j];
PutOutTemBuff[6]= 2 + num_of_thr*10; //数据区的长度3个字节
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]+ 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
PutOutTemBuff[cs_bytecount+2]='\0';
SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令
}
void Send_Cmd_to_GatherMachine( unsigned char datatype, unsigned char CtrlCode )
{
unsigned char checksum = 0, datalen;
unsigned char cs_bytecount;
unsigned char i ;
unsigned char PutOutTemBuff[50];
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= datatype;
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= CtrlCode; //功能码
PutOutTemBuff[6]= 0x00;
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]+ 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
PutOutTemBuff[cs_bytecount+2]='\0';
SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令
}
void Ack_addReport_to_GatherMachine( unsigned char datatype, unsigned char CtrlCode )
{
Send_Cmd_to_GatherMachine( datatype, CtrlCode );
}
void Ack_FunctionAlarm_to_GatherMachine( unsigned char datatype, unsigned char CtrlCode )
{
Send_Cmd_to_GatherMachine( datatype, CtrlCode );
}
void Send_InitWLValue_to_GatherMachine( unsigned char *CmdDataBuf )
{
unsigned char checksum = 0;
unsigned char cs_bytecount;
unsigned char i, len;
unsigned char PutOutTemBuff[50];
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= 0x02;
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= 0x0A; //功能码
PutOutTemBuff[6]= 0x05;
len = strlen(CmdDataBuf);
for( i=0; i<5-len; i++ )
{
PutOutTemBuff[7+i]='0';
}
for( i=0; i<len; i++ )
{
PutOutTemBuff[12-len+i] = CmdDataBuf[i];
}
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]+ 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
PutOutTemBuff[cs_bytecount+2]='\0';
SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令
}
int Send_SyschroTime_to_GatherMachine( )
{
int minute, syschtime;
unsigned char checksum = 0;
unsigned char cs_bytecount;
unsigned char i, len;
unsigned char PutOutTemBuff[50];
char string[10];
struct time t;
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= 0x00;
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= 0x0B; //功能码
PutOutTemBuff[6]= 0x03;
gettime( &t );
minute = t.ti_min%5 ;
syschtime = minute*60 + t.ti_sec;
if(GetKPState==LOCK) printf("minute=%d, syschtime=%d\n", minute, syschtime);
itoa( syschtime, string, 10 );
len = strlen(string);
for( i=0; i<3-len; i++ )
{
PutOutTemBuff[7+i]='0';
}
for( i=0; i<len; i++ )
{
PutOutTemBuff[10-len+i] = string[i];
}
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]+ 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
PutOutTemBuff[cs_bytecount+2]='\0';
SendDataToCOM( COM3, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令
//NB_Delay(2000);
return 1;
}
int Config_MultiCounterRatio( int typeofdata, int MultiRatio )
{
unsigned char checksum = 0;
unsigned char cs_bytecount;
unsigned char i, len;
unsigned char PutOutTemBuff[50];
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= typeofdata;
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= 0x0C; //功能码
PutOutTemBuff[6]= 0x01;
PutOutTemBuff[7]= MultiRatio + 0x30; //整形转化成字符型
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]+ 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
PutOutTemBuff[cs_bytecount+2]='\0';
SendDataToCOM( COM3, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -