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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 00:26   #1
Miyka
 
Регистрация: 30.05.2010
Сообщений: 4
По умолчанию Прием и передача байт и бит через COM-порт от 16 разрядного МК

Здравствуйте. Как мне правильно организовать получение с МК выборки значений через СОМ порт?
Функции чтения, открытия и записи есть. Тестировал на эмуляторе СОМ порта отсылку и прием бита - работает. А вот как получить с МК, учитывая что он присылает каждый Икс состоящий из 16 бит (2 байта), да еще и в big indian формате и записать все это в массив, что бы потом обработать, я не могу сообразить.
Далее функция, которая соединяет ПК с МК.
Код:
int connect(){
	OpenPort(10,115200);
	unsigned char bitConnect = 'c';
	// отправляем байт С миктрокотнтролеру
	WritePort(&bitConnect,sizeof(bitConnect));
	//теперь принимает байт R от МК для проверки соединения
			
	while(bitConnect!='r') ReadPort(&bitConnect,sizeof(bitConnect);			
	MessageBox(hWnd,"all right","Принято", MB_OK);
	ClosePort();
	return 1;
}
Спасибо.
Miyka вне форума Ответить с цитированием
Старый 01.06.2010, 23:19   #2
Miyka
 
Регистрация: 30.05.2010
Сообщений: 4
По умолчанию

Ладно, я начну первый.
Значит, я бы хотел получить совет как делать, а не готовый код (хотя конечно код не помешал бы). Я например не знаю что лушче использовать: есть такая штука как DWORD или использовать переменные типа bytе. Или как мне записать в байт 2 байта. И как будет выглядеть массив таких переменных?
Также как поменять фирму записи big indean на little indean, используя >> или что? и как? дайте пожалуйста совет.
Miyka вне форума Ответить с цитированием
Старый 02.06.2010, 09:48   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

тырк 1 2
Цитата:
Или как мне записать в байт 2 байт
без комментариев.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.06.2010, 21:36   #4
Miyka
 
Регистрация: 30.05.2010
Сообщений: 4
По умолчанию

Хорошо, как мне получая массив двух байтных значений записать их в массив инт?
Miyka вне форума Ответить с цитированием
Старый 10.06.2010, 21:50   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
массив двух байтных значений записать их в массив инт
Код:
TInf = array[0..1] of byte;
const  mas_inf: array[0..3] of TInf = ((28,17),(128,255),(0,120),(255,0));
   // получим 4-х элементный массив двухбайтных массивов
Пример обращения к массиву :
mas_byte:= mas_inf[2]; // получим массив (0,120)
_byte:= mas_byte[1]; // получим значение байта = 120
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 10.06.2010 в 21:55.
DeKot вне форума Ответить с цитированием
Старый 10.06.2010, 22:41   #6
Miyka
 
Регистрация: 30.05.2010
Сообщений: 4
По умолчанию

может я сейчас покажусь совсем глупым, но DeKot я не понял что ты написал.
мне надо двух байтные значения записать в одно значение инт.

Помогите мне разобраться в том как записать выборку из 1000 2х байтных значений в массив для последующего построения графика.
Miyka вне форума Ответить с цитированием
Старый 11.06.2010, 00:42   #7
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Попробуем объяснить. Я объявляю новый тип переменной TInf, как двух-элементный массив (имеет два элемента с индексами 0 и 1) типа byte.
Т.е. в переменную типа TInf можно занести два значения в пределах байта (0..255). Теперь если я объявлю массив - mas_1: array[0..1] of TInf; то элементы массива должны быть в пределах байта (0..255).
Далее я объявляю новую переменную mas_inf: array[0..3] of TInf;
Это массив массивов, т.е. массив mas_inf cостоит из четырех (в данном случае, т. к. указано [0..3]) массивов по два байта.
Получаем массив двухбайтных значений.
Вам не это надо?
Или что значит вырахение
Цитата:
мне надо двух байтные значения записать в одно значение инт.
Если просто сложить два байта арифметически, тогда это совсем другая песня. ( Но практически не встречалось такое преобразование байтов ).
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление ШД через LPT - порт remz Общие вопросы Delphi 17 06.10.2010 22:39
Передача информации с порта на порт Nice42ru Помощь студентам 5 10.02.2010 12:25
TServerSocket и TClientSocket передача и прием файла Vovandows Работа с сетью в Delphi 2 24.09.2008 09:23
1 байт 9 бит ?! Иллидан Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 13.04.2008 12:47