Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Открытый проект умного дома

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.11.2012, 01:55   #11
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Хух))))) А то мой маленький мирок начал рушится)))))))))
stD вне форума   Ответить с цитированием
Старый 25.11.2012, 06:18   #12
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

А вот это поясни пожалуйста!

PHP код:
if(indata[4]>0)indata[4]=255;
  
indata[4]=~indata[4]; 
Вот эта строка indata[4]=~indata[4];, "~" -это означает "побитовое НЕ" , а вот как это объяснить простым языком?))))
stD вне форума   Ответить с цитированием
Старый 25.11.2012, 07:12   #13
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Цитата:
Цитата:
Что это за остальные 65535 байт!!! Откуда они взялись?
Цитата:
Это столько раз в цикле проверяется ответ от УУ, если сделать бесконечный цикл, а ответ потеряется то контроллер зависнет
А зачем так много раз проверять ответ? Или у Тебя УУ постоянно отсылает данные?
stD вне форума   Ответить с цитированием
Старый 25.11.2012, 11:38   #14
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Цитата:
Сообщение от mebitek Посмотреть сообщение
А вот это поясни пожалуйста!
PHP код:
if(indata[4]>0)indata[4]=255
Преобразую значение диммера в максимальную яркость

Цитата:
Вот эта строка indata[4]=~indata[4];, "~" -это означает "побитовое НЕ" , а вот как это объяснить простым языком?))))
Простым языком это инверсия

Цитата:
А зачем так много раз проверять ответ? Или у Тебя УУ постоянно отсылает данные?
На пример ЦУ занят и ли пакет потерялся. Если пришел ответ то цикл прерывается
Admin вне форума   Ответить с цитированием
Старый 30.11.2012, 23:49   #15
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Эдуард, спасибо!
Здесь я всё понял.

PHP код:
if(Serial1.available()>0//ждем данные из шины
     

       
inByte=Serial1.read();
        if (
inByte==255)
        {
          
inByte 0
            for(
uint16_t i=0i<65535i++)//ловим остальные данные
            
{     
              if(
Serial1.available()>7//если данные в буфере
               

                
inByte=Serial1.read();
                 if (
inByte==170//данные ликвидны
                  
{   
                    for(
uint8_t y=2y<9y++) outdata[y] = Serial1.read(); 
                    break; 
//если данные приняты то прервать цикл 
Ты начинаешь принимать данные от уу, если ловится "255" тогда начинаешь принимать следующие 8 байт, если дескриптор "170" тогда принимаешь остальные 7 байт и прерываешь цикл приёма.

А вот отправка из уу:

PHP код:
void Send_Data() 
{
  
//_delay_us(350); //время  на то чтобы устаканился
  
digitalWrite(DEHIGH); //переводим драйвер в режим передатчика
  
_delay_us(2);      //время на то чтобы устаканился
  
Serial.write(outdata,9);  //передаем  данные
  
digitalWrite(DELOW); //переводим драйвер в режим приемника
  
_delay_us(350);       //формируем старт бит и время для отправки данных
 // Serial.flush();   //чистим входящий буфер

нигде не инициализируется и не понятно когда и с какой периодичностью происходит отправка.

Последний раз редактировалось stD; 30.11.2012 в 23:54.
stD вне форума   Ответить с цитированием
Старый 01.12.2012, 00:04   #16
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Я же писал что код не дописан и ты попросил его в таком не доделанном виде.
А отправка будет нужна после получения команды от ЦУ
УУ должно ответить, что команда принята и выполнена и после ответа снова переключится в режим прослушки шины
Admin вне форума   Ответить с цитированием
Старый 01.12.2012, 00:24   #17
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Я всё спрашиваю, потому-что хочу сделать так:
1. Считываю данные от сервера, помещаю их в переменные которые отправит ЦУ (Мега) управляемым устроиствам (УУ).
2. ЦУ отправляет данные на первое УУ, получает от него ответ и раскладывает в назначеные переменные.
3. Отправляет данные на второе УУ , получает ответ и также кладёт в определённые переменные.
И так далее с остальными УУ.
4. Отправляет на сервер данные полученные от УУ.
И вот тут я кое что не понимаю......
Допустим я в данную секунду отправляю что-то на второе УУ или третье , вобщем на какое-то из низ них "Serial1.write(otpravka,9);" или принимаю от него ответ, а в этот момент от сервера приходят данные......
Нет, я лучше завтра скетч напишу и выложу, а то щас понапишу и ничего непонятно будет!
stD вне форума   Ответить с цитированием
Старый 01.12.2012, 00:31   #18
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Цитата:
Я же писал что код не дописан и ты попросил его в таком не доделанном виде.
А отправка будет нужна после получения команды от ЦУ
УУ должно ответить, что команда принята и выполнена и после ответа снова переключится в режим прослушки шины
Это я понимаю, но ответит то она девятью байтами, а 65 тысяч откуда возьмутся?
stD вне форума   Ответить с цитированием
Старый 01.12.2012, 01:26   #19
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

65535 это количество циклов ожидания данных, но не получения
как только придут данные в буфер цикл прервется
Возможно что он прервется как на первом круге так и на сотом и десятитысячном т.д.
Admin вне форума   Ответить с цитированием
Старый 01.12.2012, 10:39   #20
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Это я понял! Я наверно неправильно формулирую вопрос.
В посте №16 Ты пишешь:
Цитата:
А отправка будет нужна после получения команды от ЦУ
УУ должно ответить, что команда принята и выполнена и после ответа снова переключится в режим прослушки шины
Получается, команда от ЦУ отправлена и ЦУ переведён в режим приёмника, УУ получил её , перешёл в режим передатчика, отправил эти чёртовы 9 байт и тут же перешёл в режим приёмника!

PHP код:
void Send_Data() 
{
  
//_delay_us(350); //время  на то чтобы устаканился
  
digitalWrite(DEHIGH); //переводим драйвер в режим передатчика
  
_delay_us(2);      //время на то чтобы устаканился
  
Serial.write(outdata,9);  //передаем  данные
  
digitalWrite(DELOW); //переводим драйвер в режим приемника 
Больше, УУ ничего кроме этих 9 байт не отправит. Получается если ЦУ неправильно примет эти 9 байт, то и ждать то ему больше нечего!
stD вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
 

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

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

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


Текущее время: 01:49. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика