C# operacje na zmiennych typu Byte

0

mecze się poł nocy i nie mogę tego poskładać w żaden sposób.

Mam rózne zmienne bajtowe


        Byte[] BuforTx = new Byte[512];
        Byte[] BuforRx = new Byte[512];
        Byte[] SendCom = new Byte[16];

        Byte[] USB_Init_Send = { 0x06, 0x3f, 0x38, 0x53, 0x49, 0x44, 0x3f };
        Byte[] USB_Init_Rx =   { 0x06, 0x4f, 0x4b, 0x38, 0x53, 0x49, 0x44 };


        Byte[] BajtPort1, BajtPort2, BajtPort3, BajtPort4;

        Byte[] BoolBit = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };

 

chciałbym przykładowo w bajcie BajtPort1 ustawić 3 bit na 1 - nie wiem jak to zrobić :-(

albo inny przykład .... dodać ze sobą 2 bajty wiedząc oczywiście ze nie przekroczę 0xFF,
albo w programie ustalić wartość dla zmiennej typu Byte ..... nie wiem ale jakos nie mogę tego znaleźć w necie i nie wiem jaka jest skladnia takich operacji :-(

możecie mi pomoc ?

0
BajtPort1 |= BoolBit[2]; 

niestety tak nie przyjmuje :-(

Jakoś nie mogą znaleźć żądnego przykładu ... nawet nie mogę przypisać wartości przykładowo.

BajtPort1 = 0;

bo mardzi ze "cannot implicitly convert type 'int' to 'byte[]'

0

tak na przyklad mozna robic to w c++
http://ideone.com/ePei1o

ten sam operator masz w c#
https://msdn.microsoft.com/en-us/library/vstudio/6k6e8wk0(v=vs.100).aspx

pomysl jak to zrobic ;)

no i to Ci sie jeszcze przyda
https://msdn.microsoft.com/en-us/library/system.convert.tobyte%28v=vs.110%29.aspx

0

BajtPort1 to tablica, a nie bajt, nie możesz tam ustawić bitu.
W bajcie bit możesz ustawić tak: byte myByteToTestBitSetting = 123, bitToSet = 2 /*0 is the first bit*/; myByteToTestBitSetting |= (byte)(1 << bitToSet);.

0

usunąłem [] z byte battport1 .... ale nadal widzę problemy....

nie wiem, po prostu mnie już dobijają te bajty :(

możecie mi dać jakiegoś linka jak mam napisać procedurę aby czytała z comport do tablicy byte ?

bo rozumiem, ze mogę tablicy bajtową sobie sprawdzać w taki sposób:

int y=0
for( x=0 ; <tablica[0]; x++)   //pierwszy bajt w tablicy określa ilość bajtów do sprawdzenia
{
     if (buforRx[x] /= (tablica[x+1]) y++
} 

a potem sprawdzić czy y=0

0

Człowieku, masz problem ze zrobieniem prawidłowej pętli, a za operacje na bitach się zabierasz. Nie widzisz nawet różnicy między /= a |=. Masz duże braki w podstawach, które to braki uniemożliwiają Ci zrozumienie naszych podpowiedzi.
Nie zrozum tego jako jakiejś złośliwości. Chodzi mi o to, że my Ci odpowiadamy zdaniami wielokrotnie złożonymi w języku, z którego znasz tylko kilka słów. Wzbogać swój słownik, a zrozumiesz nasze odpowiedzi :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1