как записать строку символов в порт

ilia74
Offline
Зарегистрирован: 20.02.2016

Парни, привет всем, наметните мысль как записать строку

HEX   (0x10, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x16)

символов в порт ардуины???? (синтаксис).

Заранее Всем спачибо.

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

Один символ писать умеете? Ну, и пишите посимвольно.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

ilia74 пишет:

Парни, привет всем, наметните мысль как записать строку

HEX   (0x10, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x16)

символов в порт ардуины???? (синтаксис).

Заранее Всем спачибо.

В какой именно порт? На ноги: digitalWrite() по очереди байты, в COM: serial.print всю строку и т.д., в зависимости от порта и применяемой библиотеки работы с требуемым портом.

ilia74
Offline
Зарегистрирован: 20.02.2016

ЕвгенийП пишет:

Один символ писать умеете? Ну, и пишите посимвольно.

Ну это понятно, что можно по-символьно, мне думаеться это не совсем грамотно.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Смотря в какой порт ..

ilia74
Offline
Зарегистрирован: 20.02.2016

faeton пишет:

ilia74 пишет:

Парни, привет всем, наметните мысль как записать строку

HEX   (0x10, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x16)

символов в порт ардуины???? (синтаксис).

Заранее Всем спачибо.

В какой именно порт? На ноги: digitalWrite() по очереди байты, в COM: serial.print всю строку и т.д., в зависимости от порта и применяемой библиотеки работы с требуемым портом.

int Tx=1;
int Rx=0;
void setup() { 
  Serial.begin(2400);
  pinMode (Tx, OUTPUT);
  pinMode (Rx, INPUT);
}
void loop() { 
  for (int i=1; i<=16; i=i+1)
  {
      Serial.println (0xFF, HEX);
      delay (4);
  }
  delay (800);
  Serial.print (0x10,HEX);
  Serial.print (0xFF,HEX);
  Serial.print (0x3F,HEX);
  Serial.print (0x00,HEX);
  Serial.print (0x00,HEX);
  Serial.print (0x00,HEX);
  Serial.print (0x00,HEX);
  Serial.print (0xC1,HEX);
  Serial.print (0x16,HEX); 
  Serial.end ();
}
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Понятно, можно так:

//int Tx=1; это сделают и без вас..
//int Rx=0;

#define strLength  9
char myString[] = {  0x10, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x16 };

void setup() { 
  Serial.begin(2400);
//  pinMode (Tx, OUTPUT);
//  pinMode (Rx, INPUT);
}
void loop() { 
  for (int i=1; i<=16; i=i+1)
  {
      Serial.println (0xFF, HEX);
      delay (4);
  }
  delay (800);

  Serial.write( myString, strLength );
}

Точное название метода не вспомню, посмотрите класс Serial самостоятельно. Там есть что-то подобное, как реализация виртуальной функции класса Print, кажется..

ilia74
Offline
Зарегистрирован: 20.02.2016

Arhat109-2 пишет:

Понятно, можно так:

//int Tx=1; это сделают и без вас..
//int Rx=0;

#define strLength  9
char myString[] = {  0x10, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x16 };

void setup() { 
  Serial.begin(2400);
//  pinMode (Tx, OUTPUT);
//  pinMode (Rx, INPUT);
}
void loop() { 
  for (int i=1; i<=16; i=i+1)
  {
      Serial.println (0xFF, HEX);
      delay (4);
  }
  delay (800);

  Serial.write( myString, strLength );
}

Точное название метода не вспомню, посмотрите класс Serial самостоятельно. Там есть что-то подобное, как реализация виртуальной функции класса Print, кажется..

Спасибо ОГРОМНОЕ))) пока учусь, познаю мир arduino))) не без помощи этого форума)))

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

ilia74
Offline
Зарегистрирован: 20.02.2016

прошу еще помощи- после выполнения данной програмульки, должен ответить контроллер строкой.

как ее вывести на экран компьютера? 

что то типа:   Serial.available() ???

 

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Класс Serial как раз и связан с портом комрьютера. Вот им вы и отправляете строки "на дисплей" компьютера. А вот ежели вам ту строку надо выдать куда ишо .. то воспользуйтесь другим портом. Вас же спрашивали "какой порт"? :)

ilia74
Offline
Зарегистрирован: 20.02.2016

Arhat109-2 пишет:

Класс Serial как раз и связан с портом комрьютера. Вот им вы и отправляете строки "на дисплей" компьютера. А вот ежели вам ту строку надо выдать куда ишо .. то воспользуйтесь другим портом. Вас же спрашивали "какой порт"? :)

Пока хочу увидить ответ от конроллера только на компе, а позже нужно будет "ответ" записать на flash карту.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

ilia74 пишет:

Arhat109-2 пишет:

Класс Serial как раз и связан с портом комрьютера. Вот им вы и отправляете строки "на дисплей" компьютера. А вот ежели вам ту строку надо выдать куда ишо .. то воспользуйтесь другим портом. Вас же спрашивали "какой порт"? :)

Пока хочу увидить ответ от конроллера только на компе, а позже нужно будет "ответ" записать на flash карту.

В среде дуни "Монитор СОМ-порта" он не только принимает из СОМ порта от дуни, но и отправить ей может тоже, а дуня должна уже читать СОМ порт. serial.read() - с ожиданием, если ничего не приходило, или serial.available() - проверить наличие принятых данных и потом уже serial.read().