Помогите перести код в понятный Ардуино

dominion
Offline
Зарегистрирован: 30.05.2016

Всем привет!

Такая проблема, есть код написанный в CodevisionAVR. Помогите пожалуйста перевести его в код понятный для Ардуино. Я только только начинаю знакомиться с программированием.

 

Вот сам код:

unsigned int text_parametr = 0xFFE0;   // цвет параметров

char convert[32];

#define BUFFER_SIZE 200
unsigned char buffer[BUFFER_SIZE];                       // приемный буффер

flash unsigned char startCommunication[]                 = {0x81,0x10,0xf1,0x81,0x03};
flash unsigned char readDataByLocalIdentifier_RLI_ASS[]  = {0x82,0x10,0xF1,0x21,0x01,0xA5};
flash unsigned char readDTCByStatus[]                    = {0x84,0x10,0xF1,0x18,0x00,0x00,0x00,0x9D};
flash unsigned char clearDiagnosticInformation[]         = {0x83,0x10,0xf1,0x14,0x00,0x00,0x98};  

volatile unsigned char   counter;

 if (StartSend == 1) {                      
              SendCommand(readDTCByStatus,8);
              StartSend = 0;
            }
            else  {                                      // !!!!!!!!!!! ответ может быть произвольной длины !!!!!!!!!!!!!!
              if (counter>12) {                          // парсим  запрос + ответ 
			    unsigned char cislo_oshibok = 0; 
			    unsigned char otvet_length = 0; 
                cislo_oshibok = buffer[12];              // смотрим число ошибок   
			    otvet_length = 13+(3*cislo_oshibok);     // длинна ответа
                if (counter > otvet_length) {            // ждем пока примутся все ошибки
                  unsigned char i = 0;
			      unsigned int crc = 0;
			      for (i=8;i<otvet_length;i++) {               
                    crc = crc + buffer[i];
                  }
                  i =  crc & 0xFF;                       // берем 2 младших разряда 
			      if ( buffer[otvet_length] == i ) {     // проверяем контрольную сумму
			        sprintf(convert,"%d",cislo_oshibok);
				    put_string(150,5,convert,text_parametr,1);
                    if (cislo_oshibok != 0) {
				      for (i=0;i < cislo_oshibok;i++) {
				        sprintf(convert,"Р%02x%02x",buffer[(13+(i*3))],buffer[(14+(i*3))]);
                        if (i < 6) {
                          put_string(5,25+(i*15),convert,0xAFE0,1);
                        }
                        else if (i>=6 && i<12) {
                          put_string(65,25+((i-6)*15),convert,0xAFE0,1);
                        } 
                        else if (i>=12 && i<18) {
                          put_string(125,25+((i-12)*15),convert,0xAFE0,1);
                        }
				      }
                    }
                  }
                counter = 0;     

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Что именно не получается? "Перевести код" - это не ответ, конкретно, что именно не получается. Либо это тема в "Ищу исполнителя".

Ты привел только кусок кода, вырезку из середины. Как из крыла сделать птицу? Вряд ли кто скажет.

 

dominion
Offline
Зарегистрирован: 30.05.2016

Ну например ругается на put_string говорит нет такой команды. как эти строчки привести в понятный для дуино формат?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ну вот уже проще. Правда CodeVisionAVR у меня нет. Но это не так важно, как отсутвие полного исходника, где есть все заголовочные файлы, по которым можно хотя бы понять, что это за функция, put_string. Судя по виду, вывод на графический дисплей. В таком случае есть несколько вариантов. Найти подобную библиотеку для Ардуино. Собрать существующую библиотеку под Ардуино (попробовать). Возможно кто-то знает, я больше ничем не могу помочь.