Arduino находит не понятную ошибку

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Уважаемые гуру, объясните пожалуйста дремучему, почему программа, речь идёт о скетче, непринимает 9 ?

Нужно написать:
{ 12, 0986,    6,    0,   "0.75mm", " 760rpm" }, но выдаётся сообщение
error: invalid digit "9" in octal constant
Если из 0986 удалить 9 то ошибки нет. И что мне нужно сделать, чтобы ввести эти цифры ? Пробовал и в версии 1.0.2 и в последней 1.6.8

Logik
Offline
Зарегистрирован: 05.08.2014

0986 приняло за восьмеричное, потому как первый 0,  а в восьмеричном 9 быть не может. Пишите в HEX, сразу будет трудно потом привыкните ;)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В восьмеричной системе счисления (octal) нет цифры 9, только от 0 до 7.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

А где это задаётся, восьмеричная система ? Я ничего такого не задавал. В других местах девятка проходит без замечаний. Вот например
{ 36, 2956,   18,    0,

Logik
Offline
Зарегистрирован: 05.08.2014

mat пишет:

А где это задаётся, восьмеричная система ? Я ничего такого не задавал. В других местах девятка проходит без замечаний. Вот например
{ 36, 2956,   18,    0,

Logik пишет:

потому как первый 0

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Я везде расчёты делаю в десятичной системе и так получается, что нужно в дробной части четыре знака после запятой учитывать. Если я отброшу первый 0 то, это будет недопустимая погрешность. Как можно обойти или исправить это ?

Logik
Offline
Зарегистрирован: 05.08.2014

Подождите, Вы хотите задать 12, 0986 т.е. двенадцать целых и дохрена десятитысячных?! Я правильно Вас непонял? так тогда не , а . должна быть. Больше текста проги в студию!

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так и пробела быть не должно, и если это установка некоего массиву, то и смешивать числа со строками .. не поверю что компилятор позволит. :)

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ну вот, такую таблицу нужно вставить
{                                                   
   { 25, 2954,   12, 8571,   "0.35mm", " 999rpm" },
   { 22, 6847,   11, 2500,   "0.40mm", " 999rpm" },
   { 18, 1478,    9,        0,   "0.50mm", " 999rpm" },
   { 15, 1226,    7, 5000,   "0.60mm", " 950rpm" },
   { 12, 9628,    6, 4286,   "0.70mm", " 810rpm" },
   { 12,  0986,   6,       0,   "0.75mm", " 760rpm" },
   { 11, 3424,    5, 6250,   "0.80mm", " 710rpm" },
   { 10, 0829,    4, 5000,   "0.90mm", " 560rpm" },
   {  9, 0739,    3, 6000,   "1.00mm", " 460rpm" },
   {  7, 2591,    3,       0,   "1.25mm", " 380rpm" },
   {  6, 0492,    2, 5714,   "1.50mm", " 320rpm" },
   {  5, 1850,    2, 2500,   "1.75mm", " 280rpm" },
   {  4, 5370,    1, 8000,   "2.00mm", " 220rpm" },
   {  3, 6296,    1, 5000,   "2.50mm", " 190rpm" },
   {  3, 0247,    1, 1250,   "3.00mm", " 140rpm" },
};

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

К-куда "вставить"? :)

Logik
Offline
Зарегистрирован: 05.08.2014

Очевидно в программу!!! )))) а её - в ардуину!!! 

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ну что, можно как- то ввести это в скетч ? Всё остальное уже работает, за исключением вот этих, нескольких строчек, будь они не ладны, эти девятки...

Logik
Offline
Зарегистрирован: 05.08.2014

Еще немного текст. Что перед этой таблицей и какого оно типа?

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

Вы бухгалтер или просто устали?

Вам УЖЕ Логик написал: десятичные дробные числа по ПРАВИЛАМ языка "С" пишутся с разделительной ТОЧКОЙ, а не ЗАПЯТОЙ и без, вашу ..ать, пробелов в числе.

не {10, 0829}, а {10.0829}. Так понятно???? Десятичная ТОЧКА, ТОЧКА, Т_О_Ч_К_А! Етить Вас в корень!

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Нет. В таком виде - нельзя. И то что у вас "остальное все работает" - очень сомнительно. Скетч - в студию! Колитесь уже, вместе посмеемся.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Там .. вещественные дроби, согласно "четыре знака после запятой"..

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Этот скетч работает у меня на станке, прошу не подвергать сомнению. И весь скетч, тоже не покажу. Не моё ибо. А разрешения, на распространение, у меня нет.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Значит не "этот"... с такой попыткой "впихнуть невпихуемое" .. никакого скетча не может быть .. или не у вас. Может попросить впихнуть того, кто писал скетч? Не?

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Не...

