Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт фев 27, 2026 18:05:16

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7704 ]     ... , , , 347, , , ...  
Автор Сообщение
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн окт 12, 2020 17:19:36 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб дек 27, 2008 15:46:26
Сообщений: 167
Откуда: Украина, Бердянск
Рейтинг сообщения: 0
Спасибо. Про размерность массива я уже думал, можно же просто контроллировать корректность передаваемых параметров. Хотя, можно и добавить контроль внутри функции. Для надежности. Хочу более-менее унивирсальную библиотеку для аппаратного I2C сделать для dspic30. Что то более общее и удобное, чем встроенная в компилятор.
В данном случае функция для передачи данных,массив будет только читаться, так что внутри функции не изменится.
А в функции для чтения из устройства возможность изменить массив из функции очень даже пригодится.
Тема указателей, в общем, то понятна, но пока на практике как то обходился без них. А здесь и не обойтись ...

_________________
учиться никогда не поздно...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн окт 12, 2020 20:26:55 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Ну когда массив передается в кач-ве аргумента функции, он всегда передается как указатель на первый или указанный элемент. Когда передается указатель на данные динамического размера, принято обычно следующим аргументом передавать их длину, если их нельзя терминировать чем-то, как строку \0, к примеру.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб окт 24, 2020 15:49:35 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 861
Откуда: Рязанская область
Рейтинг сообщения: 0
использую Onewire библиотеку
положительная температура правильно, просто замечательно отображается, а отрицательная- абракадабра


Спойлер// ---------- обращаемся к функции
float readDS18B20(){

oneWire.reset(); // сброс шины
oneWire.write(0xCC); //обращение ко всем датчикам (если всего один DS18B20)
//oneWire.select(sensorAddress); // выбор конкретного адреса - если несколько DS18B20
oneWire.write(0x44); // начать преобразование (без паразитного питания)

oneWire.reset(); // сброс шины
oneWire.write(0xCC); //обращение ко всем датчикам (если всего один DS18B20)
//oneWire.select(sensorAddress); // выбор конкретного адреса - если несколько DS18B20
oneWire.write(0xBE); // Read Scratchpad (чтение регистров)
temp = (oneWire.read() | oneWire.read() << 8 ) / 16.0; //прочитаны 2 байта

}

// ---------- ВЫВОД ТЕМПЕРАТУРЫ НА ДИСПЛЕЕ
void showTemp(){ //
if(secFr==0) temp=readDS18B20(); // читаем датчик DS18B20. Для DS18S20 не подходит!
if(temp<0) showDigit(11, 0, dig5x8rn); // Если температура отрицательная печатаем в начале "-"
else showDigit(10, 0, dig5x8rn); // Иначе печатаем "+"
int t1=(int)temp/10; // число десятков
int t0=(int)temp%10; // число едениц
int tf=(temp-int(temp))*10.0; // число десятых
if(t1) showDigit(t1, 4, dig4x8); // если десяки = "0" то не печатаем
showDigit(t0, 9, dig4x8); // печатаем еденицы
showDigit(tf, 16, dig4x8); // печатаем десятые
setCol(14, 0xC0); // выводим запятую между целыми и десятыми градусов
showDigit(7, 22, dweek_ru); // Выводим значек градусов и "С"
} //


помогите как сделать преобразование отрицательного числа


Вложения:
chasy_matrica.zip [168.5 KiB]
Скачиваний: 287
Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб окт 24, 2020 16:32:54 
Опытный кот

Карма: 16
Рейтинг сообщений: 74
Зарегистрирован: Вс янв 19, 2014 00:55:09
Сообщений: 766
Рейтинг сообщения: 1
Может так?
Код:
if(temp<0){
 showDigit(11, 0, dig5x8rn);
temp *= -1;
}


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб окт 24, 2020 16:46:08 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4903
Откуда: Минск
Рейтинг сообщения: 1
Да, если температура отрицательная, нужно не только минус распечатать, но и сделать её затем для дальнейших расчетов положительной, инвертировав значение.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб окт 24, 2020 17:04:24 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 861
Откуда: Рязанская область
Рейтинг сообщения: 0
:beer: спасибо!


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт ноя 24, 2020 21:54:35 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1400
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7347
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Пытаюсь сделать копирование массивов с использованием ПДП. Пока есть вариант для копирования побайтно. Но, хочется, при определенных условиях копировать 16-битными словами или 32-битными. Полагал, что если адреса массивов и число копируемых данных делится на 4, то можно использовать 32-битный обмен. Но вот как это узнать?

