самодельный станок с ЧПУ, отзывы duxe.ru

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Программа VRI-cnc » Как можно получить полную версию программы VRI-cnc


Как можно получить полную версию программы VRI-cnc

Сообщений 31 страница 46 из 46

31

да, программа пишется на делфи.
Предлагаю с данным вопросом перейти в другую ветку, ибо тут это оффтоп :)

0

32

Роман у меня предложение. Если сделать привязку не жесткому диску а к процессору т.к. процессор не так быстро сдохнет в отличии от харда.
Да и поменять процессор на компе станке врядли кому придет в голову.
Я для своего собрал комп. а так как жесткий там стоит стары у меня на него нехорошие предчувствия надеюсь до следующей версии проги дотянет.

0

33

Поддерживаю "привязку не жесткому диску а к процессору"
Интересный вариант!

0

34

если кто в этом шарит (Делфи) кидайте код определения проца посмотрю.

0

35

Ну тут может быть уйма вариантов:

Код:
unit unit1;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, ExtCtrls;

 type
   Tfrm_main = class(TForm)
    img_info: TImage;
     procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
     procedure info(s1, s2: string);
   end;

 var
   frm_main: Tfrm_main;
   gn_speed_y: Integer;
   gn_text_y: Integer;
 const
   gn_speed_x: Integer = 8;
   gn_text_x: Integer  = 15;
   gl_start: Boolean   = True;

 implementation

 {$R *.DFM}

 procedure Tfrm_main.FormShow(Sender: TObject);
 var
    _eax, _ebx, _ecx, _edx: Longword;
   i: Integer;
   b: Byte;
   b1: Word;
   s, s1, s2, s3, s_all: string;
 begin
   //Set the startup colour of the image 
  img_info.Canvas.Brush.Color := clblue;
   img_info.Canvas.FillRect(rect(0, 0, img_info.Width, img_info.Height));


   gn_text_y := 5; //position of the 1st text 

  asm                //asm call to the CPUID inst. 
    mov eax,0         //sub. func call 
    db $0F,$A2         //db $0F,$A2 = CPUID instruction 
    mov _ebx,ebx
     mov _ecx,ecx
     mov _edx,edx
   end;

   for i := 0 to 3 do   //extract vendor id 
  begin
     b := lo(_ebx);
     s := s + chr(b);
     b := lo(_ecx);
     s1:= s1 + chr(b);
     b := lo(_edx);
     s2:= s2 + chr(b);
     _ebx := _ebx shr 8;
     _ecx := _ecx shr 8;
     _edx := _edx shr 8;
   end;
   info('CPU', '');
   info('   - ' + 'Vendor ID: ', s + s2 + s1);

   asm
     mov eax,1
     db $0F,$A2
     mov _eax,eax
     mov _ebx,ebx
     mov _ecx,ecx
     mov _edx,edx
   end;
   //06B1 
  //|0000| |0000 0000| |0000| |00| |00| |0110| |1011| |0001| 
  b := lo(_eax) and 15;
   info('   - ' + 'Stepping ID: ', IntToStr(b));
   b := lo(_eax) shr 4;
   info('   - ' + 'Model Number: ', IntToHex(b, 1));
   b := hi(_eax) and 15;
   info('   - ' + 'Family Code: ', IntToStr(b));
   b := hi(_eax) shr 4;
   info('   - ' + 'Processor Type: ', IntToStr(b));
   //31.   28. 27.   24. 23.   20. 19.   16. 
  //  0 0 0 0   0 0 0 0   0 0 0 0   0 0 0 0 
  b := lo((_eax shr 16)) and 15;
   info('   - ' + 'Extended Model: ', IntToStr(b));

   b := lo((_eax shr 20));
   info('   - ' + 'Extended Family: ', IntToStr(b));

   b := lo(_ebx);
   info('   - ' + 'Brand ID: ', IntToStr(b));
   b := hi(_ebx);
   info('   - ' + 'Chunks: ', IntToStr(b));
   b := lo(_ebx shr 16);
   info('   - ' + 'Count: ', IntToStr(b));
   b := hi(_ebx shr 16);
   info('   - ' + 'APIC ID: ', IntToStr(b));

   //Bit 18 =? 1     //is serial number enabled? 
  if (_edx and $40000) = $40000 then
     info('   - ' + 'Serial Number ', 'Enabled')
   else
      info('   - ' + 'Serial Number ', 'Disabled');

   s := IntToHex(_eax, 8);
   asm                  //determine the serial number 
    mov eax,3
     db $0F,$A2
     mov _ecx,ecx
     mov _edx,edx
   end;
   s1 := IntToHex(_edx, 8);
   s2 := IntToHex(_ecx, 8);
   Insert('-', s, 5);
   Insert('-', s1, 5);
   Insert('-', s2, 5);
   info('   - ' + 'Serial Number: ', s + '-' + s1 + '-' + s2);

   asm
     mov eax,1
     db $0F,$A2
     mov _edx,edx
   end;
   info('', '');
   //Bit 23 =? 1 
  if (_edx and $800000) = $800000 then
     info('MMX ', 'Supported')
   else
      info('MMX ', 'Not Supported');

   //Bit 24 =? 1 
  if (_edx and $01000000) = $01000000 then
     info('FXSAVE & FXRSTOR Instructions ', 'Supported')
   else
      info('FXSAVE & FXRSTOR Instructions Not ', 'Supported');

   //Bit 25 =? 1 
  if (_edx and $02000000) = $02000000 then
     info('SSE ', 'Supported')
   else
      info('SSE ', 'Not Supported');

   //Bit 26 =? 1 
  if (_edx and $04000000) = $04000000 then
     info('SSE2 ', 'Supported')
   else
      info('SSE2 ', 'Not Supported');

   info('', '');

   asm     //execute the extended CPUID inst. 
    mov eax,$80000000   //sub. func call 
    db $0F,$A2
     mov _eax,eax
   end;

   if _eax > $80000000 then  //any other sub. funct avail. ? 
  begin
     info('Extended CPUID: ', 'Supported');
     info('   - Largest Function Supported: ', IntToStr(_eax - $80000000));
     asm     //get brand ID 
      mov eax,$80000002
       db $0F
       db $A2
       mov _eax,eax
       mov _ebx,ebx
       mov _ecx,ecx
       mov _edx,edx
     end;
     s  := '';
     s1 := '';
     s2 := '';
     s3 := '';
     for i := 0 to 3 do
     begin
       b := lo(_eax);
       s3:= s3 + chr(b);
       b := lo(_ebx);
       s := s + chr(b);
       b := lo(_ecx);
       s1 := s1 + chr(b);
       b := lo(_edx);
       s2 := s2 + chr(b);
       _eax := _eax shr 8;
       _ebx := _ebx shr 8;
       _ecx := _ecx shr 8;
       _edx := _edx shr 8;
     end;

     s_all := s3 + s + s1 + s2;

     asm
       mov eax,$80000003
       db $0F
       db $A2
       mov _eax,eax
       mov _ebx,ebx
       mov _ecx,ecx
     mov _edx,edx
     end;
     s  := '';
     s1 := '';
     s2 := '';
     s3 := '';
     for i := 0 to 3 do
     begin
       b := lo(_eax);
       s3 := s3 + chr(b);
       b := lo(_ebx);
       s := s + chr(b);
       b := lo(_ecx);
       s1 := s1 + chr(b);
       b := lo(_edx);
       s2 := s2 + chr(b);
       _eax := _eax shr 8;
       _ebx := _ebx shr 8;
       _ecx := _ecx shr 8;
       _edx := _edx shr 8;
     end;
     s_all := s_all + s3 + s + s1 + s2;

     asm
       mov eax,$80000004
       db $0F
       db $A2
       mov _eax,eax
       mov _ebx,ebx
       mov _ecx,ecx
       mov _edx,edx
     end;
     s  := '';
     s1 := '';
     s2 := '';
     s3 := '';
     for i := 0 to 3 do
     begin
       b  := lo(_eax);
       s3 := s3 + chr(b);
       b := lo(_ebx);
       s := s + chr(b);
       b := lo(_ecx);
       s1 := s1 + chr(b);
       b  := lo(_edx);
       s2 := s2 + chr(b);
       _eax := _eax shr 8;
       _ebx := _ebx shr 8;
       _ecx := _ecx shr 8;
       _edx := _edx shr 8;
     end;
     info('Brand String: ', '');
     if s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1);
     info('', '   - ' + s_all + s3 + s + s1 + s2);
   end
   else
      info('   - Extended CPUID ', 'Not Supported.');
 end;

 procedure Tfrm_main.info(s1, s2: string);
 begin
   if s1 <> '' then
   begin
     img_info.Canvas.Brush.Color := clblue;
     img_info.Canvas.Font.Color  := clyellow;
     img_info.Canvas.TextOut(gn_text_x, gn_text_y, s1);
   end;
   if s2 <> '' then
   begin
     img_info.Canvas.Brush.Color := clblue;
     img_info.Canvas.Font.Color  := clWhite;
     img_info.Canvas.TextOut(gn_text_x + img_info.Canvas.TextWidth(s1), gn_text_y, s2);
   end;
   Inc(gn_text_y, 13);
 end;

 procedure Tfrm_main.FormCreate(Sender: TObject);
