Com порт. Перекодировать принятый байт
Добавлено: 12 май 2009, 22:03
Всем привет,
Прошу помочь разобраться. Работаю с COM-портом, при помощи компоненты ComPort Library version 3.10, всё здорово, всё работает. Вот только загвоздка вот в чем:
От устройства я принимаю байты (вида: 0х01 0хBA 0xFF ... - вобщем что угодно но только не символы), а этот компонент, да и другие подобные читают из ком порта именно символы. Как мне преобразовать строковый символ что я принял в реально переданный числовой байт?
C HexToInt никогда проблем не было, там вот как происходит дело:
С ком-порта считывается символ в формате string. Так вот мне этот символ, что я считал необходимо преобразовать в число(десятиричное/шестнадцетиричное - без разницы.)
Я опробывал конструкции по переводу символа в его числовой код [ф-ции Byte() , ord()], так вот - некоторые символы они переводят, а с некоторыми у них проблема и их попросту зарезает.
Вот попробую со скриншотами:
Вот как происходит прием и конвертация сейчас:

а вот как должно на самом деле(программа Terminal 1.9b):

Как видно - 2 байта почему то сливаются в один, либо происходит неправильная конвертация символ-байт.
Вобщем мне нужно добиться эффекта, как на 2ом скриншоте
* Прошу прощения, но на данном форуме картинки в виде ссылок прикрепляются =(
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Нашел причину сам:
Всё работает на самом деле, и перекодировка идет нормально - ошибка вот в чем:
Все эти компоненты для работы с ком портом: BCPort, Com Port Library - все они работают жутко медленно (если ставить задержку хотя бы в 1 милисекунду (а это ужасно долго) между отправляемыми данными - они не успевают различать принятые байты и лепят всё в одно) - вобщем в топку их.
Пожалуйста посоветуйте максимально быстрый способ чтения/записи/работы с ком-портом?
Прошу помочь разобраться. Работаю с COM-портом, при помощи компоненты ComPort Library version 3.10, всё здорово, всё работает. Вот только загвоздка вот в чем:
От устройства я принимаю байты (вида: 0х01 0хBA 0xFF ... - вобщем что угодно но только не символы), а этот компонент, да и другие подобные читают из ком порта именно символы. Как мне преобразовать строковый символ что я принял в реально переданный числовой байт?
C HexToInt никогда проблем не было, там вот как происходит дело:
С ком-порта считывается символ в формате string. Так вот мне этот символ, что я считал необходимо преобразовать в число(десятиричное/шестнадцетиричное - без разницы.)
Я опробывал конструкции по переводу символа в его числовой код [ф-ции Byte() , ord()], так вот - некоторые символы они переводят, а с некоторыми у них проблема и их попросту зарезает.
Вот попробую со скриншотами:
Вот как происходит прием и конвертация сейчас:

а вот как должно на самом деле(программа Terminal 1.9b):

Как видно - 2 байта почему то сливаются в один, либо происходит неправильная конвертация символ-байт.
Вобщем мне нужно добиться эффекта, как на 2ом скриншоте
* Прошу прощения, но на данном форуме картинки в виде ссылок прикрепляются =(
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Нашел причину сам:
Всё работает на самом деле, и перекодировка идет нормально - ошибка вот в чем:
Все эти компоненты для работы с ком портом: BCPort, Com Port Library - все они работают жутко медленно (если ставить задержку хотя бы в 1 милисекунду (а это ужасно долго) между отправляемыми данными - они не успевают различать принятые байты и лепят всё в одно) - вобщем в топку их.
Пожалуйста посоветуйте максимально быстрый способ чтения/записи/работы с ком-портом?