Эдуард
у какого деда?
Вадим
Ты только у деда себя примерно ведешь? А тут всё успокоится не можешь ?
успокоится не можете ВЫ.. вообще сюда не заходил и не планировал.. человек спросил, я ответил.. что не так? вы можете заблокировать меня только в этой ветке?.. было бы неплохо.. и проблем не будет. не пишите мне здесь ничего и заходить не буду.
ㅤ
у какого деда?
Ну где ты админишь
Евгений
забавно.. а вы какие мониторы в приборку себе представляли? 😂😂😂 это самый что ни на есть стандартный для этого дела.
Так вариантов экранов куча, а может адаптировали приборку от более современных моделей? А может пристроили какой то экран с HMI, может MIPI, может LVDS, да и вообще мало ли =)
Артем
ну так вы сейчас занимаетесь полной **нёй, не выяснив вопрос с записью
передачу второго параметра отключил (который speed) код не падает
Вадим
примерно на 5-й минуте я сказал вам наиболее вероятную причину, вы шлете в шину либо не то, либо не так и остаюсь при своем мнении, хотя не претендую на истину 😂😂
Вадим
у вас виснет шина от ваших сообщений.. а поскольку читаете её вы не совсем корректоно то и программа виснет вслед за ней
Артем
но сообщение туда летит точно корректное, я проверил
Артем
когда летит
Артем
Да пока ниче не началось) я готов всё выслушать и принять, только желательно с конкретными примерами, что не так отправляю, как правильно или где почитать, как выстроить очередь для кан шины как ее не забить. (Опять же сама шина в машине точно НЕ лежит, иначе бы я тут кучу ошибок словил)
Евгений
нет не мало, согласен. но вот automativ не так уж и много. )))
Простой народ городит на более простых экранчиках
Артем
пока я вижу только выдернутые куски кода, по установлению связи и свич вместо своего ифа
Артем
Отправляю так void sendCan(CanFrame MSG) { ESP32Can.writeFrame(MSG); }
Вадим
Да пока ниче не началось) я готов всё выслушать и принять, только желательно с конкретными примерами, что не так отправляю, как правильно или где почитать, как выстроить очередь для кан шины как ее не забить. (Опять же сама шина в машине точно НЕ лежит, иначе бы я тут кучу ошибок словил)
смотрите. я писать код за вас конечно не буду, но сориентирую в двух словах.. у вас же есть CAN-сниффер хоть какой-то да хоть на второй такой-же ESP.. вот подключаете, и смотрите что посылает ваш код и что с ним происходит дальше.. я на 90% уверен, что данные в шине останавливаются. может фрейм вы посылаете верно сформированный (что тоже не факт, ибо фрейм должен быть правильно оформлен), но вот ждет ли ваше сообщение в ТАКОМ виде кто-то там? допускаю что то, что вы туда отправили вешает какой-то блок.. это запросто... ну и сам код вообще не годится.. только для проверки каких то отдельных кусков, которые потом надо собирать в кучу... читать буфер вам надо максимально быстро с максимальным приоритетом задачи, а в обработчике минимум обработки.. как правило это простые действия, типа Speed = frame.data[0]*0x100+frame.data[1] (ну или сдвигами, кому как больше нравится, неважно) вся остальная логика обработки этих полученных базовых переменных уже выполняется где-то там с приоритетом задачи пониже.. РАВНО как и отправка фреймов в шину, вывод в Serial, WiFi, BT и тому подобное... я вам дал достаточный базовый код, чтобы сделать надежное чтение. начните с этого.. хрен с ней с отправкой.. отправляете пакеты пока в сериал.. когда будет работать как часы, переключите на КАН.. как-то так.. все, буду готовиться к НАСКАР... до завтра...
Артем
на сниффере всё четко, тот кто ждет пакет принимает я это явно вижу
Вадим
Отправляю так void sendCan(CanFrame MSG) { ESP32Can.writeFrame(MSG); }
ну и что здесь видно? каки комментариев вы хотите? 😂😂😂
Артем
смотрите. я писать код за вас конечно не буду, но сориентирую в двух словах.. у вас же есть CAN-сниффер хоть какой-то да хоть на второй такой-же ESP.. вот подключаете, и смотрите что посылает ваш код и что с ним происходит дальше.. я на 90% уверен, что данные в шине останавливаются. может фрейм вы посылаете верно сформированный (что тоже не факт, ибо фрейм должен быть правильно оформлен), но вот ждет ли ваше сообщение в ТАКОМ виде кто-то там? допускаю что то, что вы туда отправили вешает какой-то блок.. это запросто... ну и сам код вообще не годится.. только для проверки каких то отдельных кусков, которые потом надо собирать в кучу... читать буфер вам надо максимально быстро с максимальным приоритетом задачи, а в обработчике минимум обработки.. как правило это простые действия, типа Speed = frame.data[0]*0x100+frame.data[1] (ну или сдвигами, кому как больше нравится, неважно) вся остальная логика обработки этих полученных базовых переменных уже выполняется где-то там с приоритетом задачи пониже.. РАВНО как и отправка фреймов в шину, вывод в Serial, WiFi, BT и тому подобное... я вам дал достаточный базовый код, чтобы сделать надежное чтение. начните с этого.. хрен с ней с отправкой.. отправляете пакеты пока в сериал.. когда будет работать как часы, переключите на КАН.. как-то так.. все, буду готовиться к НАСКАР... до завтра...
На столе всё работает и с моим кодом исправно, проблемы начинаются в авто, где пакетов в сотни тысяч раз больше
Артем
и только при откравке
Вадим
ОК.. вот вам последний кусок кода с которым можно с КАН делать почти все.. void CAN_Send(int Pid, byte Len, byte * buf) { twai_message_t txFrame; txFrame.identifier = Pid; txFrame.rtr = 0; txFrame.data_length_code = Len; for (int i=0; i<Len; i++) { txFrame.data[i] = buf[i]; } txFrame.extd = false; if (CAN_WR) esp_err_t result = twai_transmit(&txFrame, pdMS_TO_TICKS(1000)); }
Артем
у меня сейчас нет приоритизации отправки, возможно я пытаюсь пихнуть отправку пока предыдущее еще не отправилось
Артем
трансмит в оболочке идёт с таки же тиком в 1000
Вадим
Простой народ городит на более простых экранчиках
да. и я знаю таких .. нет проблем. все зависит от задач.. кто-то просто хочет пару-тройку доп датчиков типа давление в турбине и давление закиси азота, а кому-то (как мне) надо полноценную приборку.. тут уж экранчиками от планшетов не обойтись.. ну только если в какой Гольфик 90 года, там приборка совсе небольшая..
Вадим
трансмит в оболочке идёт с таки же тиком в 1000
этот тик - таймаут, который процедура чтения из буфера захватит власть над вашим процессом, если там ничерта нет. вы смело можете поставить 0. и так будет даже правильнее.
Артем
ладно, спасибо за помощь, я правда всё равно нихрена не понял, почему когда только один процесс всё ок, а когда два (или вернее второй) всё виснет
Вадим
а.. вы про отправку.. да. это тайсаут по которому будет пытаться отправка.. если за 1000мс сообщение не будет помщено в шину оно пропадет
Вадим
ладно, спасибо за помощь, я правда всё равно нихрена не понял, почему когда только один процесс всё ок, а когда два (или вернее второй) всё виснет
вот же е-мае.. 😂😂😂 изворотливее надо, товарищ..!!! 😂😂 поставьте три подряд процесса которые у вас работающие и так вы выясните процесс виноват или их количество..
Вадим
и разведите их всеже по потокам со старта.. потом запаритесь по живому это делать.. в ардуине есть отличные примеры xTaskCreatePinnedToCore
Артем
проблема в том, что на столе не воспроизводится) было б на столе, я бы выяснил, а так постоянно в машине сидеть с ноутом не получается
Вадим
прежде чем я сделал первую версию приборки я пол-лета просидел в машине.. а спросить было не у кого
Артем
и разведите их всеже по потокам со старта.. потом запаритесь по живому это делать.. в ардуине есть отличные примеры xTaskCreatePinnedToCore
у меня опыт только Бейсика) я вообще не понимаю как ino распихать что бы не одной портянкоц быд)
ㅤ
В ардуине кстати с этим проще простого
Вадим
у меня опыт только Бейсика) я вообще не понимаю как ino распихать что бы не одной портянкоц быд)
да просто создаете еще один ино и перекидываете туда любые функции хоть по одному ino на каждую.
Вадим
их даже нигде не надо объявлять
ㅤ
Вроде в ардуино даже не надо отдельно объявлять функцию что она где-то есть. Оно само как-то умудряется
Артем
я пробовал, он начал ругаться что не понимает что за переменные
Вадим
он их же на сколько я понял собирает хрен пойми как
какая вам разница как он их собирает? ... соберет
Артем
если бы) ну ладно, это лирика
ㅤ
если бы) ну ладно, это лирика
Ну потому что если у тебя переменная где-то внутри функции а ты её из другой функции пытаешься получить то это так не работает.
ㅤ
Если переменная глобальная в пределах файла то объяви её в другом файле но с приставкой extern
Sokil
fork/exec C:\Windows\system32\cmd.exe: Operation did not complete successfully because the file contains a virus or potentially unwanted software. Compilation error: fork/exec C:\Windows\system32\cmd.exe: Operation did not complete successfully because the file contains a virus or potentially unwanted software. что делать? пытаюсь прошить esp32, в интернете никакую информацию найти не могу
Артем
у меня переменная в отдельном файле h, но подключиьь его к двум ino нельзя
Sokil
отключал
ㅤ
отключал
А если нажать пуск и запустить этот самый cmd он запустится?
ㅤ
да
Ну значит есть еще где-то cmd.exe который заражен видимо и который "ближе" в path. Короче тут надо разбираться с виндой. Что-то здесь не то
ㅤ
Странно что он его не грохнет
ㅤ
Запусти сканирование системы полный. Возможно найдет
ㅤ
Вообщем тут общее с есп32 только то что у тебя в руках эта плата. Проблема гораздо глубже
I don't know
А что именно сгорело погоди ка?
Сгорел понижающий регулятор напряжения
Вадим
а у меня вопрос, для саморазвития?.. а что это fork/exec откуда ?
ㅤ
а у меня вопрос, для саморазвития?.. а что это fork/exec откуда ?
Это означает что попытка форкнуть/запустить данный файл увенчалось проблемой
I don't know
Ну отпаяй его с платы
Уже поздно я её распилил и сделал из него наглядное пособие 😂
ㅤ
Уже поздно я её распилил и сделал из него наглядное пособие 😂
Да блин может просто у тебя стаб на землю пробило и чип выжил (хотя такое редко, но бывает, чаще его на нагрузку пробивает)
I don't know
Ну уже поздно
ㅤ
а у меня вопрос, для саморазвития?.. а что это fork/exec откуда ?
Скорее применяется технология форкнуть текущий процесс а потом из него сделать execlp на другой (в данном случае cmd.exe) где системой было отказано в виду того что она где-то узрела зараженный файл. Это posix терминология.
Вадим
Уже поздно я её распилил и сделал из него наглядное пособие 😂
а она у вас питалась исключительно от разъема USB?
ㅤ
ни слова не понял
Для есп это ненужно. Больше для прикладного программирования линукс/виндоуз
Артем
а вообще если в снегу застрял или надо ходами проехать, все таки универсал повышенной проходимости
ㅤ
Дрифт мод)
Не та машина для этого
Артем
еще как та)
DeFensy 🛡⚔️ AntiSpamBot
Администратор запретил пересылку или цитирование сторонних сообщений 🔖ads: Бот создан в @botsbaseru
Артем
ясно)
Артем
могу в лс фоточки прислать с сегодняшнего заезда