Ошибка распознавания символов на пк от мк HSEROUT
|
|
serfo0185 |
Дата: Вс, 01.03.2015, 15:45 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 27.01.2015
Статус:
Offline
|
Помогите уже бьюсь 2 день. В терминале ПК с МК (pic16f870) не точно распознает некоторые символы (выдает по USART командой Hserot в (PBP)) например 0 на терминале распознается как 0 1 как 1 2 как 2 3 как i 4 как 4 5 как µ и т.д. выяснил по таблице ASCII что некоторые передаваемые символы десятичное значение изменяют на 128 3 соответствует по таблице как 51 ("3"), а терминал видит ее как 179("i") на 128 больше. переменная не изменяется выдавал ee в бинарном виде. не пойму где проблема.
|
|
|
|
ADMIN |
Дата: Вс, 01.03.2015, 19:49 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Есть такая прога - LGComSpy. С помощью нее можно посмотреть, что идет в сом порт извне.
|
|
|
|
shaman |
Дата: Вс, 01.03.2015, 19:50 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Вечер добрый , приложите код программы своей, и тогда станет ясно где у Вас проблема. А так гадать , что да как и почему , нет смысла .
|
|
|
|
serfo0185 |
Дата: Вс, 01.03.2015, 22:27 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 27.01.2015
Статус:
Offline
|
вот код программы на команду с пк ZAPROS01E подключает 1 нагрузку на команду с пк ZAPROS01S опрос состояния что интересно управление проходит без проблем, а ответ от мк с ошибками ответ приходит в виде iºººE а должно 3000Е если сделать вывод в бинарном коде то приходит соответственно 11ºº11 11ºººº 11ºººº 11ºººº 1ººº1º1 что соответствует таблице ASCII, но должно приходить 110011 110000 и т.д. вместо 0 идет символ º что по таблице ASCII соответственно 0 равен 48 а символ º равен 176 что больше на 128 как будто приписывается лишний старший бит в коде. вот код программы
Сообщение отредактировал
serfo0185 - Вс, 01.03.2015, 22:29
|
|
|
|
anatol |
Дата: Вс, 01.03.2015, 22:31 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Писал долго. Все слетело пока боролся с огромным рисунком таблицы. А теперь спать пора. Посмотрите чтобы на передачу не шли управляющие символы из диапазона 00 --- 2F в прямом виде.
Таблица отсюда https://xakep.ru/wp-cont....?be07a4
Сообщение отредактировал
anatol - Вс, 01.03.2015, 22:44
|
|
|
|
serfo0185 |
Дата: Пн, 02.03.2015, 09:12 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 27.01.2015
Статус:
Offline
|
Цитата anatol ( ) Посмотрите чтобы на передачу не шли управляющие символы из диапазона 00 --- 2F в прямом виде. Это где нужно смотреть?
|
|
|
|
anatol |
Дата: Пн, 02.03.2015, 14:18 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Цитата if (dannye[0] = "0") and (dannye[1] = "1") and (dannye[2] = "S")then hserout ["3000", sost] endif if (dannye[0] = "0") and (dannye[1] = "2") and (dannye[2] = "S")then hserout ["3000",sost2] endif
В такого рода строках должен передаваться КОД знака, цифры, буквы. Иначе передается значение в двоичном коде. К примеру цифра семь как код "00000111", что равно управляющему коду "звонок".
Сообщение отредактировал
anatol - Пн, 02.03.2015, 14:20
|
|
|
|
serfo0185 |
Дата: Ср, 04.03.2015, 11:13 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 27.01.2015
Статус:
Offline
|
Проблему решил. Переписал программу на Протоне и все пошло.
|
|
|
|
ADMIN |
Дата: Ср, 04.03.2015, 16:30 | Сообщение # 9 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Прогресс!
|
|
|
|