Musiker ?
CD-Player -> Notebook -> Michpult -> 2 x 1,5 KW
Alles Klar !?
Code:
bool CRNProtokoll::SetByteData(BYTE* Buffer,BYTE Len)
{
// Daten in den Stream schreiben und Maskieren
// Framen
BYTE x=0;
BYTE bLenAdd = 1;
m_bLowLevel[0] = CTL_C_STX;
for(x=0;x<Len;x++)
{
if((Buffer[x] & CTL_M_MASK) == CTL_C_BASE)
{
m_bLowLevel[x+bLenAdd] = CTL_C_PFX;
bLenAdd++;
m_bLowLevel[x+bLenAdd] = Buffer[x] | CTL_M_ADON;
}
else
{
m_bLowLevel[x+bLenAdd] = Buffer[x];
}
m_bTxBcc ^= Buffer[x];
if((x+bLenAdd+2) >= 1024)
{
//Mehr Buffer haben wir nicht
return false;
}
if(x == 127)
{
// Neuen Frame an fangen
// Das müssen wir noch prüfen
m_bLowLevel[x+bLenAdd] = m_bTxBcc;
m_bLowLevel[x+bLenAdd+1] = CTL_C_ETX;
m_bLowLevel[x+bLenAdd+2] = CTL_C_STX;
bLenAdd = bLenAdd+2;
m_bTxBcc = 0;
m_bFrameCount ++;
}
}
m_bLowLevel[x+bLenAdd] = m_bTxBcc;
m_bLowLevel[x+bLenAdd+1] = CTL_C_ETX;
m_bLength = Len+2+bLenAdd;
return true;
}
Und so sieht der aufruf dann aus
Code:
void CMain::SendBuffer(BYTE *buffer,int len)
{
// Daten zu sammenbauen und schicken
CRNProtokoll* pBuffer = new CRNProtokoll;
pBuffer->SetByteData(buffer,len);
// Wie lange ist das was wir senden müssen ?
len = pBuffer->GetLevel0(NULL);
BYTE* SendBuffer = new BYTE[len];
// Holen der daten ?
pBuffer->GetLevel0(SendBuffer);
CString csTrace;
csTrace.Format("Schreibe Daten %s",BinToTrace(SendBuffer,len));
TraceIt(csTrace);
m_clV24.WriteOut(SendBuffer,len);
delete SendBuffer;
delete pBuffer;
}
Gruß
Lesezeichen