Вот, для других параметров, этот же фрагмент, вопросов нет
{                                                   
   { 19, 2857,   12, 8571,   "0.35mm", " 999rpm" },
   { 16, 8750,   11, 2500,   "0.40mm", " 999rpm" },
   { 13, 5000,    9,    0,   "0.50mm", " 999rpm" },
   { 11, 2500,    7, 5000,   "0.60mm", " 950rpm" },
   {  9, 6429,    6, 4286,   "0.70mm", " 810rpm" },
   {  9,    0,    6,    0,   "0.75mm", " 760rpm" },
   {  8, 4375,    5, 6250,   "0.80mm", " 710rpm" },
   {  6, 7500,    4, 5000,   "1.00mm", " 560rpm" },
   {  5, 4000,    3, 6000,   "1.25mm", " 460rpm" },
   {  4, 5000,    3,    0,   "1.50mm", " 380rpm" },
   {  3, 8571,    2, 5714,   "1.75mm", " 320rpm" },
   {  3, 3750,    2, 2500,   "2.00mm", " 280rpm" },
   {  2, 7000,    1, 8000,   "2.50mm", " 220rpm" },
   {  2, 2500,    1, 5000,   "3.00mm", " 190rpm" },
   {  1, 6875,    1, 1250,   "4.00mm", " 140rpm" },
};

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну .. стало быть вы задаете массив структур, и такое возможно. В таком разе из первого варианта уберите ВСЕ лидирующие нули. То есть не нулевое число не стоит начинать с нуля также как тут есть чиселки из одной цифирьки.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ну как можно обойтись без нуля, если 4460 : 368,6382 = 12,0986 ?

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

...ля! это ..здец! Если это дроби - то через точку, если это элемент структуры целого типа - то начальный 0 означает 8-ричную систему счисления.

Если скетч так написан, что в структуре хранится отдельно целая и дробная части, то все равно придется писать без первого "0".

Либо придется переписывать скетч.

Если Вы не выё...тесь, а правда хотите помощи, то сохраняя Ваш мега секретный скетч, покажите описание ТИПА того массива, который Вы пытаетесь задать этой таблицей.

Если Вы вообще нихера не понимаете в программировании, то ищите слова typedef  или struct в окресности такой таблицы в оригинальном, работающем скетче. Вот от этого места до конца таблицы нам кусочек и покажите.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну наверное так 986. Там же у вас явно дроби в десятитысячных. Иначе что означает 6 во втором примере? Мой ХШ утверждает 0.0006, нет? :)

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

Архат, я тоже так думаю, но лучше убедиться.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Я не выё...юсь, а спрашиваю, как обойти эту ошибку, ибо сам в программировании НУЛЬ. Я в железяках хорошо разбираюсь, а к вам обратился, в надежде что спецы помогут...

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так вы попробуйте убрать лидирующие нули .. и всё получится. :)

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ребята, если я уберу лидирующий нуль, резец будет резать то, что мне нужно ? Всё таки 12,0986 и 12,986 далеко не одно и то же.

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

на этот вопрос ответит практика. или демонстрация куска скетча.

То есть сам факт, что после реплики "а скетч не покажу" Вас сразу не послали на йюх, уже удивляет, и должен стимулировать Вас к посту и молитве. ИМХО.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну тут да .. у меня седня настроение хорошее и ХШ вроде фурычит .. или скетч смотреть или молиться, что резец не полетит.. или таки обратится на месте к автору.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Что- то не похоже на нужное... Летит прямо, вместо неспешного движения. Ладно, сегодня уже поздно, завтра днём отпишусь.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

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

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ну, не удержался, включил станок. Как и ожидал, шаг больше, чем должен быть. Есть мысли ?

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

Я - ничего не прошу. Мне, как не трудно догадаться, абсолютно похеру и станок и скетч.

Меня зацепило безапелляционное невежество. Вам ответили про "9" - константа, начинающаяся с "0" - восьмеричное целое. Из этого очевидный вывод, что Вы неправильно понимаете то, как инициализируется нужный массив. Так как то, что Вы написали - гребаная чушь и работать не может!

Но - нет основания Вам не верить, что нечто, что Вы планируете изменить, в настоящее время - работает. Но, повторюсь, очевидно то, что Вы ни хера не понимаете в том, что и как надо поменять и что оно все означает.

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

Но тут Вы начинаете выё..ться, что текст - секретный. Что вызывает желание - исключительно поглумиться, но уже христианские мысли о помощи полностью исчезают.

---

Имеем: что-то и как-то работает, приведенные пример изменений - работать не может ПО-ОПРЕДЕЛЕНИЮ, без диспутов. Истину найти нельзя. И тут еще Вы с претензиями? Смешно!

 

Logik
Offline
Зарегистрирован: 05.08.2014

mat пишет:

 Есть мысли ?

есть. Округлить 12,0986 в большую сторону до 12,1. Там сущая хрень осталась, видать боги сжалились над нами и спецом такое число выдали.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Нет, если округлить, на детали получаются весьма заметные огрехи. Если я делаю гайку и винт, проблем не будет но, если я сделаю винт, а гайку возьмут в другом месте, могут возникнуть проблемы с совместимостью.
to wdrakula, ума не хватает, чтобы понять, если система счислений восьмеричная то, не только ноль в начале но, и 8, и 9, вне закона. Однако они там благополучно присутствуют. И вообще, если Вам всё по фигу, не тратьте своё драгоценное время на эту чушь, займитесь чем- нибудь полезным. Я не программист но, утверждаю, этот скетч работал. Просто на станке поменяли трапецию на ШВП, с другим шагом и шаговый движок, на серво. Всё это и заставило заняться пересчётом таблицы. Я могу только одно сказать про Вас, Вы всё знаете но, ничего не умеете. Все Ваши реплики об этом красноречиво свидетельствуют.

Logik
Offline
Зарегистрирован: 05.08.2014

ещё раз по пунктам. 12, 0986 - это одно число с десятетысячными или 2 целых?

Хотя...

mat пишет:

И вообще, если Вам всё по фигу, не тратьте своё драгоценное время на эту чушь, займитесь чем- нибудь полезным.... Я могу только одно сказать про Вас, Вы всё знаете но, ничего не умеете. Все Ваши реплики об этом красноречиво свидетельствуют.

после этого пожалуй пошел нах...

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Понимаете в чем дело .. вот вы привели пример с винтом и гайкой .. только некоректный. Верный пример будет такой:

К вам приходит человек и просит вас изготовить винт. Вы его спрашиваете "какой"? А он говорит ну вот под "ту" гайку .. вы его просите показать гайку, а он говорит - она секретная и показать вам он её не может. Но, вот есть другая, похожая но не такая .. она от старого винта, а он сломался и гайку заменили и теперь нужен винт. Сделаете?

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Нет ребята, человек приходит и говорит, нужен винт, трапеция, 12 мм и шаг 3 мм. Я у него не спрашиваю куда и что за гайка. Почему вы, спрашиваете про скетч ? Вас просят объяснить, почему ошибка ? Если вы специалисты, вы сами создайте ситуацию, где будет проявляться эта ошибка. Я не понимаю в ваших делах ничего, поэтому и не могу с вами дискутировать на равных. На вас уповаю.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так в том то и дело, что Вы не говорите ни шаг ни трапецию, а твердите "я в этом нифига не понимаю!" .. как раз трапеция там или треугольник .. написано в скетче .. который у вас секретен. Вот и попробуйте изготовить винт БЕЗ этого описания .. да под "ту" гайку, которую вам тоже НЕ показывают, а показывают "похожую".

Да ещё и смотрите на неё а у неё резьба с одного конца левая, а с другого правая. И первое, что вам придет в голову: "так не бывает" .. что вам и пишут. :)

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Катастрофа! Вы настолько непонятно излагаете суть проблемы... Если Вы желаете уйти от вещественных чисел (с долбью) и хранить дробнуй часть отдельно от целой как целое число, складывать их надо не конкатенаций как строку символов, а как ЦелаяЧасть+(ДробнаяЧасть/1000). Однако, в этом случае хранить отдельно нет смысла, ибо всё равно вещественная математика потребуется.  Но что-то мне подсказывает, что Вашему станку числа передаются в строковом виде... Тогда и храните их как строки, заключив в кавычки - хоть сто лидирующих нулей.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ну приведите пожалуйста пример такой строки. Я же вам показал таблицу, по которой работал станок. Он и сейчас работает но, т. к. у винта шаг изменился и вместо шаговых установлен серво, все подачи и резьбы не соответствуют. Подачи я пересчитал, они уже работают, а с резьбами вольности не допустимы. И в моих расчётах несколько шагов не принимаются из-за того что там 9 в восьмеричной системе. Где это назначается, восмеричная система ? Можете указать пример такой записи ?

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Вам же отписали стотысячраз : лидирующий ноль воспринимается компилятором как декларирование восьмеричного счисления.

726 это десятичное число составляющее семьсотдвадцатьшесть в десятичном счислении

0726 это восьмеричное число составляющее четырестасемьдесят в десятичном счислении

причем в восьмеричной нотации, то есть начинающейся с нуля не может быть восьмерок и девяток.

Где то в глубинах прграммы массив показанный Вами парсится в числа и там сшиваются целые и дробные части, обозначенные в массиве через запятую ( и пробел). По большому счету создавшаяся ситуация - баг - ошибка программиста при проектировании способа ввода данных в программу.

