Прием битов

Stempler
Offline
Зарегистрирован: 09.06.2019

Доброго времени суток всем.

Пробовал сделать что хочу, к сожалению не получилось. Вынужден обратиться к гуру)

Нужно написать код, такого плана. 

С устройства идет сигнал на ардуино - 2 байта, типа 0x023 , 0x335 (условно)

Если приходят эти байты, делается одно действие. Если приходят другие, скажем 0x432 , 0x234 - делается другое действие.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Пишите... wrk.sadman@gmail.com

Stempler
Offline
Зарегистрирован: 09.06.2019

Таки мы с Вами пробовали, получилось не то =)

sadman41
Offline
Зарегистрирован: 19.10.2016

Бросить дело на полпути - это был Ваш выбор.  Да ещё и ник сменили, оказывается.

Stempler
Offline
Зарегистрирован: 09.06.2019

Не сменил, а забыл старый =). 

Раньше я изучал другой язык программирования и в моем понимании код должен быть наподобии

a = переменная сигнала

if a = 0x0000 {}

Грубо говоря.

А подгонять это не то... Как будто строить дом "на глазок", а не с помощью рассчетов )

sadman41
Offline
Зарегистрирован: 19.10.2016

Ладно, что спорить. Сейчас у Вас больше инструментов анализа, чем было на тот момент. И ТЗ более осмысленное и упрощённое. Пусть кто-нибудь ещё позанимается - я не против.

Stempler
Offline
Зарегистрирован: 09.06.2019

Более понимать начал, что нужно)

Onkel
Offline
Зарегистрирован: 22.02.2016

Stempler пишет:

Доброго ..

Если приходят эти байты, делается одно действие. Если приходят другие, скажем 0x432 , 0x234 - делается другое действие.

Пишите ydom@mail.ru  - сделаю. Четко, надежно, проверю в работе, так что Вы получите полностью рабочий, на 100% рабочий код.   У меня всегда все то получается. ydom@mail.ru

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

что за устройство, каким образом передаётся информация?

sadman41
Offline
Зарегистрирован: 19.10.2016

Не бросили бы - поняли раньше. С появлением лог. анализатора вместо осциллографа решение задачи стало банальным, строк в 20.

energy
Offline
Зарегистрирован: 11.07.2017

Надежно, недорого. ergbusterz@gmail.com

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Почти бесплатно. gas31a@mail.ru

На честном IDE

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Stempler пишет:

Таки мы с Вами пробовали, получилось не то =)

так естествено 0x432 это разве байт

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

так естествено 0x432 это разве байт

Конечно же нет, но ТС про это не знает, вот и получается не то. 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

ua6em пишет:

так естествено 0x432 это разве байт

Конечно же нет, но ТС про это не знает, вот и получается не то. 

судя по заголовку - это бит!

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

b707 пишет:

судя по заголовку - это бит!

Причем один из двух !

Stempler
Offline
Зарегистрирован: 09.06.2019

ага)

rst
Offline
Зарегистрирован: 25.06.2018

Stempler пишет:
ага)

Сколько битов в байте знаете? Если нет - погуглите - узнаете.  

А потом посчитайте сколько битов в "условном" числе 0x335.

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Восемь? А в 0х335 девять? Так разбить на два байта. В чём проблема?

sadman41
Offline
Зарегистрирован: 19.10.2016

Скиф, если ты вернулся из командировки, то внимательно читай первопост. Там еще всякие фокусы были, правда, но с ними пусть нонешний исполнитель разбирается.

rst
Offline
Зарегистрирован: 25.06.2018

Gas311 пишет:
А в 0х335 девять?

Да уж.... Неужто математику в школах уже совсем отменили???

PS: Чтобы узнать число бит в числе, нужно взять логарифм этого числа по основанию 2 и округлить результат в большую сторону до ближайшего целого.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Нынче в школе это преподают в программировании. Там считают по другому делят на два до тех пор пока делится и считают сколько раз разделили.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Gas311 пишет:

Так разбить на два байта. В чём проблема?

Молотка нету

rst
Offline
Зарегистрирован: 25.06.2018

brokly пишет:
Нынче в школе это преподают в программировании. Там считают по другому делят на два до тех пор пока делится и считают сколько раз разделили.

Видимо Gas311 не знает ни того ни другого метода.  ;)

sadman41
Offline
Зарегистрирован: 19.10.2016

rst пишет:

Видимо Gas311 не знает ни того ни другого метода.  ;)

Зато бесплатно. А вам и похвастаться нечем, кроме логарифмов и интергалов.

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

sadman41 пишет:

rst пишет:

Видимо Gas311 не знает ни того ни другого метода.  ;)

Зато бесплатно. А вам и похвастаться нечем, кроме логарифмов и интергалов.

Да они даже ламинарность и турбулентность не знают. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

тут половина не знает, что такое перлит и ледебурит и что?

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

ua6em пишет:

тут половина не знает, что такое перлит и ледебурит и что?

Половина плюс один. Я тоже не знаю. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Gas311 пишет:

ua6em пишет:

тут половина не знает, что такое перлит и ледебурит и что?

Половина плюс один. Я тоже не знаю. 

а как же вы программируете то

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Gas311 пишет:

Да они даже ламинарность и турбулентность не знают. 

Да, чего там знать-то?

Stempler
Offline
Зарегистрирован: 09.06.2019

На счет битов я написал образно)

Прикладываю скрин 1 из сигналов.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Художник? Или ещё какой гуманитарий?

В программировании "образно" ничего, кроме посылания нах, не бывает.

Stempler
Offline
Зарегистрирован: 09.06.2019

Ворота пишет:

Художник? Или ещё какой гуманитарий?

В программировании "образно" ничего, кроме посылания нах, не бывает.

Инженер. 

Скажем раньше изучал php , очень давно, там это делается намного легче и я знаю как. Но тут...)

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Мдя... Давайте договоримся, что максимальное значение бита = 1, а максимальное значение байта = 0xFF (по русски 255). Если вы с этим не согласны, то дальше не читайте

uint16_t buff=0;

void setup() {
   Serial.begin(120,SERIAL_8O1);
}

void loop() {
   if(Serial.available()){
      *((uint8_t*)&buff+1)=buff;
      *((uint8_t*)&buff)=Serial.read();
      if(buff==0x2376){
         // делаем одно действие  
      } else {
         // делаем другое действие
      }
   }
}

 

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Ворота пишет:

Gas311 пишет:

Да они даже ламинарность и турбулентность не знают. 

Да, чего там знать-то?

Ну это вы знаете. А некоторые не знают.

Stempler
Offline
Зарегистрирован: 09.06.2019

Спасибо всем кто подсказывал, спасибо всем кто предлагал написать код за 3-5к, сделал сам.

8 строк кода.

b707
Offline
Зарегистрирован: 26.05.2017

Stempler пишет:

сделал сам.

прочитал ответ в сообщении #33 и "сделал сам"? - поздравляю

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ворота пишет:

Gas311 пишет:

Да они даже ламинарность и турбулентность не знают. 

Да, чего там знать-то?

И что это было? Ламинарность или турбулентность?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

И то, и другое.