Считывание данных

Derton96
Offline
Зарегистрирован: 18.05.2017

Здравствуйте, я новичок. Такой вопрос: допустим, есть текстовый файл, в котором записана последовательность единиц и нулей. Как считать эту последовательность? Можно пример кода? Если нет возможности через текстовый файл, то как считать данные с COM-порта? 

Питер
Offline
Зарегистрирован: 18.05.2017

Derton96 пишет:
есть текстовый файл, в котором записана последовательность единиц и нулей. Как считать эту последовательность? 

Нужна библиотека для работы с устройством, поддерживающим файловую систему. У вас файл на каком носителе?

Derton96 пишет:
Если нет возможности через текстовый файл, то как считать данные с COM-порта?

 Считывать побайтно, например при помощи класса Serial

Serial.read(), примеры использования здесь http://arduino.ru/Reference/Serial/Read

 

Derton96
Offline
Зарегистрирован: 18.05.2017

Файл находиться на PC. Этот Пример для Arduino Mega, у меня Arduino Uno. Если я напишу программу на C++ то мне придется также побайтно посылать на COM-порт или можно отправить все число сразу? 

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

Derton96 пишет:

я новичок.

Вы уверены, что это кому-то интересно?

Derton96 пишет:

допустим, есть текстовый файл, 

Так "допустим" или "есть"? Ваш вопрос конкретный или "вообще за жизнь"?

Если он есть то где? На удалённом сервере? На Вашем компьютере? На Вашем телефоне? На СD, воткнутом в Вашу магнитолу? На флешке, которая лежит у Вас в заднем кармане? В закрытой сети Вашего Банка? В базе данных ФБР?

Во всех перечисленных случаях читать его надо по-разному. Вам все коды нужны? Или Вы всё-таки определитесь, где он у Вас есть?

 

 

Derton96
Offline
Зарегистрирован: 18.05.2017

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

Derton96 пишет:

я новичок.

Вы уверены, что это кому-то интересно?

Derton96 пишет:

допустим, есть текстовый файл, 

Так "допустим" или "есть"? Ваш вопрос конкретный или "вообще за жизнь"?

Если он есть то где? На удалённом сервере? На Вашем компьютере? На Вашем телефоне? На СD, воткнутом в Вашу магнитолу? На флешке, которая лежит у Вас в заднем кармане? В закрытой сети Вашего Банка? В базе данных ФБР?

Во всех перечисленных случаях читать его надо по-разному. Вам все коды нужны? Или Вы всё-таки определитесь, где он у Вас есть?

 

 

Текстовый файл(TXT) находится на ПК

Питер
Offline
Зарегистрирован: 18.05.2017

Derton96 пишет:
Текстовый файл(TXT) находится на ПК
Средствами операционной системы мли программ ПК передавайте его побайтно в последовательный порт.

Derton96 пишет:
Файл находиться на PC. Этот Пример для Arduino Mega, у меня Arduino Uno. Если я напишу программу на C++ то мне придется также побайтно посылать на COM-порт или можно отправить все число сразу?

Через UART можно побайтно, а через USART и другие интерфейсы пакетами байтов. О каком числе пишете ?

 

 

 

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

Derton96 пишет:

допустим, есть текстовый файл, в котором записана последовательность единиц и нулей. Как считать эту последовательность? Можно пример кода? Если нет возможности через текстовый файл, то как считать данные с COM-порта? 

Откройте ваш файл в блокноте и считывайте ...

Derton96
Offline
Зарегистрирован: 18.05.2017

Питер пишет:

Derton96 пишет:
Текстовый файл(TXT) находится на ПК
Средствами операционной системы мли программ ПК передавайте его побайтно в последовательный порт.

Derton96 пишет:
Файл находиться на PC. Этот Пример для Arduino Mega, у меня Arduino Uno. Если я напишу программу на C++ то мне придется также побайтно посылать на COM-порт или можно отправить все число сразу?

Через UART можно побайтно, а через USART и другие интерфейсы пакетами байтов. О каком числе пишете ?

 

 

 

хорошо попробую

О каком числе пишете ?- немного не помнимаю вопрос

 

Питер
Offline
Зарегистрирован: 18.05.2017

Derton96 пишет:
или можно отправить все число сразу?
Derton96 пишет:
О каком числе пишете ?- немного не помнимаю вопрос
Если вы сами не понимаете о каком числе спросили, помочь затруднительно.

Derton96
Offline
Зарегистрирован: 18.05.2017

Питер пишет:

Derton96 пишет:
или можно отправить все число сразу?
Derton96 пишет:
О каком числе пишете ?- немного не помнимаю вопрос
Если вы сами не понимаете о каком числе спросили, помочь затруднительно.

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