begin

end;

end.

Отредактировано Sheeft (2008-04-15 21:51:40)

0

36

спсб. попробую

0

37

Добрый день народ!
Можно ли контроллер Романа состыковать с Kcam?
Vri-CNC все равно куплю, но некоторые вещи можно сделать только с KCam

0

38

нет контроллер на ТМ5 (ТМ7) не будет работать с другими програмами кроме как с VRI-cnc

0

39

Роман как можно приобрести полную версию програмы.
На мыло вам писал вы не ответели.

0

40

у меня накрылись ВИНДЫ. потихоньку востанавливаю. писем накопилось много по мере возможности отвечаю. прошу прощения за задержку.

0

41

Master-VRI написал(а):

а можно комп запустить вообще без винта? только флешка?

Можно, при соблюдении ряда условий.
1. Материнская плата должна поддерживать загрузку с USB. То есть старые дохленькие компы отдыхают, глотая сопли...

2. Флэшка должна поддерживать создание на себе загрузочной информации. То есть старые дешёвые флэшки за 200-300 рублей отдыхают и глотают сопли....

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

Есть и четвёртый вариант, самый продвинутый.
Поставить на плату контроллера недорогой МК с защитой прошивки от чтения (AVR, к примеру) и перенести на него часть операций с программы.
То есть на выходе с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
Тогда привязка будет к прошитому МК с установленным битом защиты. Стереть прошивку  - можно, прочесть - низя.

