-
Постов
1 005 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Сообщения, опубликованные firstvald
-
-
47 minutes ago, Леонид К. said:
Формат записи - обычный текстовый файл. Но это не оптимальный вариант. Выглядит вот так:
Вот ссылка, как происходит ручной ввод плотностей
https://disk.yandex.ru/i/kh0NbJtQMc5-sQ
Вот как происходит ручной ввод плотностей: https://disk.yandex.ru/i/kh0NbJtQMc5-sQ
"Войну и мир" восстанавливал "Мосфильм" с имеющегося у него дубль-позитива. Дубль-позитив - это выверенный по цвету фильм, только малоконтрастный, чтобы при тиражировании не увеличивался контраст. Сам негатив фильма "Война и мир" хранится в Госфильмофонде, он шириной 70 мм. Для такой киноплёнки нужен специальный широкоформатный сканер.
Не понял, при чём тут Прибалтика???
За правильностью цветопередачи восстановленного фильма "Война и мир" следил кинооператор этого фильма, Анатолий Петрицкий.
Сейчас А.Петрицкому уже 91 год
Шахназаров рассказывал что вообще не нашли материалов по Войне и миру. Нашли позитив в хорошем состоянии где- то в Прибалтике, сделанный для СовИнФильм. И на телевидении переписанный на бетту.
В России не было негатива „Войны и мира“! Мы у „Совэкспортфильма“ запросили контратип, сделали реставрацию на цифру в формате SD и напечатали с него пленочную копию 35 мм. Но у нас не было такой техники, как сейчас, да и оригинальная копия 70 мм за эти годы обнаружилась.
-
ну ++ помогают немного систематизировать. это если отвлечься от наследования. и можно писать на чистом си исходя из подхода свойства / методы. монолитным куском проект становится за годы. боюсь оказаться правым - любой проект. он может быть сначала цельным и прозрачным. но, если он развивается несколько лет, его, скорее всего, надо будет переписать с нуля.
-
вопросы скорее есть к тому, что снимал Экран. а это спектакли. берет оторопь от дефектов на пленках спектаклей Проснись и пой , Безумный день.. похоже снимали на 16 мм и брак был уже в самом начале.
история с восстановлением Война и Мир, там , похоже , нашли только позитив где- то в Прибалтике и с ним работали.
-
глянул. там серьезная работа. нужно работать с файлами архива и параметрами фотоматериалов. примененные форматы нужно аккуратно сохранить, чтобы была совместимость. аккуратно рисовать график. и его тоже надо аккуратно печатать. обмениваться с оборудованием (а формат и протоколы обмена с денситометрами есть?). задача не для молнеиносного написания и в этом секрет проблемы. а вы могли бы досовскую версию выложить в файлообменник, а сюда ссылку?
т е реально описаний форматов и тз не будет. нужно расковыривать. и исходники тех кто пошел по этой дорожке сохранились?
-
в одной картинке все очень вменяемо нарисовано. С27 я бы не ставил. Без R34 низяяяя.
ну и где у вас драйверы, скажем модбаса, там еще особое сочетание земель и резисторов.
-
очень вменяемый пост.
-
так и представляю матч с против с++. хотя это разные инструменты и нужны для разных вещщей.
видел гибрид (..., в смысле дописывал проект) в котором программер дефайнами создал такой визуальный код, который внешне походил на плюсы, но был чисто сишным. он был гением, гении уходят , тварения остаются . в смысле: после него надо переписывать. и контора попала на время*деньги.
31 minutes ago, Forger said:а ничего не делать, оставить как есть, я серьезно!
просто ставлю свои простые обертки вокруг чужого и стороннего кода, т.н. wrappers, по сути это некий интерфейс между чужим кодом (порой откровенным го%кодом) и моими проектами,
позволяет и "не измазаться" в чужом коде и если что его обновить на более "свежее" г
дело в том, что код пророс аппаратурой. я тоже сначала думал: код же работал, работал, я тогда просто перенесу и все. но процессор сменился и если бы было с десяток файлов , я бы глазами отсмотрел , что бросилось в глаза поправил бы. откомпилировал бы и разбирался с сотней ошибок. но тут так не пройдет. приходится запускать по функциям. связанное с таймерами, с обменом с кнопками. и вот даже на кнопках вылезает то, что, скажем, меню, оперирует чуть ли не со всем задекларированными в СИШНИКАХ переменными, которые подключать нельзя - там все стреляется и не работает. и приходится из сишников вытаскивать вручную все определения переменных, чтобы хоть что -то запустилось. я не зря это чудовищным стилем называю - это диверсия. это на месяцы работа.
мысль про обертки интересная. руководитель проекта , который бессменно годы этот проект тянул, так и выразился , но обернуть можно только то, что написано так, что внутрь не надо лезть , а там по регистрам кругом.
был у нас программер. ага. говорил так. если мне надо операцию 5 раз повторить я строчку подряд пять раз копирую. для банка софт писали.
-
8 hours ago, Forger said:
не использую си, давным давно пишу на плюсах и нет ни одной глобальной переменной даже в больших проектах, но это к слову ))
как раз проще всего переносить тем модули, у которых все объекты локальные или с припиской static
глобальные переменные и тем более структуры и тем более раскиданные "по разным щелям" кода - вот это как раз и есть типичный костыль, для борьбы с которым вы придумали еще один, причем по настоящему чудовищный ))
мне сложно сказать про вообще. такой прием мне показали лет так десять назад профессиональные программеры. до этого мы пробовали выбрать схему написания проекта , которая бы снимала кучу проблем т н классического написания. проверяли некоторые варианты . из того, что я видел , остановился на этом. я очень подробно расписал почему "классически" делать мягко говоря не стоит. каждый волен писать, как ему удобно, но для своих проектов у меня некоторые правила , проверенные временем. вполне возможно, что у вас можно обойтись без глобальных переменных , но в измерительном эмбедде это не так. кто спорит, что локальники просто переносить, НО! только если в сишник не засованы декларации и определения. мне понравилось определение "по разным щелям" - точнейшее определение чудовищной модели с определением и декларированием в сишике и потом костылянии везде, где встретятся эти переменные. это кошмар. и его упорно тиражируют. не вдумываясь в эту глупость. это стиль программистов- поскакунчиков. пороект или загубливается или даже доводится до рабочего состояния и т н программер переходит в следующую контору сеять . на его место берется чел с "умением разбираться в чужом коде". и бой продолжается. сейчас приходится портировать проект написанный в таком стиле группой товарищей, а там более 90 файлов и как раз в сишники зафигачили определения. чего теперь с этим делать, непонятно.
про плюсы от эмбеддеров нижнего уровня слышу .... в смысле не нужен с++. но было бы удобно в некоторых случаях (если проект сложный и его писать долго, плюсы явно дадут облегчение). кстати. ардуина на плюсах. очень удобно.
не очень нравится гнилой стиль дискуссии. такой в стиле футбольных фанатов. правильнее читать внимательно. есть люди со странным воспитанием, считающие что они все видели и все знают. есть глупцы, кидающие пару умных фраз, типа я тут такой гений (Ландау такие).
профессиональное сообщество предназначено для обмена шишками и знаниями. и, порой, в редчайших случаях, для нахождения решений, реально решающих проблему.
про то чему учат и учили и какие заблуждения вколотили народу может в болталке начать тему.
-
расскажите свой вариант. только сначала подумайте. переносим ли ваш код. можно ли его вторично использовать , можно ли вторично использовать в другом проекте декларируемые переменные и пробовали ли вы сами переносить код по частям при портировании другого процессора. и, ребят, внимательно читайте, что было написано и обдумайте.
-
вот, ни в коем случае, в сишных не надо. это проходит в том случае, когда у вас маленький проект (вы помните, что где лежит) и когда вы не думаете о том, что ваш код будет использоваться повторно в других проектах . и у вас декларация и объявление получаются тогда в разных файлах. попробуйте как попереносить кусок кода без ошибок копированием из файла в файл, когда пишете и у вас открыто с два три десятка закладок. а, когда вы пишите в пределах одного файла , вы гораздо меньше подвержены таким ошибкам. и вот точно никаких костылей тут нет. поэтому, когда я вижу код, который написан, как в умных книжках с полувековой историей, я понимаю, что ждать бяды. и, хуже того, пацанов продолжают учить такому, люди никогда не занимавшиеся разработкой.
-
вот с объявлением структур ооочень аккуратно надо. и я скакал по этим граблям (получал в разных файлах разные экземпляры структуры под одним и тем же именем). стал делать так, в заголовочнике:
#ifndef _sensor #define _sensor struct sensor_general_type{ unsigned short int meash_interval_sec; }; #ifdef sensor_first_appear struct sensor_general_type sensor_general; #else extern struct sensor_general_type sensor_general; #endif #endif
в ОДНОМ месте в с или хедере так:
#define sensor_first_appear #include "sensor.h"
во всех других местах так:
#include "sensor.h"
-
так поэтому и risc/ число команд ограничено. это в intel-е все со всем пересылается. если начать писать на с для mikrochip многие из этих удивительностей просто скроет компилятор.
-
-
вот это засада!
-
судя по всему Зелик
-
Специально я не разрешал, но просмотрю в эту сторону. Я думал сначала, что в голубую таблетку can не доложили , попробовал с nucleo / а то же самое.
-
Пробую простенький тестовый проект с CAN. Но я или что то упустил или что то не разрешил. На ножках нет передачи . На прием тоже нет прерывания.
Может свежим глазом что- то бросится.
#include "state.h" #include "can_my.h" #include "stm32f1xx_hal_cortex.h" CAN_HandleTypeDef hcan; /* USER CODE BEGIN PV */ CAN_FilterTypeDef canFilterConfig;/* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_CAN_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_CAN_Init(); /* USER CODE BEGIN 2 */ HAL_CAN_Start(&hcan); HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING); while (1) { if(flag_1s==1){ flag_1s=0; if (HAL_CAN_GetTxMailboxesFreeLevel(&hcan) != 0) { msgTxHeader.StdId = 0x200; msgTxHeader.DLC = 8; msgTxHeader.TransmitGlobalTime = DISABLE; msgTxHeader.RTR = CAN_RTR_DATA;// ïåðåäàåì ñàìè íå çàïðîñ ïàðàìåòðà msgTxHeader.IDE = CAN_ID_STD; uint32_t mailBoxNum = 0; for (uint8_t i = 0; i < 8; i++) { msgTxData[i] = i; } HAL_CAN_AddTxMessage(&hcan, &msgTxHeader, msgTxData, &mailBoxNum); } }//flag 1 s }//while }//main static void MX_CAN_Init(void) { canFilterConfig.FilterBank = 0; canFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; canFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; canFilterConfig.FilterIdHigh = 0x0000;//ñòàðøàÿ ÷àñòü ID canFilterConfig.FilterIdLow = 0x0000;// ìëàäøàÿ ÷àñòü ID canFilterConfig.FilterMaskIdHigh = 0x0000;// ñòàðøàÿ ÷àñòü ìàñêè canFilterConfig.FilterMaskIdLow = 0x0000;// ìëàäíàÿ ÷àñòü ìàñêè canFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; canFilterConfig.FilterActivation = ENABLE; canFilterConfig.SlaveStartFilterBank = 14; HAL_CAN_ConfigFilter(&hcan, &canFilterConfig); hcan.Instance = CAN1; hcan.Init.Prescaler = 16; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_13TQ; hcan.Init.TimeSeg2 = CAN_BS2_2TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = ENABLE ; hcan.Init.AutoRetransmission = DISABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { Error_Handler(); } } void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hcan->Instance==CAN1) { __HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**CAN GPIO Configuration PA11 ------> CAN_RX PA12 ------> CAN_TX */ GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP ; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* CAN1 interrupt Init */ HAL_NVIC_SetPriority(USB_HP_CAN1_TX_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USB_HP_CAN1_TX_IRQn); HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); } } void USB_LP_CAN1_RX0_IRQHandler(void) { HAL_CAN_IRQHandler(&hcan); } void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) { HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &msgRxHeader, msgRxData); if (msgRxHeader.IDE == CAN_ID_EXT) { msgId = msgRxHeader.ExtId; } else { msgId = msgRxHeader.StdId; } }
-
ну, в порядке поиска, что происходит. внимательно посмотрите декларации потоков и объектов. у меня бывало так, что при копировании я не все подправлял для следующего объекта. и посмотрите - нет ли в какой из функций автоматических параметров - массивов или структур.
-
"я не поняла" это конструктор такой? как анекдот с последним пунктом в мануале : обработать напильником.
-
запросто слепили из других проектов за вечер не меняя ничего.
-
а есть ли у этого принтера старший брат. подороже. может там сделано по - другому?
-
1
-
-
ребят. речь вообще идет о разработке станка. по сложности и по трудозатратам - не конструкция выходного дня. и да , для начала будет этап исследований. результатом будут цифры и , возможно, гипотезы почему и как . и уж на основании этого этап сделать как , который тоже вериятностный. сказать сначала цену и сроки невозможно.
-
1
-
-
очень осторожное предположение - ситуацию можно поправить если залезть в двигатель штатным по и полазить в калибровках
-
Ищу в Москве программиста, который может на Ассемблере или Паскале повторить программу, написанную под МС-ДОС
в Предлагаю работу
Опубликовано · Пожаловаться
завтра днем за эту фразу вам прилетит
реально ТЗ пишется порой неск месяцев и в нем расписывается функционал и форматы. если его нет ни в каком виде "все и так понятно" работа не будет сделана никогда. при попытке работать в стиле : а вот тут вот добавить а там у меня вот так было - уйдут даже друзья. если есть острая потребность - нужно тз со всеми сценариями, форматами/ иначе ничего не будет. или тз войдет в работу исполнителя. но написание будет неск месяцев. это может быть неожиданным для вас , но никто по другому работать не согласиться.