Witam, mam prośbę. Mam 5 czujników. Każdy czujnik wysyła 3 bajty.
Pierwszy mówi mi o tym który to jest czujnik (0;1;2;3;4). Drugi to starszy
bajt paczki danych. Trzeci to młodszy bajt. Teraz tak bufor zapełnia się
danymi i teraz muszę wyłuskać konkretne mnie bajty.
robię modulo 15 tak,by mieć pełny pakiet dla wszystkich 5 czujników (5
czujników po 3 bajty).
Kolejno za pomocą operacji na reszcie z dzielenia 15 wybieram
- kolejność - czyli informacje który to czujnik;
- starszy bajt;
- młodszy bajt;
i zapisuje je w plikach.
teraz sklejenie starszego i młodszego wygląda tak:
wynik[i]=starszy[i]*256+młodszy[i];
niestety składanie tych bajtów nie wychodzi mi poprawnie.
Mógłby ktoś rzucić co robię źle?
z góry dzięki.
Proszę umieszczać kod w znacznikach code lub załączniku, a nie linkować do zewnętrznych stron.
Sugeruję nie wklejać całego kodu, tylko odpowiedni fragment lub funkcję.
Dr.Vee
Pierwszy mówi mi o tym który to jest czujnik (0;1;2;3;4). Drugi to starszy
bajt paczki danych. Trzeci to młodszy bajt. Teraz tak bufor zapełnia się
danymi i teraz muszę wyłuskać konkretne mnie bajty.
robię modulo 15 tak,by mieć pełny pakiet dla wszystkich 5 czujników (5
czujników po 3 bajty).
Kolejno za pomocą operacji na reszcie z dzielenia 15 wybieram
- kolejność - czyli informacje który to czujnik;
- starszy bajt;
- młodszy bajt;
i zapisuje je w plikach.
teraz sklejenie starszego i młodszego wygląda tak:
wynik[i]=starszy[i]*256+młodszy[i];
niestety składanie tych bajtów nie wychodzi mi poprawnie.
Mógłby ktoś rzucić co robię źle?
z góry dzięki.
Proszę umieszczać kod w znacznikach code lub załączniku, a nie linkować do zewnętrznych stron.
Sugeruję nie wklejać całego kodu, tylko odpowiedni fragment lub funkcję.
Dr.Vee
void __fastcall TForm1::Button2Click(TObject *Sender)
{//x
if (hNumPort > 0) // jezeli port jest otwarty
{//a
Read_Comm(hNumPort, &Buffer_I[0], &Number_Bytes_Read,
sizeof(Buffer_I));
if (Number_Bytes_Read > 0) // jeżeli odebrano jakieś bajty
{//b
int k=0;
int z=0;
//int c=0;
for( int i=0; i < Number_Bytes_Read; i++ )
{//l
z = i%15;
//Memo14->Lines->Add(z); // modulo 15 pozwala na wyluskanie pelnej paczki pomiarow dla 5 czujnikow
if((i!= 0) && (z==0))
{//k
Memo3->Lines->Add("123");
};//k
if( (z==0 || z==3 || z==6 || z==9 || z==12)) // kolejnosc
{
kolejnosc[k] = Buffer_I[i];
Memo4->Lines->Add(kolejnosc[k]);
};
if ((z==1||z==4||z==7||z==10||z==13)) // starszy bit
{
starszy[k] = Buffer_I[i];
Memo5->Lines->Add(starszy[k]);
//starszyp[k] = starszy[k];
//if (starszy[k] == 192) {
//starszyp[k] = 0; };
//Memo12->Lines->Add(starszyp[k]);
};
if ((z==2||z==5||z==8||z==11||z==14)) // mlodszy bit
{
mlodszy[k] = Buffer_I[i];
Memo6->Lines->Add(mlodszy[k]);
};
wynikp[k] = (starszy[k])*256 + mlodszy[k];
Memo13->Lines->Add(wynikp[i]);
//=========================================================================
// k = z%3;
// Memo15->Lines->Add(k);
// Memo15->Lines->SaveToFile("k.dat");
//if (k==1||k==2){
//if ((z==1||z==2||z==4||z==5||z==7||z==8||z==10||z==11||z==13||z==14)){
//if (z!=0||z!=3||z!=6||z!=9||z!=12){
//wynikp[z] = starszyp[z]*256+mlodszy[z];
//Memo13->Lines->Add(wynikp[z]); //};
//wynik[i] = (wynikp[i])/2;
// }
Memo13->Lines->SaveToFile("wynikp.dat");
if (kolejnosc[z]==0||kolejnosc[z]==1||kolejnosc[z]==2||kolejnosc[z]==3||kolejnosc[z]==4)
{
pomiary.czujnik_0[i]=wynik[i];
//Memo7->Lines->Add(pomiary.czujnik_0[i]);
//Memo7->Lines->SaveToFile("1.dat");
}