прочитайте внимательно информацию по ссылке из 15 поста. Там есть особое проедостережение по поводу применения лидирующего нуля :

Внимание! Включение "0" перед константой по ошибке может привести к очень сложно-диагностируемой ошибке, из-за того, что компилятор будет считать константу в восьмеричной системе.

кстати . В показанном массиве есть еще много мест с лидирующим нулеми недопустимыми цифрами. Компиллятор должен ругаться и на них.

 
MacSim
Offline
Зарегистрирован: 28.11.2012

mat пишет:

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

человек приходит и говорит, нужен винт, трапеция, 12 мм и шаг 3 мм

не удержался: 12,0_ _ _

четыре знака после запятой и говорите что округлить нельзя. я пойму Вас если Ваш станок выдает точность до десятитысячных миллиметра. Знаю есть такие станки, но чтоб направляющие не уводило у них термостабилизация температуры стоит и стоят они килокилокилобаксы. У вас такой?

Про допуски Вы что-нибудь слышали? 12мм класс точности, пусть даже С2 и то не 12 ! У Вас станок болтается больше.

не хотите ноль убирать пишите в восьмиричной :-)

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Ну дык, прошу же, покажите, как? Напишите пожалуйста, число 12,0986 в восьмеричном виде. И если не трудно, заодно тогда, 10,0829; 9,0739; 6,0492  Буду весьма признателен. И ещё, допускается смешивать в одной таблице, десятичные и восьмеричные числа ? Хотя, я сомневаюсь что, что это в восьмеричной системе. Как тогда там могут быть 8 и 9 ? Может, что- то другое ?

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

http://numsys.ru/ - онлайн калькулятор. Только, если хотите втыкнуть 8-ичное число, лидирующий ноль будет обязательным.

Как пример 986 -> 1732 (в 8-й), записывать в вашу таблику надо только так: 01732

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Выдало14.06236731376612665347652633172037102265671430770501 Как его округлить до 4 знаков, после запятой ? И ещё, если все другие числав моей таблице, интерпретируются как десятичные то, как же тогда будет работать с восмеричной ? Целая часть, от моего числа 12, явно будет выдавать не то, что мне нужно... Блин, мозги уже кипят... Вместо шага 0,75 мм будет скорее всего что- то в районе 0,65 мм.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Тип счисления вещь сугубо для Вашего удобства. Внутри скомпилированного кода все в представляется в двоичном виде.

mat
mat аватар
Offline
Зарегистрирован: 05.07.2012

Какое странное место, Ватсон ! Программисты пасут коров...
Но как, Холмс ?!! Как Вы пришли к такому заключению ??
Их ответы, абсолютно точные и абсолютно бесполезные.
Ребята, я пересчитывал все коэффициенты, даже не подозревал о восьмеричной системе и вдруг, бац !  Пределагаю пари, на 15 копеек, что исправив на восьмеричное, станок накапает маслом, на все наши умозаключения и нарежет резьбу с шагом, который я расчитаю в десятичной системе. Просто, в данном диапазоне, если я округлю, чтобы избавиться от этого нуля, я не получу точный шаг 0,75 мм. Вот и всё.
Где- то в другом месте ошибка но, где ?

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

mat пишет:

Где- то в другом месте ошибка но, где ?


Ошибка была сделана много раньше. Человек далекий от программирования взялся писать "секретную" программу для ЧПУ. Он для себя "изобрел" свой собственный (и, как показала практика, кривоватый) способ задания исходных данных и их последующего использования в программе. Его частные случаи - у него "прокатили", а Ваши у Вас - увы. Чтобы скеч остался секретным, а программисты продолжали пасти коров, предлагаю Вам взять ходовой винт по-ухватистей, подойти к автору исходного ПО на расстояние, составляющее 2/3 от длины взятого винта, и задать вполне конкретный вопрос: "Ты... ты...
Ты, штука, это чё?!" В сложившейся ситуации принципиально других способ решить проблему я не вижу.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Прочитал всё на одном дыхании - прямо роман :) Автору топика: не тупи и покажи определение структуры. Если ничего в этом не понимаешь - позови того, кто понимает хоть чуть-чуть и покажет определение структуры. К тому же тебя вполне адекватно об этом просили.

Скетч твой кривой и весь из себя "секретный" - никому нахер не нужен, такого говна в каждом подъезде по тёмным уголкам насрано. Если хочешь помощи - проси уважительно. Хотя в текущей ситуации, думаю - тебе придётся ещё и на колени встать :)

З.Ы. ТС, по ходу - очередной мнящий всех вокруг себя убогими, а свою миссию - великой и никому, кроме него, не понятной. Что, в переводе на русский, означает - Неуловимый Джо.