コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: qUAck-unix.cpp プロジェクト: rjp/qUAck
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;
}