代码细节

//本地时钟
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);
}






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值