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

 
 
> WinAVR! Отправить/принять "структуру" по UART?, Необходимо отправить и принять структуру Struct по UART!?
Samodelkin
сообщение Dec 28 2007, 09:56
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 29-05-05
Из: Днепропетровск
Пользователь №: 5 520



Есть структура:

struct {
unsigned char Status_from_pult;
unsigned int Reserv_from_pult;
}RX_Data;


struct {
unsigned char Status_for_pult;
unsigned int Voltage_duga_for_pult;
unsigned int Voltage_N1_for_pult;
unsigned int Voltage_N2_for_pult;
unsigned int Temperarura_for_pult;
}TX_Data;

Так вот, как вообще можно вычислить длину пакета данных из которых состоит эта структура (чтоб самому не считать каждый раз, когда размер структуры будет меняться для разных устройств), и как указать UARTу что эту структуру надо передать побайтово, или принять данные и положить их в эту структуру????
Отправка строки происходит просто:

USART_Transmit(TX_Data[count])

где count это номер байта. А вот со структурой такое не проходит!!!!!????

Что тут можно придумать???? Всю доступную литературу и хелпы по WinAVR я уже проштудировал, но ничего подобного не нашел!!!
Всем кто откликнется заранее огромное спасибо!!!

Сообщение отредактировал Samodelkin - Dec 28 2007, 09:58
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Dec 28 2007, 10:23
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Вообще говоря, это вопрос не по WinAVR как таковому, а по языку С и по организации программы.
В наиболее примитивном виде
Код
void USART_Transmit_block( void *ptr, size_t size)
{
    uint8_t *p = (uint8_t*)ptr;
    while(size--)
        USART_Transmit( *p++);
}

...
    USART_Transmit_block( &TX_Data, sizeof(TX_Data) );

В данном случае (8-битный процессор) о выравнивании можно не думать.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



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

 


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


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