Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///v12345vtm
- String versie = " youtube : v12345vtm esp01 nanotussenstap voor nodemcu1.0 ino= pehaRS232CRCnanocrc3 \n\n\n ";
- String hexstring = "";
- //int maxIndex = 0 ;
- //int found = 0;
- int elementen = 0;//te waarde hoeveel elementen in ions tabel zitten
- #define tabellengte 10
- String myArray[tabellengte] = {"a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" };
- long int integertabel[tabellengte] ; //ons hex string in decimaal tabel gezet
- //////////////////////
- void setup() {
- delay(500);
- Serial.begin(115200);
- delay(1000);
- Serial.println("\n\n\n\n esp8622-01 nodemcu1.0 12E starting");
- Serial.println(versie);
- }
- ///////////////
- void naartabel(String data, char separator)
- {
- elementen = 0;
- String myArray2[10];
- int maxIndex = data.length() - 1;
- int strIndex[] = {0, -1};
- for (int i = 0; i <= maxIndex ; i++) {
- if (data.charAt(i) == separator || i == maxIndex) {
- strIndex[0] = strIndex[1] + 1;
- strIndex[1] = (i == maxIndex) ? i + 1 : i;
- // Serial.print(" waarde: ");
- String waarde = data.substring(strIndex[0], strIndex[1]);
- // Serial.println(waarde);
- myArray[elementen] = waarde ;
- elementen++;
- }
- }
- for (int x = 0; x < tabellengte; x = x + 1) {
- char charbuf[4];
- myArray[x].toCharArray(charbuf, 8);
- long int rgb = strtol(charbuf, 0, 16); //=>rgb=255
- integertabel[x] = rgb;
- }
- }
- /////////////////
- void loop() {
- hexstring = "FE 00 06 00 00 01 01"; // get feedback from inputmodule 00.00
- hexstring = "FE 00 06 00 40 01 01"; //get feedback from outputmod 00.00 //C0 FE 00 06 00 40 01 01 BF A8 C1
- hexstring = "FE 00 06 00 A0 01 01"; //get feedback from dimmermod 00.00 //C0 FE 00 06 00 A0 01 01 1E A1 C1
- crcberekenen(hexstring);
- // toontabellen();
- delay(10000);
- }
- ///////////
- void toontabellen()
- {
- Serial.println("-----------------");
- for (int x = 0; x < tabellengte; x = x + 1) {
- Serial.print (x);
- Serial.print("hex=");
- myArray[x] = myArray[x] ;
- Serial.println(myArray[x]);
- }
- Serial.println("-----------------");
- for (int x = 0; x < tabellengte; x = x + 1) {
- Serial.print (x);
- Serial.print(" intdec: ");
- Serial.println(integertabel[x]);
- }
- Serial.println("-----------------");
- Serial.print(" elementen: ");
- Serial.println(elementen);
- delay (50000);
- }
- ////////////////
- void crcberekenen(String hexstring)
- {
- naartabel(hexstring, ' ' );//een tabel met strings en een tabel met longintegers
- long int tempcrc = 65535 ; //0xFFFF; //'notatie voor 0xFFFF
- for (int i = 0; i < elementen; i = i + 1)
- {
- tempcrc = tempcrc ^ (integertabel[i]); // ^ = xor
- //nu gaan we 8keer schuiven met bytes
- for (int j = 8; j > 0; j = j - 1)
- {
- long int een = 1;
- long int som = tempcrc & een;
- if (som == 0x01) {
- //$temp_crc = ($temp_crc >> 1) ^ 0x8408;
- tempcrc = tempcrc >> 1; // 'bug in vb.net als je deelt door 2 !! niet doen dus beter >>1 bit naar rechts opschuiven
- tempcrc = tempcrc ^ 0x8408;//onze polynoom
- }
- else
- {
- tempcrc = tempcrc / 2;
- }
- }
- }
- tempcrc = tempcrc ^ 65535 ;//0xFFFF 'resultaat is een getal 45053 dec = AFFD hex = crc:>> FD AF
- String sCodeValue = String(tempcrc, HEX);
- //alles in grote letters zetten voor de schoonte
- sCodeValue.toUpperCase() ;
- String crcbyte1;
- String crcbyte2;
- crcbyte1 = sCodeValue.substring(2, 4) ;
- crcbyte2 = sCodeValue.substring(0, 2) ;
- Serial.print (" crc1= ");
- Serial.print (crcbyte1);
- Serial.print (" crc2= ");
- Serial.println (crcbyte2);
- Serial.print (" in= ");
- Serial.println (hexstring);
- Serial.print (" out= ");
- Serial.println ("C0 " + hexstring + " " + crcbyte1 + " " + crcbyte2 + " C1" );
- Serial.print(" bassis zonder startstopCRC elementen: ");
- Serial.println(elementen);
- }
Advertisement
Add Comment
Please, Sign In to add comment