Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 19.01.2015, 17:28   #41
WindoЗavr
Заблокирован
 
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
WindoЗavr на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

пример запустился, работает
я отключил открытие ком порта 1 и подключаю к нему устройство,а в программе открываю второй порт жму кнопку считать, но данные никуда не принимаются
Реклама:
WindoЗavr вне форума  
Непрочитано 19.01.2015, 18:18   #42
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

Сообщение от WindoЗavr Посмотреть сообщение
я отключил открытие ком порта 1 и подключаю к нему устройство,а в программе открываю второй порт жму кнопку считать, но данные никуда не принимаются
Не понял...Если можно, поподробней.

Там же свой формат пакета, другой не пройдет.
Кнопка "измерить" посылает команду, на прием которой ответом будет целое число.
Команду дает "мастер", отвечает "слейв", ответ принимает мастер и высвечивает результат приема - целое число.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
WindoЗavr (20.01.2015)
Непрочитано 19.01.2015, 20:25   #43
WindoЗavr
Заблокирован
 
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
WindoЗavr на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

я запутался в алгоритме работы, изменение практически любого параметра ведёт к ошибкам компиляции
в редких случаях компилится но не работает

как оставить тот кусок, который считывает и отображает что нибудь с ком порта?

Последний раз редактировалось WindoЗavr; 19.01.2015 в 20:47.
WindoЗavr вне форума  
Непрочитано 19.01.2015, 22:25   #44
WindoЗavr
Заблокирован
 
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
WindoЗavr на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

http://www.cyberforum.ru/cpp-builder/thread775820.htmlэтому проекту какая то левая библиотека нужна, а в основном он меня устраивает
WindoЗavr вне форума  
Непрочитано 19.01.2015, 23:27   #45
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

WindoЗavr, Вы вообще с Билдером работали?

Компилится и не работает - по многим причинам. Первое, что приходит на ум - при открытии проекта не находит компонент "слайком", ругается и просит указать его место на данном компе. Если не указать, будет косяк. Остальное все стандартно.
Далее. "Меняете параметр" и перестает компилиться - если меняете имена обработчиков событий вручную - так и будет. Не все можно делать безболезненно.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
WindoЗavr (20.01.2015)
Непрочитано 19.01.2015, 23:57   #46
WindoЗavr
Заблокирован
 
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
WindoЗavr на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

CommPort1-›Open=true; открыть порт
CommPort1-›Open=false; закрыть порт


а эта штука как то читает данные с порта
Код:
  char mas[5]; 
  int a;
  AnsiString s="";

  while(CommPort1-›InBuffUsed›4) {
    if(CommPort1-›GetChar()=='?') {
      for(int i=0; i‹4; i++) mas[i]=CommPort1-›GetChar();
      RData-›Caption=IntToStr(a4btoi(mas));
я правильно понял?
WindoЗavr вне форума  
Непрочитано 20.01.2015, 00:08   #47
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

Сообщение от WindoЗavr Посмотреть сообщение
а эта штука как то читает данные с порта
Не вычистил лишнее.
PHP код:
 void __fastcall TForm1::CommPort1DataReceived(TObject *SenderDWORD Count)   // Обработчик события "приняты данные"
{
  
char mas[4]; 

  while(
CommPort1-›InBuffUsed4) {   // Достаточно ли принятых байтов для разбора пакета?
    
if(CommPort1-›GetChar()=='?') {    // Это начало пакета?
      
for(int i=0i4i++) mas[i]=CommPort1-›GetChar();  // Чтение пакета из буфера приема в массив
      
RData-›Caption=IntToStr(a4btoi(mas));  //  Отображение принятого числа
    
}
  }
}
//--------------------------------------------------------------------------- 
Так будет точнее.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
WindoЗavr (20.01.2015)
Непрочитано 20.01.2015, 00:13   #48
WindoЗavr
Заблокирован
 
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
WindoЗavr на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

а из буфера можно сразу на экран выводить?
WindoЗavr вне форума  
Непрочитано 20.01.2015, 00:24   #49
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

Можно. Но смысл?
У меня введена синхронизация по спец байту начала пакета, остальная пурга до пакета просто отсеивается, что и проиллюстрировано. А после начала пакета каждый байт на своем месте. Нет помехозащиты в пакете, но это уже несколько другой вопрос.
Не стоит забывать о "прелестях" многозадачности Винды. Поэтому, прежде чем читать из буфера, проверяю, есть ли там достаточное количество байтов. Иначе программа просто зависнет в ожидании приема при пустом буфере.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 20.01.2015, 15:46   #50
WindoЗavr
Заблокирован
 
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
WindoЗavr на пути к лучшему
По умолчанию Re: Форматирование данных и передача даных UART

akegor спасибо за алгоритм работы, c получением и выводом данных разобрался

Код:
//---------------------------------------------------------------------------

#include ‹vcl.h›
#include ‹stdio.h›
#include ‹stdlib.h›
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CommPort"
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

char ntoa(char n) { // Преобразование нибла в ASCII
n=n&0x0f;
if (n‹0x0a) n+=48; // 0x30
else n+=55; // 0x37
return n;
}

void i2btoa(int n, char *mas) { // Пребразование двух байтов в ASCII
for(int i=3; i›-1; i--) mas[i]=ntoa(n››abs(4*(i-3)));
}

char aton(char c) { // Преобразование одного байта в нибл
if(c‹0x3A) c-=0x30;
else c-=0x37;
if(c›0x0f) c=0;
return c;
}

int a4btoi(char *mas) { // Преобразование строки из четырех ASCII в int
int n=0;

for (int i=3; i›-1; i--) n+=aton(mas[i])‹‹abs(4*(i-3));
return n;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------мой код------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
CommPort1-›ComNumber=3; //объявление физического номера порта его переменной
CommPort2-›ComNumber=4; //объявление физического номера порта его переменной
CommPort1-›Open=true; // открыть порт переменной 1
//CommPort2-›Open=true; // открыть порт переменной 2


if(CommPort1-›Open==true) { // если порт закрыт
Label5-›Caption="порты открыты"; // фраза для вывода
Label5-›Visible=true; // разрешение вывода
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
CommPort1-›Open=false; // закрыть порт переменной 2
//CommPort2-›Open=false; // закрыть порт переменной 2

if(CommPort1-›Open==false) { // если порт закрыт
Label5-›Caption="порты закрыты"; // фраза для вывода
Label5-›Visible=true; // разрешение вывода
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CommPort1DataReceived(TObject *Sender, DWORD Count)
{
char mas[5]; int a;
AnsiString s="";

while(CommPort1-›InBuffUsed›1) {

for(int i=0; i‹4; i++) mas[i]=CommPort1-›GetChar(); // Чтение пакета из буфера приема в массив
RData-›Caption=IntToStr(a4btoi(mas)); // Отображение принятого числа
}
}
WindoЗavr вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Беспроводная передача данных 1кб/с , 3км. Как и чем? Zemlyanov Микроконтроллеры, АЦП, память и т.д 5 29.01.2015 10:02
Тормоза при передаче данных через UART в Bluetooth модуль rus_12345 Микроконтроллеры, АЦП, память и т.д 8 05.01.2015 19:39
Передача данных через UART в AVR микроконтроллерах. harry7777 AVR 54 09.11.2013 20:40
Передача данных в UART из текстового файла bombardier_rotax Proteus 6 24.02.2010 20:50
PIC16F877A pawelk Микроконтроллеры, АЦП, память и т.д 17 28.05.2005 23:54


Часовой пояс GMT +4, время: 20:48.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot