//本地时钟
void COtpTestDlg::OnBdSendCommand()
{
// TODO: Add your control notification handler code here
CString strTemp;
ByteArray baTime;
BYTE array[7];
BYTE array1[MAXSIZE] = "\xF0\xA6\x00\x00\x07";
DWORD dwSlot;
time_t timer;
iMin1 = time(&timer)/60;
SYSTEMTIME st;
GetLocalTime(&st);
//当pc机发命令给设备时,是设备与pc机时钟是一致的,但是发送命令传送过程有时间差,经仔细观察pc比设备快1s,
//所以设备就要在发送的时间值上加1s,担当pc正好是59秒的时候怎么办,所以有下面判断
if (st.wSecond == 59)
{
st.wMinute++;
st.wSecond = 0;
}
else
st.wSecond = st.wSecond + 1;
strTemp.Format(_T("%04d%02d%02d%02d%02d%02d"),
st.wYear,
st.wMonth,
st.wDay,
st.wHour,
st.wMinute,
st.wSecond);
// strTemp.GetLength();
LPBYTE pcCmdHead = array1;
// LPBYTE pbData;
DWORD dwDataLen = (DWORD)12;
LPBYTE pbRecv;
LPDWORD pdwRecvLen;
DWORD dwRecvLen = (DWORD)MAXSIZE;
LPWORD pwSW;
WORD sW;
pbRecv = (BYTE*) malloc(dwRecvLen*sizeof(BYTE));
pdwRecvLen = &dwRecvLen;
pdwRecvLen = &dwRecvLen;
pwSW = &sW;
//StrToHex非常有用
StrToHex(strTemp.GetBuffer(0),strTemp.GetLength(),baTime);
// char text = (char)(*(baTime.GetData()));
for (int i = 0; i < baTime.GetSize(); i++)
{
array[i] = *((BYTE*)baTime.GetData()+i);
}
// pbData = array;
memcpy(array1+5,array,baTime.GetSize());
if(g_objReader.SendCommand(pcCmdHead,dwDataLen,pbRecv,pdwRecvLen,pwSW,dwSlot,0,FALSE))
{
MessageBox(_T("与终端系统时间同步设置成功!"));
}
else
{
MessageBox(_T("命令发送失败!"));
g_objReader.DisConnect();
return ;
}
free(pbRecv);
}