roboforum.ru

Технический форум по робототехнике.

 

Прием данных CRC8

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Прием данных CRC8

Сообщение ARKADIY » 14 фев 2013, 22:29

Здрасте)) У меня возник такой вопрос. Написал я программу на C# для отправки символа по USART в виде контрол суммы.
Отправляется эта сумма очень просто:
port.Write(sendPacket, 0, sendPacket.Length);
sendPacket - наше значение CRC8 и sendPacket.Lenght - длина пакета
Кто работал с CRC8 или другими помогите пожалуйста, дайте пожалуйста функцию на С которая принимает такую инфу и
желательно если у кого нить есть проект то если можно то и его ))
ARKADIY
 
Сообщения: 3
Зарегистрирован: 14 фев 2013, 22:24

Re: Прием данных CRC8

Сообщение noonv » 14 фев 2013, 23:21

Аватара пользователя
noonv
 
Сообщения: 586
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Прием данных CRC8

Сообщение ARKADIY » 01 мар 2013, 09:15

noonv писал(а):пример

Я сделал код по твоему примеру. Он очень хороший и рабочий, но я использую софт на C#. Я пишу не на Ардуино, я могу принимать только char значения,а у тебя uint8_t. Но я в коде все поменял на unisgned char, но есть проблема. Я не знаю как слать данные с ПК :(((
Вот код для формирования CRC8
Код: Выделить всёРазвернуть
private void button1_Click(object sender, EventArgs e)
    {
        byte checksum;
        byte t = 255;   
        byte[] testVal = new byte[]{t};
        CRC8Calc crc = new CRC8Calc(CRC8_POLY.CRC8_CCITT);
        checksum = crc.Checksum(testVal);
        sp.Write(t.ToString());
        sp.Write(checksum.ToString());
    }

Я хочу отправлять числа на МК а это получается нельзя ((( И когда я шлю t.ToString() я наверно шлю "255", т.е. 3и символа.
Т.е. то что я тут шлю МК не воспринимает. Подскажите пожалуйста как с ПК слать данные на мк :((
ARKADIY
 
Сообщения: 3
Зарегистрирован: 14 фев 2013, 22:24

Re: Прием данных CRC8

Сообщение Angel71 » 01 мар 2013, 10:29

хоть изредка смотрите, что intellisense выдаёт или мсдн читайте, помогает. http://msdn.microsoft.com/ru-ru/library/ms143551.aspx.
Код: Выделить всёРазвернуть
public void WriteByte(byte data) { sp.Write(new byte[] { data }, 0, 1); }

или
Код: Выделить всёРазвернуть
byte[] ba = new byte[] { checksum };
sp.Write(ba, 0, 1);

или
Код: Выделить всёРазвернуть
byte[] ba = new byte[1];
ba[0] = checksum;
sp.Write(ba, 0, 1);
ba[0] = t;
sp.Write(ba, 0, 1);

или
Код: Выделить всёРазвернуть
sp.Write(new byte[] { checksum }, 0, 1);
sp.Write(new byte[] { t }, 0, 1);

или ...
Аватара пользователя
Angel71
 
Сообщения: 9232
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Прием данных CRC8

Сообщение ARKADIY » 01 мар 2013, 14:24

Angel71 писал(а):хоть изредка смотрите, что intellisense выдаёт или мсдн читайте, помогает. http://msdn.microsoft.com/ru-ru/library/ms143551.aspx.
Код: Выделить всёРазвернуть
public void WriteByte(byte data) { sp.Write(new byte[] { data }, 0, 1); }

или
Код: Выделить всёРазвернуть
byte[] ba = new byte[] { checksum };
sp.Write(ba, 0, 1);

или
Код: Выделить всёРазвернуть
byte[] ba = new byte[1];
ba[0] = checksum;
sp.Write(ba, 0, 1);
ba[0] = t;
sp.Write(ba, 0, 1);

или
Код: Выделить всёРазвернуть
sp.Write(new byte[] { checksum }, 0, 1);
sp.Write(new byte[] { t }, 0, 1);

или ...

Извини, просто С шарп знаю не долго, где то неделю, все время на qt c++ сидел, там легче все для меня.
Если делать потвоему методу то будет все отсылаться как символ или как число? просто у меня byte ассоциируется численная переменная, а регистр МК UDR принимает символы, что то вроде char((
Извини что говорю может где то глупости просто си шарп мне не знаком.
Код: Выделить всёРазвернуть
byte[] ba = new byte[] { checksum };
sp.Write(ba, 0, 1);

Этот метод мне знаком. Если на нем остановиться, то тут число как символ будет отправляться?
просто
Код: Выделить всёРазвернуть
public void Write(byte[] buffer,   int offset,int count)
я получается передаю байтовый буффер как символ?
ARKADIY
 
Сообщения: 3
Зарегистрирован: 14 фев 2013, 22:24

Re: Прием данных CRC8

Сообщение Angel71 » 01 мар 2013, 15:42

предыдущие сообщения не цитируют и не предыдущие тоже не всегда нужно цитировать. это же форум, а не почта.
по ссылке выше по русски написано, что делает ф-я. там же в мсдн есть справочник по типам и куча сопутствующих вещей разжёвано.
хз, что у вас с чем ассоциируется, что вы под чаром понимаете и что именно он из себя представляет в вашем компиляторе. смотрите какой тип у вас является байтом и ищите какая ф-я из уарта получает байты.
Аватара пользователя
Angel71
 
Сообщения: 9232
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Mail.ru counter