Отправка двоичных данных через uart

Jomei
Offline
Зарегистрирован: 22.08.2014

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

Подскажите пожалуйста как через arduino 2560 передавать и считывать двоичные данные и выполнить какие то действия например если приняли (0x68,0x00,0x00,0x68) включить пин 13 или перевести в строку и отправить в ком порт 1? 

Зараниее спасибо.

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

Передавать write вместо print, все остальное точно так же.

Jomei
Offline
Зарегистрирован: 22.08.2014
void setup()
    {
    Serial.begin(9600);
    }

void loop()
  {
     byte i [] = {0x68,0x00,0x00,0x68};
     Serial.write(i,sizeof(i));
     delay(5000);
  }

Здесь передаем а как считывать ? пробовал все не получается подскажите как решить проблемму.

Radjah
Offline
Зарегистрирован: 06.08.2014

Если в буфере лежит 0x00, то Serial.available() возвращает 0. Могу предложить отправлять преобразованное в строку число через println(), а на принимающей стороне юзать parseInt()

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

И зачем такое двойное преобразрвание, которое, к тому же в несколько раз увеличивает объем данных и, соответственно, во столько же раз уменьшает эффективную скорость передачи?

Jomei, я не понял, в чем у Вас проблемы.

Во-первых, чем Вы пытаетесь прочитать передаваемые данные?

maksim
Offline
Зарегистрирован: 12.02.2012

Radjah пишет:

Если в буфере лежит 0x00, то Serial.available() возвращает 0.

А еще если наступить на лягушку, то дождь пойдет.

 

andriano пишет:

Jomei, я не понял, в чем у Вас проблемы.

Проблема его в том, что не смог найти примера как читать данные

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if(Serial.available())
  {
    byte i[5];
    Serial.readBytes((char*)i, sizeof(i));
  }
}

 

Jomei
Offline
Зарегистрирован: 22.08.2014

Спасибо за ответы ребята ) проблемма моя в том что я не могу прочитать с помощю ардуинки данные с электросчетчика ПСЧ 4ТМ05М у него Modbus подобный двоичный протокол, у меня есть описание протокола там все коды, как снимать с помощю каких кодов и.т.д но проблемма в другом нужно его научить понимать ардуино. 

 

Клапауций 070
Offline
Зарегистрирован: 26.09.2015
Jomei
Offline
Зарегистрирован: 22.08.2014

Не ModBus а ModBus подобный http://www.nzif.ru/modules/myReviews/detailfile.php?lid=148

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

Если Ардуино пишет двоичные данные, то

Serial.write(byte data);

если текстовые

Serial.print(char data);

если читает двоичные

Serial.read(byte data);

если читает текстовые

Serial.read(char data);

Какие еще нужны примеры?

Клапауций 070
Offline
Зарегистрирован: 26.09.2015

Jomei пишет:

Не ModBus а ModBus подобный http://www.nzif.ru/modules/myReviews/detailfile.php?lid=148

т.е. до тебя не дошло, что никто за тебя ничего делать не будет?

Jomei
Offline
Зарегистрирован: 22.08.2014

Я не прошу делать примеры я лишь спросил как это сделать и советы я получил спасибо тем кто ответил.