Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Ошибка распознавания символов на пк от мк HSEROUT
serfo0185 Дата: Вс, 01.03.2015, 15:45  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 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 в бинарном виде.
не пойму где проблема.
ЯНДЕКС Дата: 01.03.2015
ADMIN Дата: Вс, 01.03.2015, 19:49  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Есть такая прога - LGComSpy. С помощью нее можно посмотреть, что идет в сом порт извне.
shaman Дата: Вс, 01.03.2015, 19:50  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Вечер добрый , приложите код программы своей, и тогда станет ясно где у Вас проблема. А так гадать , что да как и почему , нет смысла .
serfo0185 Дата: Вс, 01.03.2015, 22:27  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 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
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 27.01.2015

Статус: Offline

Цитата anatol ()
Посмотрите чтобы на передачу не шли управляющие символы из диапазона 00 --- 2F в прямом виде.
Это где нужно смотреть?
anatol Дата: Пн, 02.03.2015, 14:18  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 27.01.2015

Статус: Offline

Проблему решил.
Переписал программу на Протоне и все пошло.
ADMIN Дата: Ср, 04.03.2015, 16:30  |                                                                                                                Сообщение # 9
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Прогресс!
  • Страница 1 из 1
  • 1
Поиск: