|
|
  |
прием данных по RS-232, описание алгоритма обработки входящих данных |
|
|
|
Aug 11 2006, 16:10
|

Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391

|
Цитата: ... и определить что мы приняли... Однозначно: 10 байт приняли.  А если серьезно, что Вы имеете ввиду под словами "определить что приняли"? Поподробнее плз.
|
|
|
|
|
Aug 12 2006, 08:48
|

Местный
  
Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344

|
Цитата(bodja74 @ Aug 11 2006, 23:29)  Если на асме пишете,то по определению будете сравнивать каждый символ. Алгоритм сравнения с базой(таблицей) данных достаточно простой.
1 Сравниваете 1 полученный символ с 1 в таблице 2 Если совпало ,сравниваете 2 со 2 3 Если не совпало ,переходим на следующую позицию в таблице. 4 Опять сравниваем 1 с 1 и т.д. пока все не совпадет
можно другой способ,считать CRC полученный байтов и сравнивать с уже подготовленными CRC каждой позиции в таблице. второй вариант подходит больше первого так как теоретически будет занимать меньше времени. Можно примерчик по подсчету CRC (алгоритм)? Для Woodoo: поняли вы все абсолютно правильно, можно написать тупо, а я хочу более универсальный алгоритм который можно будет использовать неодинажды.
|
|
|
|
|
Aug 12 2006, 11:21
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата второй вариант подходит больше первого так как теоретически будет занимать меньше времени. Можно примерчик по подсчету CRC (алгоритм)? Ведем подсчет контрольной суммы, тоесть складываем числовые значения всех символов(чисел)-получаем результат,на асме немного морока с 2байтной величиной,можно и 1байтной обойтись и потом проверить посимвольно совпавшую позицию для убедительности.
|
|
|
|
|
Aug 12 2006, 11:34
|

Местный
  
Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344

|
Цитата(bodja74 @ Aug 12 2006, 14:21)  Цитата второй вариант подходит больше первого так как теоретически будет занимать меньше времени. Можно примерчик по подсчету CRC (алгоритм)?
Ведем подсчет контрольной суммы, тоесть складываем числовые значения всех символов(чисел)-получаем результат,на асме немного морока с 2байтной величиной,можно и 1байтной обойтись и потом проверить посимвольно совпавшую позицию для убедительности. думаю байта будет достаточно. проверяем сначала его потом побайтно, а потом если не совпало ищем может где есть совпадения. так наверное и буду делать.
|
|
|
|
|
Aug 12 2006, 16:00
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(aaarrr @ Aug 12 2006, 18:43)  С CRC имело бы смысл связываться, если бы требовалось распознать сотни слов, а здесь их и десятка не наберется. Выйгрыш по скорости в данном случае тоже, мягко говоря, сомнителен. Целиком и полностью  2 chief_olimp Если это перевести на ассемблер, будет Вам счастье  Код int strcmp(register const char * s1, register const char * s2) { register signed char r;
while(!(r = (unsigned char)*s1 - (unsigned char)*s2++) && *s1++) continue; return r; }
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|