int oemp_SendData(WORD wDevID, BYTE* pBuf, int nSize) { WORD wChkSum = 0; BYTE Buf[4], *pCommBuf; int nSentBytes; if (pBuf == NULL) return PKT_PARAM_ERR; Buf[0] = (BYTE)STX3; Buf[1] = (BYTE)STX4; *((WORD*)(&Buf[SB_OEM_HEADER_SIZE])) = wDevID; wChkSum = oemp_CalcChkSumOfDataPkt(Buf, SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE); wChkSum += oemp_CalcChkSumOfDataPkt(pBuf, nSize); pCommBuf = new BYTE[nSize + SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE + SB_OEM_CHK_SUM_SIZE]; memcpy(pCommBuf, Buf, SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE); memcpy(pCommBuf + SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE, pBuf, nSize); *(WORD*)(pCommBuf + nSize + SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE) = wChkSum; nSentBytes = comm_send(pCommBuf, nSize + SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE + SB_OEM_CHK_SUM_SIZE, gCommTimeOut); if (nSentBytes != nSize + SB_OEM_HEADER_SIZE + SB_OEM_DEV_ID_SIZE + SB_OEM_CHK_SUM_SIZE) { if (pCommBuf) delete pCommBuf; return PKT_COMM_ERR; } if (pCommBuf) delete pCommBuf; return 0; }
int oemp_ReceiveData( WORD wDevID, BYTE* pBuf, int nSize ) { WORD wReceivedChkSum, wChkSum; BYTE Buf[4],*pCommBuf; int nReceivedBytes; if( pBuf == NULL ) return PKT_PARAM_ERR; pCommBuf = new BYTE[nSize+SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE+SB_OEM_CHK_SUM_SIZE]; nReceivedBytes = comm_recv( pCommBuf, nSize+SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE+SB_OEM_CHK_SUM_SIZE, gCommTimeOut ); if( nReceivedBytes != nSize+SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE+SB_OEM_CHK_SUM_SIZE ) { if(pCommBuf) delete pCommBuf; return PKT_COMM_ERR; } memcpy(Buf, pCommBuf, SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE); memcpy(pBuf, pCommBuf+SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE, nSize); wReceivedChkSum = *(WORD*)(pCommBuf+nSize+SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE); if(pCommBuf) delete pCommBuf; ////////////// pc end /////////////// if( ( Buf[0] != STX3 ) || ( Buf[1] != STX4 ) ) { return PKT_HDR_ERR; } if( *((WORD*)(&Buf[SB_OEM_HEADER_SIZE])) != wDevID ) return PKT_DEV_ID_ERR; wChkSum = oemp_CalcChkSumOfDataPkt( Buf, SB_OEM_HEADER_SIZE+SB_OEM_DEV_ID_SIZE ); wChkSum += oemp_CalcChkSumOfDataPkt( pBuf, nSize ); if( wChkSum != wReceivedChkSum ) return PKT_CHK_SUM_ERR; return 0; }