Код:
void copy_data_dma (uint8_t * src, uint8_t * dst, uint16_t count) {

    if (((src | dst | count) & 0x03UL) == 0) {
...
    } else if (((src | dst | count) & 0x01UL) == 0) {
...
    } else {....}
Этот код не компилируется:
"../dma.c", line 41: error #31: expression must have integral type
"../dma.c", line 41: error #31: expression must have integral type
"../dma.c", line 46: error #31: expression must have integral type
"../dma.c", line 46: error #31: expression must have integral type

Как эту проверку сделать правильно?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт ноя 24, 2020 22:10:25 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4903
Откуда: Минск
Рейтинг сообщения: 7
Побитовое ИЛИ - не для указателей. Приводите к uint32_t:
((uint32_t)src | (uint32_t)dst | count)


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 19:14:34 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 861
Откуда: Рязанская область
Рейтинг сообщения: 0
не знаю в какой теме спросить :dont_know: немного не про С/С++, помогите .

есть сервер FTP с папкой source в которой каждый день создается файл с названием мм-дд-гг.csv (например сегодня 261120.csv завтра создаст 271120.csv и файлов в этой папки уже много)
есть компьютер на нем windows хр и папка Destination

нужно написать батник, чтобы виндувс сам копировал из source в час ночи вчерашний фай с расширением csv и вставлял в папку Destination

как поставить запуск этого bat-ника в определенные дни и часы через планировщик Windows, знаю.

написал батник на своем компе... копирует все дни, а нужно только вчерашний. :cry:

xcopy C:\Users\Компик\Desktop\source C:\Users\Компик\Documents\Destination ???????

понимаю что в компе есть календарь, но какой командой... как это связать... :oops: :dont_know:


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 19:20:45 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2905
Рейтинг сообщения: 1
https://tecadmin.net/create-filename-wi ... ch-script/


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 19:44:51 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 1
https://tecadmin.net/create-filename-with-datetime-windows-batch-script/

Допустим 1 января в час ночи он получит текущую дату 210101, а нужна дата предыдущего дня где отличаются год, день и месяц...
Лично я бы, наверное, набросал небольшую прогу на С#:
Код:
var date = DateTime.Now;
date = date.AddDays(-1);
string srcFileName = $"{date.Year - 2000}{date.Month:D2}{date.Day:D2}.csv";
File.Copy(srcFileName, dstFileName);


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 20:04:22 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 1
Serzh2000,
Код:
powershell -command "((Get-date).AddDays(-1)).ToString('ddMMyyyy') | set-content '%TEMP%\tempDate'" && set /p dt=<%TEMP%\tempDate && del %TEMP%\tempDate"
copy c:\source\%dt%.csv c:\destination\%dt%.csv


1ая строка получит дату вчера и сохранит её во временный файл. Потом из него считает в переменную окружения %dt% и удалит временный файл. Во 2ой соб-но копируется с указанием переменной. Пример работы, где перед copy дописано echo, чтобы увидеть что будет копироваться:
Код:
C:\Users\nstorm>powershell -command "((Get-date).AddDays(-1)).ToString('ddMMyyyy') | set-content 'C:\Users\nstor\AppData\Local\Temp\tempDate'"   && set /p dt=  0<C:\Users\nstor\AppData\Local\Temp\tempDate  && del C:\Users\nstor\AppData\Local\Temp\tempDate"

C:\Users\nstorm>echo copy c:\source\25112020.csv c:\destination\25112020.csv
copy c:\source\25112020.csv c:\destination\25112020.csv


EDIT2: Работает в современных ОС, где есть PowerShell. В XP его надо будет установить отдельно: https://sysadmin.ru/articles/ustanavliv ... ax-windows

Добавлено after 2 minutes 38 seconds:
EDIT3: длиннючий скрипт для манипуляций с датой чисто на cmd, без PowerShell'а: https://ss64.com/nt/syntax-datemath.html

Добавлено after 2 minutes 53 seconds:
EDIT4: еще один костыль - bash для windows: https://steve.fi/software/bash/
Через него любой вариант shell-скрипта для bash а-ля Linux. Просто написать, если надо помогу.


Последний раз редактировалось NStorm Чт ноя 26, 2020 20:09:41, всего редактировалось 2 раз(а).

Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 20:07:28 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2905
Рейтинг сообщения: 0
https://stackoverflow.com/questions/118 ... batch-file
здесь вроде покорече длинющего.
а так да, пауршелл покруче.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 20:34:34 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 861
Откуда: Рязанская область
Рейтинг сообщения: 0
Спойлерpowershell -command "((Get-date).AddDays(-1)).ToString('ddMMyyyy') | set-content '%TEMP%\tempDate'" && set /p dt=<%TEMP%\tempDate && del %TEMP%\tempDate"
copy c:\source\%dt%.csv c:\destination\%dt%.csv


Цитата:
1ая строка получит дату вчера и сохранит её во временный файл.


спасибо!!! что помогаете!
я не до понял получит дату... нужен файл с именем 112520.cvs

Изображение


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 20:56:16 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 1
Serzh2000, формат вы раньше чуть другой писали ) хотя я год в 4 цифры написал. Ну поменяйте тогда ToString('ddMMyyyy') на ToString('MMddyy'). А расширение .csv там же при копировании добавляется.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт ноя 26, 2020 21:03:19 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 861
Откуда: Рязанская область
Рейтинг сообщения: 0
Цитата:
Ну поменяйте тогда ToString('ddMMyyyy') на ToString('MMddyy').


догадался поменял... файл действительно с копировался!!!!

ОГРОМНОЕ ВАМ СПАСИБО!!! и ВСЕМ КТО БЫЛ НЕ РАВНОДУШЕН!!! :beer:


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс ноя 29, 2020 06:19:38 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1071
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 20047
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
На Хабре попалось. Скажете без подсказки, чему равно:
1. 1^NaN
2. 0^NaN
3. NaN^0
?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс ноя 29, 2020 12:41:01 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 3
Gudd-Head, без подсказки совсем, предположу что undefined behavior, и будет компиляторо-зависимое. (но это не так, правильный ответ нашел за 3 минуты гугления).
Вообще не понимаю вопросы, требующие ответа "без подсказки". Особенно такую экзотику. Кто будет в голове держать то, что в реальности может быть полезно знать раз в пятилетку и загуглить при необходимости не проблема?


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс ноя 29, 2020 14:05:20 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 3
На Хабре попалось. Скажете без подсказки, чему равно:
1. 1^NaN
2. 0^NaN
3. NaN^0
?

Статья на хабре была несколько дней назад и там был пример для python со степенью. Это тема про C/C++, в этих языках есть NAN, а не Nan, а '^' обозначает вовсе не степень. Бинарные же операторы не работают для чисел с плавающей точкой, т.е. все эти примеры просто не скомпилируются...

ps. Оказывается только в ревизии стандарта IEEE 754 от 2008 года закрепили, что pow(1, NaN) и pow(NaN, 0) должны возвращать 1, раньше результатом мог быть и NaN, т.е. ANSI C совместимый компилятор из конца 90-х может возвращать что угодно :)


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 09:06:39 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пт окт 21, 2011 14:39:31
Сообщений: 211
Рейтинг сообщения: 0
Можно ли подобные строки записывать как то проще, без обрамления каждого символа в одинарные кавычки?
Т.е. как инициализировать строку с спецсимволами в ней?
Код:
const char TelMesALARM[] PROGMEM = {'$','9',' ','A','L','A','R','M','\r','\n','\0'};


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7704 ]     ... , , , 347, , , ...  

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y