Einzelnen Beitrag anzeigen

Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Hilfe bei C++ Übersetzung

  Alt 23. Feb 2008, 11:53
Delphi-Quellcode:
sendstring="290200";
   retlen=sendstring.GetLength();
   StringToCommbyte(sendstring,retlen, commsend);

   fRes=WriteData(m_hCom, commsend,retlen,FALSE);

also aus 290200 wird 290200596a7e

Code:
void CComDlg::StringToCommbyte (CString input, DWORD& length, byte* sendbytescom)
{
   input.Remove((char)0x20);
   length=length/2;
   byte sendbytes[10000] = {0};
   DWORD count=0;
   BOOL firsttrail;
   if (input.Mid(0,2)=="7E")
   { 
      firsttrail=true;
   }
   for (DWORD count=0; count<length; count++)
      {
         sendbytes[count]=(byte)_strtoui64(input.Mid(count*2,2),NULL,16);
      }
   DWORD crc=CalcCRC16(sendbytes,length,firsttrail);
   sendbytes[length]=(byte)(crc%0x100);
   sendbytes[++length]=(byte)(crc/0x100);
   DWORD sc=0;
   
   for (DWORD s=0;s<length+1;s++)
   {
   switch ((byte)sendbytes[s])
      {
         case 0x7E:
            if (sc!=0)
            {
            sendbytescom[sc]=(byte)0x7D;
            sendbytescom[++sc]=(byte)0x5E;
            } else
            sendbytescom[sc]=sendbytes[s];
            break;
         
         case 0x7D:
            sendbytescom[sc]=(byte)0x7D;
            sendbytescom[++sc]=(byte)0x5D;
            break;

         default:
            sendbytescom[sc]=sendbytes[s];
            break;
      }
   sc++;
   }
   length=sc;
}
Kann mir bitte das jemand im Groben übersetzen mit dem CRC16 muss ich mich dann halt kümmern
der zuntere Teil "Switch" sollte auch kein problem sein

[edit=Phoenix]Delphi- in Code-Tags geändert. Das in den geschweiften klammern sieht sonst so nach Kommentar aus Mfg, Phoenix[/edit]
Marcel
  Mit Zitat antworten Zitat