Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2021, 21:31   #11
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

Что-то я не понимаю. Строка - это и есть массив байтов. Попробуйте ничего никуда не переводя передать, к примеру, строку '1234' - что примет ?
Что значит "байт сдвигается на единицу?" Вместо байта 30 принимается, к примеру, 60 или наоборот? А не может ли один из портов быть настроенным на 9-битный режим?
Если иметь осциллограф или лог. анализатор, то проблема решается просто, "как 2 байта переслать"
digitalis вне форума Ответить с цитированием
Старый 20.07.2021, 10:38   #12
Naska_Igorevna
Пользователь
 
Регистрация: 15.09.2013
Сообщений: 12
По умолчанию

Передаю, сразу строку без кодирования
Изображения
Тип файла: png Безымянный.png (46.8 Кб, 26 просмотров)
Naska_Igorevna вне форума Ответить с цитированием
Старый 20.07.2021, 11:15   #13
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

Прекрасно! Закономерность прослеживается.
Принятый байт проинвертирован и сдвинут влево на 1 позицию.
Вы передаёте строку, а принятые байты интерпретируете как числа? А если без преобразования?
Строка => Строка ?
В С# не секу совершенно, поэтому в каком месте глюк - сказать не могу.
Это учебная задачка - или по работе?
Можно (и нужно) попробовать при тех же настройках портов погонять вашу связку портов какой-нибудь стандартной прогой, в инете они есть. Но скорее всего, это не аппаратный глюк.
Если уж совсем никак, то я бы составил "словарь" - переданному байту X соответствует принятый Y, и уж по нему перекодировал бы обратно. Но это - "костыли" на крайний случай.
А больше ничего не приходит в бошку.
Когда всё это под рукой, такие вещи решаются несложно.
---------------------
А СОМ-порты реальные - или USB-COM?

Последний раз редактировалось digitalis; 20.07.2021 в 11:25.
digitalis вне форума Ответить с цитированием
Старый 20.07.2021, 11:30   #14
Naska_Igorevna
Пользователь
 
Регистрация: 15.09.2013
Сообщений: 12
По умолчанию

К сожалению, эта закономерность прослеживается не всегда, при повторном запуске, возможны изменения чисел в рандомном порядке.
Передача и так уже идёт без всяких преобразований.
Порты реальные
Naska_Igorevna вне форума Ответить с цитированием
Старый 20.07.2021, 12:06   #15
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

Кабель поменять...
А вообще - взять осциллограф и посмотреть - что там происходит.
Цитата:
Передача и так уже идёт без всяких преобразований.
Я вижу преобразование при приёме. Переданный байт => числовое представление принятого байта.

Последний раз редактировалось digitalis; 20.07.2021 в 22:00.
digitalis вне форума Ответить с цитированием
Старый 20.07.2021, 20:10   #16
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Существуют программы - мониторы портов. С их помощью можно наблюдать принимаемые и передаваемые данные.

Лично я пользовался COM Port Toolkit. Правда, устанавливал его ещё когда программа была совсем бесплатной.
Существуют и другие, но за ненадобностью уже не слежу за ними.

Работать с мониторами просто - выбираете порт, настраиваете формат обмена, нажимаете "подключиться". Теперь видите весь обмен.

Т.е. увидите отправку, приём. Сверка покажет, в какой части программы искать ошибку - в передаче или в приёме.
FPaul вне форума Ответить с цитированием
Старый 20.07.2021, 23:45   #17
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Naska_Igorevna, порты и кабель тестировали программой Terminal 1.9b?
Проведите тест этой программой.
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 21.07.2021, 14:24   #18
Naska_Igorevna
Пользователь
 
Регистрация: 15.09.2013
Сообщений: 12
По умолчанию

Всем спасибо за участие, проблема была в железе, а не в программе
Naska_Igorevna вне форума Ответить с цитированием
Старый 21.07.2021, 15:25   #19
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,657
По умолчанию

"Так вот почему не стреляло - не заряжено было !"
digitalis вне форума Ответить с цитированием
Старый 21.07.2021, 20:48   #20
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Раз оба COM порта находятся на одном компьютере, то можно и их и кабель связи между ними эмулировать программно - com0com
тут эмулятор
https://sourceforge.net/projects/com0com/
http://com0com.sourceforge.net

тут небольшие пояснения (среди прочих описаний) https://habr.com/ru/company/inforion/blog/445798/

К чему это я - какой-то приём данных присутствовал, т.е. обмен существовал. И я сомневаюсь, что дело не в программе.
FPaul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) kris14 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2017 15:42
Помогите найти ошибку пожалуйста никита134245 Паскаль, Turbo Pascal, PascalABC.NET 3 28.12.2015 12:53
C# пожалуйста помогите найти ошибку Olgazag Свободное общение 16 11.12.2013 07:33