Отправка данных в COM port

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Здравствуйте, подскажите как отправить данные в COM port. Веб сервер собирает данные с датченко, и отправляет на сайт, нашел батник который собиралась эти данные и отправляет в txt фал. Не могу понять, как сделать, чтоб данные брались с txt и отправлялись в COM port. Чтоб ардуинка их принимала и выводила на lcd 16x2. Подскажите пожалуйста, заранее спасибо.

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

очевидно написать программу на том языке. которым вы владеете

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

а готовой не знаете программы? 

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

fanat.arduino пишет:

а готовой не знаете программы? 

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

cat file.txt > /dev/USB01

где file.txt - ваш файл, а /dev/USB01 - порт, к которому подключена Ардуина

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

А пример, где на 1602 выводится все, что приходит по сериалу есть в составе ИДЕ, называется SeriaDisplay. ;))))

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

fanat.arduino пишет:

Веб сервер собирает данные с датченко, и отправляет на сайт,

Сервер никогда, никуда, ничего не отправляет. Не серверное это дело. Он только отвечает на запросы.

Кстати, "датченко" - это "фамилие такое"? :-)

fanat.arduino пишет:

Не могу понять, как сделать, чтоб данные брались с txt и отправлялись в COM port. Чтоб ардуинка их принимала и выводила на lcd 16x2. 

Хотя бы в какой системе этот Ваш txt живёт? Windows, Unix, MacOS?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Вот как такие доживают до совершеннолетия? Я даже не понимаю, как они дорогу переходят? Как понимабт, что красный - стой, зелёный - иди?!

 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Как-то дожил до 24 лет, не все цвета вижу. В Windows 10.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Текст, 2 символа, на 3 строчки

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

или 25 лет, не помню, да и суть не важна

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

fanat.arduino пишет:

В Windows 10.

copy kaka.txt \\.\COM4

если соберётесь спросить куда эту строчку пихать или что делать, если файл называется не "kaka" или порт не "COM4", а что-то другое, заранее вызывайте полицию - говорите "убийство на почве внезапно вспыхнувшей неприязни"

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

да все понятно

 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Подскажите пожалуйста, при отправки данных в ком порт, ардуинка перезагружается(знаю, так должно быть), это можно как нибудь убрать, заранее спасибо. 

nik182
Offline
Зарегистрирован: 04.05.2015

Плохо знаете. Адруино не может перегружаться при отправке в ком порт. Даже программировать надо нажимая ресет, если грузишь через компорт. Она перегружаться если дёрнуть линию dtr микросхемы связи usb. Сделать это можно просто изменив скорость в терминале ардуины, даже не посылая данных. Ардуина перегрузится. В ком порт можно послать данные обходя usb-ttl конвертор на плате сторонним.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Не понял, можно попроще? 

nik182
Offline
Зарегистрирован: 04.05.2015

Как по проще? Вы схему платы и соединения usb-ttl конвертора на ней смотрели? Если для Вас схема не понятна, то проще только знание того что ардуина перегружается при заливки программы в м.с. средствами ИДЕ. При работе и передачи данных через компорт перезагрузить м.с. нельзя ни как. Нужно давать специальные команды, что бы она перезагрузилась.

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

А чего Вы не поняли то?

Задавайте конкретные вопросы.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Нужно, чтоб при отправки в com порт, файл txt, с n количеством символов  из cmd, arduino uno не перезагружалась.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Я пробовал arduino leonardo, при открытии порта, она не перезагружается, но на lcd выводит не ту строку. Пример, я отравил 1, com port выдал 1 и -35, а на lcd просто -35

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

USB-TTL есть? Вот его к ардуине по RX/TX/GND подсоединяете и никто не перезагружается при работе с UART.

nik182
Offline
Зарегистрирован: 04.05.2015

Ваши посты просто безсодержательны. Подумайте о других, кому Вы задаёте вопросы. Мы не знаем каким способом, какой программой, какими опциями Вы посылаете информацию в ардуину? Это бинарные или строковые данные? Посылаете после данных конец строки и иной терминатор передачи? Где программа, которая выводит на дисплей данные? Как можно понять что происходит, если нет предмета разговора. Если хотите что бы Вам помогли, соблюдайте правила из первого поста песочницы.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Простите,что я так мало пишу инфы. Данные с датчиков температуры, просто 2 числа. Отправляю данные через смд, как подсказали выше, командой "copy kaka.txt \\.\COM4". Ниже код на ардуинки.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // Подключение библиотеки
LiquidCrystal_I2C lcd(0x27,16,2);
 void setup(){
 // устанавливаем последовательное соединение
lcd.init();                      // Инициализация дисплея  
  lcd.backlight(); 
    Serial.begin(9600); 
}
 
 
void loop() {

    if (Serial.available() > 0) {  //если есть доступные данные
        // считываем байт
        int incomingByte = Serial.read() - '0';
 
        // отсылаем то, что получили
        Serial.print("I received: ");
        Serial.println(incomingByte);
        lcd.setCursor(0,0);              // Установка курсора в начало первой строки
  lcd.print(incomingByte); 
    }
}

 