Стоимость недорогих МК семейства AVR порядка двух - трёх десятков рублей, оптом дешевле...

Тогда программа будет бесплатная, а деньги брать за этот прошитый МК, высылаемый в бандерольке. Плючы - демоверсия и рабочая программа - в одном флаконе.
Нет МК на плате контроллера  - пишем ДЕМО и работаем пять минут.. Есть МК (отозвался на запрос) - работаем в полном объём.

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

Ну примерно как работает Оракл с удалёнными клиентами. Или SSH-клиент с сервером.

При длине каждого ключа в пару килобайт можно до посинения подбирать ключ и сжечь электричества на этом раз в сто больше, чем программа стоит.
И не подобрать.

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

А если у кого-то ещё и мобильник без инета, то я валяюсь...

0

42

Ув. Ironfelix!
Вы по-моему увлеклись!!!
Вам бы для ЗАС связи ключи генерить.
Вы хоть сами представили это??? :flag:
Особенно два мне понравились: 1)с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
___Тогда уж давайте HASPы продавать, прошивка сама по себе слетать может, и каким образом будет в ДЕМО работать полуготовые команды??? :D
Что Вы скажете? Это настолько заморочит программму.

и 2) Генерировать пару ключей (открытый и закрытый),  Вооще ХИТ!!!

ВЫ согласитесь со мной, что программа покупается реальным человеком, с реальным местом жительства, с номером паспорта и т.д.
И в данном случае, когда Вы отправляете денежный перевод то именно паспорт как основной документ является при том же получении денежки.
Пожалста!  Вот простая идея! Пришел перевод от Иванова Ивана Ивановича с номером паспорта ХХХХХХХХХ.  Сгенерился ключ. ИНДИВИДУАЛЬНЫЙ!!!
Можно туда и привязку к компу сделать.
Но я Вам могу сказать следующее, что при таком раскладе,  Вы никому свой ключ на сторону не загоните.  Вот сядьте и подумайте, не торопитесь отвечать.

