//上位机到下位机的消息头typedef struct tagH2L_HEAD{ UCHAR ucAA; //识别码, aa UCHAR ucBB; //识别码,bb UCHAR ucCmdNO; //命令号}H2L_HEAD; //3 BYTE//仿真模式,仿真命令,仿真步长typedef struct tagSIMCMD{ H2L_HEAD head; UCHAR ucSimMode; UCHAR ucSimCmd; UCHAR ucSimStepLen; UCHAR ucCheckSum; //新增校验码}SIMCMD;//上位机到下位机的消息头typedef struct tagH2L_HEAD{ UCHAR ucAA; //识别码, aa UCHAR ucBB; //识别码,bb UCHAR ucCmdNO; //命令号}H2L_HEAD; //3 BYTE//仿真模式,仿真命令,仿真步长typedef struct tagSIMCMD{ H2L_HEAD head; UCHAR ucSimMode; UCHAR ucSimCmd; UCHAR ucSimStepLen; UCHAR ucCheckSum; //新增校验码}SIMCMD;/************************************************************************//* Name : SenCmd() /* Function : 上位机向下位机发送控制命令!/* Input : 控制命令/* Date : 2007-8-10 /************************************************************************/void CF2XTH6_1Dlg::SendCMD(UCHAR ucCtrlCmd){ SIMCMD simCmd; memset(&simCmd, 0, sizeof(SIMCMD)); simCmd.head.ucAA = 0xaa; simCmd.head.ucBB = 0xbb; simCmd.head.ucCmdNO = (UCHAR)SIM_CMD; simCmd.ucSimMode = g_ucSimulateMode; simCmd.ucSimCmd = ucCtrlCmd; simCmd.ucSimStepLen = g_ucSimStepLen; BYTE byArray[SIM_CMD_LEN] = {0}; memcpy(byArray, (UCHAR *)&simCmd, SIM_CMD_LEN); UCHAR ucCheckSum = 0; ucCheckSum = CheckSum(byArray, SIM_CMD_LEN-1); byArray[SIM_CMD_LEN-1] = ucCheckSum; int i = 0; for(i = 0; i < SIM_CMD_LEN; i++) { TRACE(" %x, ", byArray[i]); } TRACE("\\n"); CByteArray OutBuf; for(i = 0; i < SIM_CMD_LEN; i++) { OutBuf.Add(byArray[i]); } ////////////////////////////////////////////////////////////////////////// try { g_pMSCom->SetOutput(COleVariant(OutBuf)); } catch (...) { AfxMessageBox("发送数据失败,请检查本机串口线路!"); return ; }}
下载本文