реклама на сайте
подробности

 
 
> работа с COM портом, чтение из приёмного буфера
TigerSHARC
сообщение Feb 21 2011, 10:17
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Здравствуйте!
Никак не могу правильно прочитать данные из COM-порта.

Мой процессор отправляет в компорт в бесконечном цикле (каждые 156 мкс) int-число и две эскейп последовательности в таком виде

int d = 123;
printf("%d"\r\n, d); //отправляю в порт

Теперь моя задача считать на компьютере эти данные в такую же переменную. Посредствам стандартных средств в СBuilder я заливаю всё что передаёться в COM-пот в массив чаров buf зармером 255.

Вопрос: как считывать последовательно эти данные из массива buf в переменную типа int?
Как я понимаю нужно как то логически в цикле разделять набор чисел в массиве buf, а затем преобразовывать в int. Но конструкцию никак не придумаю(((((
буду признателен за любую помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Feb 21 2011, 18:19
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



У вас какая скорость передачи в COM? Скорее всего не выше 115200 baud, т.е. 8,7 мкс на бит. Стандартная посылка 8+1 стоп. Итого 9 бит на байт. Вы посылаете int (вроде как 4 байта для TigerShark) + CRLF. Итого 6*9*8,7 = 469 мкс.

Вы шлете данные каждые каждые 156 мкс. И что вы хотите читать?
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Feb 21 2011, 18:27
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Цитата(sergeeff @ Feb 21 2011, 21:19) *
У вас какая скорость передачи в COM? Скорее всего не выше 115200 baud, т.е. 8,7 мкс на бит. Стандартная посылка 8+1 стоп. Итого 9 бит на байт.
А если прибавить стартовый бит, ситуация ещё более усугубляется sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 21 2011, 18:58
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(RabidRabbit @ Feb 21 2011, 20:27) *
А если прибавить стартовый бит, ситуация ещё более усугубляется

А если приглядеться внимательнее к передаваемому формату, то для 32-битового числа со знаком получается ±2147483648, итого 12 байтов. x10 = 120 битов. x8.7 = 1042us

Цитата(zltigo @ Feb 21 2011, 20:44) *
Запомните, atoi() НЕ является стандартной ANSI функцией. По этой причине ее нет в доброй половине библиотек.

atoi как раз является... только она здесь не нужна.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 21 2011, 23:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (ViKo @ Feb 21 2011, 21:58) *
atoi как раз является... только она здесь не нужна.

Дело не в ненужности, а в том, что НЕ ANSI стандартная. Кроме того она часто является просто лишней оберткой для strtol().


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TigerSHARC   работа с COM портом   Feb 21 2011, 10:17
- - skripach   Цитатаprintf("%d"\r\n, d); pri...   Feb 21 2011, 10:50
|- - zltigo   QUOTE (skripach @ Feb 21 2011, 13:50) Исп...   Feb 21 2011, 18:44
- - Zelepuk   Что за аtoi ? Функция printf посылает в порт микр...   Feb 21 2011, 11:01
|- - Палыч   Цитата(Zelepuk @ Feb 21 2011, 14:01) Функ...   Feb 21 2011, 18:21
- - zombi   Как организован доступ к вашему буферу? Какому чис...   Feb 21 2011, 16:32
||- - sergeeff   Цитата(ViKo @ Feb 21 2011, 21:58) А если ...   Feb 21 2011, 19:24
||- - ViKo   Цитата(zltigo @ Feb 22 2011, 01:10) Дело ...   Feb 22 2011, 07:43
||- - zltigo   QUOTE (ViKo @ Feb 22 2011, 10:43) в C99 о...   Feb 22 2011, 10:55
|- - TigerSHARC   Цитата(sergeeff @ Feb 21 2011, 21:19) У в...   Feb 21 2011, 18:31
|- - sergeeff   Цитата(TigerSHARC @ Feb 21 2011, 21:31) П...   Feb 21 2011, 18:47
|- - TigerSHARC   Цитата(sergeeff @ Feb 21 2011, 21:47) Вы ...   Feb 21 2011, 19:21
|- - ViKo   Цитата(TigerSHARC @ Feb 21 2011, 21:21) к...   Feb 21 2011, 19:24
- - TigerSHARC   За ссылку про кольцевой буфер спасибо. А задача у...   Feb 21 2011, 18:21
- - TigerSHARC   Ребятааааа!!! Ну какой ещё ADC)))) ест...   Feb 21 2011, 20:02
|- - sergeeff   Цитата(TigerSHARC @ Feb 21 2011, 23:02) П...   Feb 21 2011, 20:17
- - TigerSHARC   Ладно, думаю всё это особенности общения на форуме...   Feb 21 2011, 20:32
- - _Pasha   Если не хватает скорости, но очень хочется именно ...   Feb 22 2011, 05:20
- - ar__systems   Цитата(TigerSHARC @ Feb 21 2011, 05:17) д...   Feb 26 2011, 14:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016