//CMS流水
typedef struct _CMSWaste
{
TDevInfo DevInfo;
char Content[1024];
int Light;
char Re1[20];
char Re2[20];
}TCMSWaste; TCMSWaste cmswaste;
memset(&cmswaste, 0, sizeof(TCMSWaste));
int retcms = m_peer[i]->ReadData((char*)&cmswaste, sizeof(TCMSWaste));
if (retcms < 0)
{
//读取CMS包错误
//ErrorReport("读取CMS包错误");
ReleaseCritical();
continue;
}
else if (retcms == 0)
{
ReleaseCritical();
continue;
}
ErrorReport("收到(IP:%s)发送的CMS数据", ip);
if ((m_DbOper.HandleCMSMsg(cmswaste))&&(m_DbOper.HandleCMSErrorMsg(cmswaste)))
{
ErrorReport("处理CMSMsg成功");
//返回成功信息
m_peer[i]->SendData("OKOK", 4);
}
else
{
ErrorReport("处理CMSMsg失败");
m_peer[i]->SendData("ERRO", 4);
//断开连接
m_peer[i]->FreePeer();
}BOOL CPRJ_DbOperate::HandleCMSMsg(TCMSWaste &cms)
{
ErrorReport("HandleCMSMsg");
char DevCode[10];
memset(DevCode, 0, sizeof(cms.DevInfo.DevCode));
memcpy(DevCode, cms.DevInfo.DevCode, sizeof(cms.DevInfo.DevCode));
ErrorReport("DevCode:%s", DevCode);
typedef struct _CMSWaste
{
TDevInfo DevInfo;
char Content[1024];
int Light;
char Re1[20];
char Re2[20];
}TCMSWaste; TCMSWaste cmswaste;
memset(&cmswaste, 0, sizeof(TCMSWaste));
int retcms = m_peer[i]->ReadData((char*)&cmswaste, sizeof(TCMSWaste));
if (retcms < 0)
{
//读取CMS包错误
//ErrorReport("读取CMS包错误");
ReleaseCritical();
continue;
}
else if (retcms == 0)
{
ReleaseCritical();
continue;
}
ErrorReport("收到(IP:%s)发送的CMS数据", ip);
if ((m_DbOper.HandleCMSMsg(cmswaste))&&(m_DbOper.HandleCMSErrorMsg(cmswaste)))
{
ErrorReport("处理CMSMsg成功");
//返回成功信息
m_peer[i]->SendData("OKOK", 4);
}
else
{
ErrorReport("处理CMSMsg失败");
m_peer[i]->SendData("ERRO", 4);
//断开连接
m_peer[i]->FreePeer();
}BOOL CPRJ_DbOperate::HandleCMSMsg(TCMSWaste &cms)
{
ErrorReport("HandleCMSMsg");
char DevCode[10];
memset(DevCode, 0, sizeof(cms.DevInfo.DevCode));
memcpy(DevCode, cms.DevInfo.DevCode, sizeof(cms.DevInfo.DevCode));
ErrorReport("DevCode:%s", DevCode);
BOOL CPRJ_DbOperate::HandleCMSMsg(TCMSWaste &cms)
{
ErrorReport("HandleCMSMsg");
char DevCode[10];
memset(DevCode, 0, sizeof(cms.DevInfo.DevCode));
memcpy(DevCode, cms.DevInfo.DevCode, sizeof(cms.DevInfo.DevCode));
ErrorReport("DevCode:%s", DevCode); //此处不应该只显示这10位的内容吗?为啥后面的也显示出来了
}
这个好像把数组之外的也打印出来了
typedef struct _DevInfo
{
BYTE DevType;
char DevCode[10];
char CheckTime[14];
char ErrorStatus[20];
int CheckError;
}TDevInfo;
能不能学会全是你自己的造化了typedef struct _CMSWaste
{
TDevInfo DevInfo;
char Content[1024];
char rev1;
int Light;
char Re1[20];
char rev2;
char Re2[20];
char rev3;
}TCMSWaste;假设TCMSWaste xxx;
每次操作的赋值之前
都要记得memset(xxx,0,sizeof(xxx));
或者;
xxx.rev1=xxx.rev2=xxx.rev3=0;
DevCode 并不是字符串
你现在把它当字符串用了
字符串 以0结尾
如果 DevCode 中间有0 也会提前结束的 不会打印后面内容
反之 就是你这种情况了……