int encodeFrame(Prn_Frame_t *pFrame) { BYTE EvenChk,OddChk; int len; int CmdBufLen; CalCheckSum(pFrame->pFlagBuf+1,pFrame->FlagBufLen-1,&EvenChk,&OddChk); CmdBufLen=pFrame->FlagBufLen-1; memmove(pFrame->pFlagBuf+7,pFrame->pFlagBuf+1,CmdBufLen); pFrame->pFlagBuf[1] = pFrame->pFlagBuf[0]; pFrame->pFlagBuf[0]=0xc0; pFrame->pFlagBuf[2] = pFrame->i8DataId; pFrame->pFlagBuf[3] = (BYTE)(CmdBufLen/1000+0x30); pFrame->pFlagBuf[4] = (BYTE)(CmdBufLen%1000/100)+0x30; pFrame->pFlagBuf[5] = (BYTE)(CmdBufLen%100/10)+0x30; pFrame->pFlagBuf[6] = (BYTE)(CmdBufLen%10)+0x30; pFrame->pFlagBuf[CmdBufLen+7] = EvenChk; pFrame->pFlagBuf[CmdBufLen+8] = OddChk; len=CmdEncode(pFrame->pFlagBuf+1,CmdBufLen+8); pFrame->pFlagBuf[len+1]=0xc1; return len+2; }
int encodeFrame(BYTE *buf,Prn_Frame_t *pFrame) { static BYTE TempBuf[10000]; BYTE EvenChk,OddChk; int len; TempBuf[0] = pFrame->i8TypeOfFrame; TempBuf[1] = pFrame->i8DataId; TempBuf[2] = (BYTE)(pFrame->CmdBufLen/1000+0x30); TempBuf[3] = (BYTE)(pFrame->CmdBufLen%1000)/100+0x30; TempBuf[4] = (BYTE)(pFrame->CmdBufLen%100)/10+0x30; TempBuf[5] = (BYTE)pFrame->CmdBufLen%10+0x30; memcpy(TempBuf+6,pFrame->pCmdBuf,pFrame->CmdBufLen); CalCheckSum(pFrame->pCmdBuf,pFrame->CmdBufLen,&EvenChk,&OddChk); TempBuf[pFrame->CmdBufLen+6] = EvenChk; TempBuf[pFrame->CmdBufLen+7] = OddChk; buf[0]=0xc0; len=CmdEncode(buf+1,TempBuf,pFrame->CmdBufLen+8); // ASSERT_MINE(len>0); buf[len+1]=0xc1; return len+2; }
int CmdOutput(const byte *pData, int iDataLen, bool bSingleChar, bool bUTF8) { #ifdef BUILDWIDE int iDataPos = 0, iDataMove = 0; unsigned int iUCS = 0; bool bValid = false; unsigned char *szChars = NULL; cchar_t *pChars = NULL; #endif if(bSingleChar == true) { #ifdef BUILDWIDE if(bUTF8 == true) { pChars = new cchar_t; pChars->attr = A_NORMAL; pChars->chars[4] = 0; for(iDataPos = 0; iDataPos < iDataLen; iDataPos++) { iUCS = CmdDecode((byte *)pData + iDataPos, &iDataMove, &bValid); iDataPos += iDataMove; if(bValid == true) { szChars = CmdEncode(iUCS); pChars->chars[0] = szChars[0]; pChars->chars[1] = szChars[1]; pChars->chars[2] = szChars[2]; pChars->chars[3] = szChars[3]; add_wch(pChars); delete[] szChars; } } delete pChars; } else #endif { addch(168); } } else { addnstr((char *)pData, iDataLen); } return iDataLen; }