nik182
Offline
Зарегистрирован: 04.05.2015

А описать что хочется получить можете? Я, например, не понимаю как с помощью данной программы можно увидеть больше одного символа на дисплее? Ну а -35=13-48. Всё точно считает ардуина в 16 строке.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Поставил usb ttl hw-597. Как вы сказали подключил GMD, Rx, Tx, к арудине, при отправки числа из cmd, не приходит в арудино, пробовал RX > TX и TX > RX и наоборот. 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Из cmd отправлять числа из txt файла

28.00 
31.00 
3 Вот так сохраняет txt, отправлять на ардуино. Сейчас просто тестирую, отправляю 1.  
nik182
Offline
Зарегистрирован: 04.05.2015

У Вас уже всё было хорошо. Достаточно проверит пришедший символ на равенство терминатору конец строки и и не выводить терминатор на экран а только перемещать курсор в начало строки. 21 строка сейчас переводит в нулевую позицию курсор при приходе каждого символа и видите только последний.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Получилось, правда 2 ардуинки пришлось испольщовать. Есть проблемка, когда шлешь с arduino ide в com порт, он нормально показывает символ, lcd 16x2, когда с cmd, он показывает на секунду, потом первую цифру заменяет на 0.

На leonardo
// Подключаем библиотеку Software Serial

#include <SoftwareSerial.h>

// Объявляем задействованные дискретные каналы контроллера для связи

SoftwareSerial softSerial(8, 9); // RX, TX>

void setup(){

Serial.begin(9600); // Обычная скорость передачи данных

softSerial.begin(9600); // инициализация программного последовательного порта

}

void loop(){

// Проверяем получение команд от компьютера

if (Serial.available()){

// Отправляем полученную команду компьютера на программный UART

softSerial.write(Serial.read());

}


}
На UNO
// Подключение библиотеки Software Serial
#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // Подключение библиотеки
LiquidCrystal_I2C lcd(0x27,16,2);
#include <SoftwareSerial.h>
SoftwareSerial softSerial(8, 9); // RX, TX
void setup(){

softSerial.begin(9600); // Инициализация программного последовательного порта

lcd.init();                      // Инициализация дисплея  
  lcd.backlight(); 
}

void loop(){
// Проверяем, есть ли что-нибудь в буфере программного последовательного порта

if (softSerial.available()){
int com = softSerial.parseInt() ;

lcd.setCursor(8,0);              // Установка курсора в начало первой строки
  lcd.print(com); 
}
}












 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

copy result1.txt \\.\COM15 - комманда cmd

15 -содержание файла result1.txt 

nik182
Offline
Зарегистрирован: 04.05.2015

А где проверка на символ конца строки? Он тоже есть в Вашем файле и его тоже отправляет в ком порт.
Попробуйте разобраться чем бинарное представление числа отличается от символьного. В какие моменты передаются и работают в программе те и другие. Из каких символов состоит полная строка, которая передается в компорт. Без понимания этого Вы не сможете написать программу.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

А скажите пожалуйста, в чем разница между отправкой в com port из arduino ide и командой copy result1.txt \\.\COM15

nik182
Offline
Зарегистрирован: 04.05.2015

Файл отправляется полностью как есть. Все до одного байта. Если это текстовый со строками файл, то в нем присутствуют бинарные данные в виде байтов, символы которых представлены в таблице ASCI, их можно читать, и управляющие , которых не видно, но они есть. Например символ конец строки. Он тоже передается.
Нажимая на клавиатуре ноль, получаешь символ нуля, но его бинарное значение 48. Он и летит как 48.
В терминале ардуино можно контролировать отсылку управляющих символов. В правом нижнем углу можно выбрать режим посылать или нет управляющие символы. Если выбран режим посылать всё, то кроме отправки нуля с бинарным значением 48 будут прибавлены ещё 2 символа с бинарными значениями 10 и 13 . Если выбрать не посылать управляющие символы, то будет послан байт со значением 48 для символа клавиатуры 0. И больше ничего.