0

43

Alex_belogor написал(а):

Ув. Ironfelix!
Вы по-моему увлеклись!!!
Вам бы для ЗАС связи ключи генерить.
Вы хоть сами представили это???
.....
Особенно два мне понравились: 1)с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
___Тогда уж давайте HASPы продавать, прошивка сама по себе слетать может, и каким образом будет в ДЕМО работать полуготовые команды??? :D
Что Вы скажете? Это настолько заморочит программму.
......

и 2) Генерировать пару ключей (открытый и закрытый),  Вооще ХИТ!!!

ВЫ согласитесь со мной, что программа покупается реальным человеком, с реальным местом жительства, с номером паспорта и т.д.
......
Пожалста!  Вот простая идея! Пришел перевод от Иванова Ивана Ивановича с номером паспорта ХХХХХХХХХ.  Сгенерился ключ. ИНДИВИДУАЛЬНЫЙ!!!
Можно туда и привязку к компу сделать.
Но я Вам могу сказать следующее, что при таком раскладе,  Вы никому свой ключ на сторону не загоните.  Вот сядьте и подумайте, не торопитесь отвечать.

1. Ключи можно генерировать для чего угодно.
Если Вы думаете, что процесс генерации сложен и труден, то скачайте  терминалку, работающую с SSH и поглядите. как она генерирует ключи при первом запуске и сколько это занимает времени. Подсказка - время измеряется десятками секунд. А надёжность работы этой пары ключей ещё никем не опровергнута.

2. Внимательно читайте сообщения. Там описана процедура рабты ДЕМО с кодировкой через прошивку МК. Повторюсь - при отсутствии МК программа переходит в режим ДЕМО и работает без шифрования, но - пять минут.

3. Оформленные Вами с паспортом переводы дальше передаются как раз парой ключей, которые подтверждают легальность перевода. Так счто паспорт не отменяет и не заменяет ключей.

ПО Вашему примеру могу привести простой антипример6 по паспорту, прописке. переводу, человек получает программу/ключ и преспокойно перепродаёт её кому попало или просто раздаёт её даром. А если Вы попытаетесь применять санкции, человек сделает большие круглые честные глаза и скажет - измините. ЭТОТ паспорт мною утерян  пять лет назад, вот справка от милиции и вот мой НАСТОЯЩИЙ паспорт. И вообще, кто вы ткие, кака программа, как е ключи? У меня и компа нет.
Вот - тоже посидите и подумайте.

Паспортов крадут/теряют/похищают немало...
Защитой паспорт является только для честного человека, а не для бесчестного.
В этом смысле пара ключей  по надёжности не уступает паспортным данным.

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

Просто мне не нравится привязка к винту, учитывая нынешнюю система SMART, которая убивает винты строго по истечению времени во встроенном таймере.

0

44

Братцы,цена проги - две бутылки водки(в Украине).Я очень сомеваюсь,что это "бабло" хотя-бы частично ,компенсирует Роману всю эту "возню" с нами...Может это своеобразный "учёт"пользователей.Перепродал,подарил-а поинтересуйтесь-многим это надо?Вокруг меня(ОТВЕЧАЮ!) в радиусе 80км. нет ни одного такого.И на этом форуме ЕДИНИЦЫ используют её в коммерческих целях.Ну а способ защиты - тут хозяин-барин.Я специально собрал комп для этих "забав".И купил 2-ю прогу,не победнел...

0

45

хотел ответить но в сообщении Dj_smart  все и так сказано.
хотя уточню: денег полученных за прогу хватает только на оплату инета. т.е. покупая программу вы делаете мое общение с вами (форумом) бесплатным. Спасибо!

0

46

прога выдала мне код 11284--32192001

Пиши Роману в личку.
Dj_smart.

0


Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Программа VRI-cnc » Как можно получить полную версию программы VRI-cnc