Перейти к содержанию
    

firstvald

Свой
  • Постов

    1 004
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент firstvald


  1. Шахназаров рассказывал что вообще не нашли материалов по Войне и миру. Нашли позитив в хорошем состоянии где- то в Прибалтике, сделанный для СовИнФильм. И на телевидении переписанный на бетту. В России не было негатива „Войны и мира“! Мы у „Совэкспортфильма“ запросили контратип, сделали реставрацию на цифру в формате SD и напечатали с него пленочную копию 35 мм. Но у нас не было такой техники, как сейчас, да и оригинальная копия 70 мм за эти годы обнаружилась. немного
  2. ну ++ помогают немного систематизировать. это если отвлечься от наследования. и можно писать на чистом си исходя из подхода свойства / методы. монолитным куском проект становится за годы. боюсь оказаться правым - любой проект. он может быть сначала цельным и прозрачным. но, если он развивается несколько лет, его, скорее всего, надо будет переписать с нуля.
  3. вопросы скорее есть к тому, что снимал Экран. а это спектакли. берет оторопь от дефектов на пленках спектаклей Проснись и пой , Безумный день.. похоже снимали на 16 мм и брак был уже в самом начале. история с восстановлением Война и Мир, там , похоже , нашли только позитив где- то в Прибалтике и с ним работали.
  4. глянул. там серьезная работа. нужно работать с файлами архива и параметрами фотоматериалов. примененные форматы нужно аккуратно сохранить, чтобы была совместимость. аккуратно рисовать график. и его тоже надо аккуратно печатать. обмениваться с оборудованием (а формат и протоколы обмена с денситометрами есть?). задача не для молнеиносного написания и в этом секрет проблемы. а вы могли бы досовскую версию выложить в файлообменник, а сюда ссылку? т е реально описаний форматов и тз не будет. нужно расковыривать. и исходники тех кто пошел по этой дорожке сохранились?
  5. в одной картинке все очень вменяемо нарисовано. С27 я бы не ставил. Без R34 низяяяя. ну и где у вас драйверы, скажем модбаса, там еще особое сочетание земель и резисторов.
  6. так и представляю матч с против с++. хотя это разные инструменты и нужны для разных вещщей. видел гибрид (..., в смысле дописывал проект) в котором программер дефайнами создал такой визуальный код, который внешне походил на плюсы, но был чисто сишным. он был гением, гении уходят , тварения остаются . в смысле: после него надо переписывать. и контора попала на время*деньги. дело в том, что код пророс аппаратурой. я тоже сначала думал: код же работал, работал, я тогда просто перенесу и все. но процессор сменился и если бы было с десяток файлов , я бы глазами отсмотрел , что бросилось в глаза поправил бы. откомпилировал бы и разбирался с сотней ошибок. но тут так не пройдет. приходится запускать по функциям. связанное с таймерами, с обменом с кнопками. и вот даже на кнопках вылезает то, что, скажем, меню, оперирует чуть ли не со всем задекларированными в СИШНИКАХ переменными, которые подключать нельзя - там все стреляется и не работает. и приходится из сишников вытаскивать вручную все определения переменных, чтобы хоть что -то запустилось. я не зря это чудовищным стилем называю - это диверсия. это на месяцы работа. мысль про обертки интересная. руководитель проекта , который бессменно годы этот проект тянул, так и выразился , но обернуть можно только то, что написано так, что внутрь не надо лезть , а там по регистрам кругом. был у нас программер. ага. говорил так. если мне надо операцию 5 раз повторить я строчку подряд пять раз копирую. для банка софт писали.
  7. мне сложно сказать про вообще. такой прием мне показали лет так десять назад профессиональные программеры. до этого мы пробовали выбрать схему написания проекта , которая бы снимала кучу проблем т н классического написания. проверяли некоторые варианты . из того, что я видел , остановился на этом. я очень подробно расписал почему "классически" делать мягко говоря не стоит. каждый волен писать, как ему удобно, но для своих проектов у меня некоторые правила , проверенные временем. вполне возможно, что у вас можно обойтись без глобальных переменных , но в измерительном эмбедде это не так. кто спорит, что локальники просто переносить, НО! только если в сишник не засованы декларации и определения. мне понравилось определение "по разным щелям" - точнейшее определение чудовищной модели с определением и декларированием в сишике и потом костылянии везде, где встретятся эти переменные. это кошмар. и его упорно тиражируют. не вдумываясь в эту глупость. это стиль программистов- поскакунчиков. пороект или загубливается или даже доводится до рабочего состояния и т н программер переходит в следующую контору сеять . на его место берется чел с "умением разбираться в чужом коде". и бой продолжается. сейчас приходится портировать проект написанный в таком стиле группой товарищей, а там более 90 файлов и как раз в сишники зафигачили определения. чего теперь с этим делать, непонятно. про плюсы от эмбеддеров нижнего уровня слышу .... в смысле не нужен с++. но было бы удобно в некоторых случаях (если проект сложный и его писать долго, плюсы явно дадут облегчение). кстати. ардуина на плюсах. очень удобно. не очень нравится гнилой стиль дискуссии. такой в стиле футбольных фанатов. правильнее читать внимательно. есть люди со странным воспитанием, считающие что они все видели и все знают. есть глупцы, кидающие пару умных фраз, типа я тут такой гений (Ландау такие). профессиональное сообщество предназначено для обмена шишками и знаниями. и, порой, в редчайших случаях, для нахождения решений, реально решающих проблему. про то чему учат и учили и какие заблуждения вколотили народу может в болталке начать тему.
  8. расскажите свой вариант. только сначала подумайте. переносим ли ваш код. можно ли его вторично использовать , можно ли вторично использовать в другом проекте декларируемые переменные и пробовали ли вы сами переносить код по частям при портировании другого процессора. и, ребят, внимательно читайте, что было написано и обдумайте.
  9. вот, ни в коем случае, в сишных не надо. это проходит в том случае, когда у вас маленький проект (вы помните, что где лежит) и когда вы не думаете о том, что ваш код будет использоваться повторно в других проектах . и у вас декларация и объявление получаются тогда в разных файлах. попробуйте как попереносить кусок кода без ошибок копированием из файла в файл, когда пишете и у вас открыто с два три десятка закладок. а, когда вы пишите в пределах одного файла , вы гораздо меньше подвержены таким ошибкам. и вот точно никаких костылей тут нет. поэтому, когда я вижу код, который написан, как в умных книжках с полувековой историей, я понимаю, что ждать бяды. и, хуже того, пацанов продолжают учить такому, люди никогда не занимавшиеся разработкой.
  10. вот с объявлением структур ооочень аккуратно надо. и я скакал по этим граблям (получал в разных файлах разные экземпляры структуры под одним и тем же именем). стал делать так, в заголовочнике: #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"
  11. так поэтому и risc/ число команд ограничено. это в intel-е все со всем пересылается. если начать писать на с для mikrochip многие из этих удивительностей просто скроет компилятор.
  12. в вашей схеме можно вот так. . Вх 1 и Вх 2 выбирают направление. 0 1 или 1 0 туда или сюда. 00 или 11 стоим на месте. А на pwm подаем шим. pwm.bmp и 298 pwm 1.bmp
  13. Специально я не разрешал, но просмотрю в эту сторону. Я думал сначала, что в голубую таблетку can не доложили , попробовал с nucleo / а то же самое.
  14. Пробую простенький тестовый проект с 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; } }
  15. ну, в порядке поиска, что происходит. внимательно посмотрите декларации потоков и объектов. у меня бывало так, что при копировании я не все подправлял для следующего объекта. и посмотрите - нет ли в какой из функций автоматических параметров - массивов или структур.
  16. "я не поняла" это конструктор такой? как анекдот с последним пунктом в мануале : обработать напильником.
  17. запросто слепили из других проектов за вечер не меняя ничего.
  18. а есть ли у этого принтера старший брат. подороже. может там сделано по - другому?
  19. ребят. речь вообще идет о разработке станка. по сложности и по трудозатратам - не конструкция выходного дня. и да , для начала будет этап исследований. результатом будут цифры и , возможно, гипотезы почему и как . и уж на основании этого этап сделать как , который тоже вериятностный. сказать сначала цену и сроки невозможно.
  20. очень осторожное предположение - ситуацию можно поправить если залезть в двигатель штатным по и полазить в калибровках
  21. а такой вопрос. движение холста все время отстает от ожидаемого перемещения или может отставать, а может и опережать? если поставить эксперимент с печатью сетки и посмотреть что там с размерами то может быть при преобразовании внутри происходит такое округление что вал недокручивается систематически. и тогда ситуацию можно было бы поправить систематическим довыдаванием импульса через определенное количество. без энкодеров.
×
×
  • Создать...