Derton96
Offline
Зарегистрирован: 18.05.2017

Хотел бы уточнить: единицы и нули это по сути значения HIGH и LOW для светодиода, так как заранее длинна этой последовательности не известна, я думал записать в виде переменной типа char и уже с этим работать(тут я разберусь), собственно проблема в том, как из текстового файла загрузить в переменную и возможно ли это вообще? 

Питер
Offline
Зарегистрирован: 18.05.2017

Derton96 пишет:
проблема в том, как из текстового файла загрузить в переменную и возможно ли это вообще?

так как файл на PC, это не имеет отношения к программированию ардуино

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

 

Derton96
Offline
Зарегистрирован: 18.05.2017

Питер пишет:

Derton96 пишет:
проблема в том, как из текстового файла загрузить в переменную и возможно ли это вообще?

так как файл на PC, это не имеет отношения к программированию ардуино

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

 

Но вся суть сводится к тому что мы должны посылать значения на COM-порт, а arduino их считывать?

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

Derton96 пишет:

Но вся суть сводится к тому что мы должны посылать значения на COM-порт, а arduino их считывать?

А сами-то как думаете? Если не отправить данные в порт, то откуда ж они там возьмутся, чтобы их считать?

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

Derton96, ра всякий случай: Ардуина может получить данные из файла несколькими способами:

1. Если файл находится на расположенном рядом ПК, то можно передать его через USB/Serial. Необходимое оборудование: USB кабель.

2. Если файл находится на удаленном компьютере, - передать по сети. Оборудование - Ethernet или WiFi Shield.

3. Ели Апрдуина должна работать автономно, записать файл иа SD и считывать самой Ардуиной. Оборудоваие - SD-модуль для Ардуино.

Bennis
Offline
Зарегистрирован: 18.05.2017

andriano пишет:
записать файл иа SD и считывать самой Ардуиной. Оборудоваие - SD-модуль для Ардуино
я в соседней теме пытаюсь узнать хотя бы приблизительную скорость работы ардуины на чтение-запись с SD

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

А если мне надо взять данные из файла при загрузке скетча, это возможно?

У меня сейчас несколько систем из 3х устройств связанных по радиоканалу nRF24.

И при заливке скетча в несколько систем надо каждый раз менять номер радиоканала и pipe в 3х скетчах.

Может есть возможность прописать это во внешнем файле и менять один раз?

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

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

- пропишите определение этих переменных в хедер-файле (.h) и положите файл в каталог пользовательских библиотек.  Включив в начало каждого скетча директиву #include <ВашФайл.h> - вы получите общие настройки для всех скетчей

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

b707 пишет:

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

- пропишите определение этих переменных в хедер-файле (.h) и положите файл в каталог пользовательских библиотек.  Включив в начало каждого скетча директиву #include <ВашФайл.h> - вы получите общие настройки для всех скетчей

Интересное решение, надо будет попробовать.

А где находиться каталог пользовательских библиотек?  Обычно включаю в хидеры в каталоге проекта #include "..\..\ВашФайл.h"

Есть ли возможность на этапе заливки скетча спрашивать какая система сейчас программируется?  А то у разных систем еще и разные коэффициенты нагревателя, чтобы все забить в файл а при заливке выбирать.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

taraserker пишет:
А где находиться каталог пользовательских библиотек?  Обычно включаю в хидеры в каталоге проекта #include "..\..\ВашФайл.h"

/*пример*/
/*выберете нужное устройство и раскоментируйте*/
#define DEVICE_1 //<-- пусть будет это
//#define DEVICE_2
//#define DEVICE_OTHER
/*файл с настройками*/
#include "Set.h"
//------main------------------------------
void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13,  HIGH);
  delay(DELAY_TIME);
  digitalWrite(13, LOW);
  delay(DELAY_TIME);
}
/**/
/*Set.h*/
#ifndef SET_H
#define SET_H

#if defined(DEVICE_1)
/*настойка 1 уст-ва*/
#define DELAY_TIME 300
#elif defined(DEVICE_2)
/*настойка 2 уст-ва*/
#define DELAY_TIME 1000
#else
/*настойка остальныч уст-в*/
#define DELAY_TIME 100
#endif


#endif//SET_H

 

taraserker
taraserker аватар
Offline
Зарегистрирован: 24.01.2016

qwone пишет:
 

Спасибо.

У меня те же мысли появились, пока ждал ответ. Да и с момента перехода на Ардуино, после человеческого программирования, уже подзабыл все предпроцессорные директивы. Благодарю за помощь.