2018年9月29日土曜日

小型工作機CNC2418 その64(CandleのOverridingをキー操作化)

Candle(Gcode Sender)の初改造であります。
といっても今回は、全面的に他力本願...(-_-;)
マーティーは、前回修得したビルドとデプロイするのがやっとです。

GRBL 1.1fでは、Overriding機能が追加され
このスライドバーで、ほぼリアルタイムにFeedやSpindleを変えることができます。
ミルがヤバそうな時など即座にFeedを下げたりでき、とても重宝しています。
が、マウスでのスライドバー操作なので、
マシンの切削状態を見ながら操作したいのに、PC画面を見てないと操作できません。
10%上げたいのに20%も30%も動くといけないので
数値欄に手入力することも、しばしばあります。
ということで
マーティーは、Overridingをコントロールしたいという意向だけで^^;
YY師が、全面的に作業してくださり、実現に至っております。
ありがとうございます。
その仕様は、
PCのFunction KeyでOverridingをコントロールするものであります。
指一本で操作できるし、こんな風に指を4本置けば
Feedの[-10%][-1%][+1%][+10%]を
マシンを睨みながらブラインド操作できるのです。
特にFeed可変は多用するので、これは、メチャクチャありがたいです。
キー操作だけなので、改造は、簡単そうなのですが
なにせマーティーは、C++なんてイジったことないので
ソースを見ても、C言語とは様相がかなり違い、さっぱりわかりません。
Arduinoのmainをみるようには、追っていけないのです。
ソースファイルが沢山あるし、どのソースファイルかが分かっても
変数と命令が区別がつかない状態なのです。
これが「オブジェクト指向言語」なのか!!!
まだ言葉しか知らないマーティーであります(T_T)

なので製作過程はありません、いきなり、ソース搭載です^^;
元のfrmmain.cpp の28xx行目付近に追加されています。
"If(m_processingFile)":"もしGcode実行中だったら" だそうです。
変数と命令の区別がつかないのですが、
これだけあると、やっと規則性がわかるかな~
という程度のマーティーの今現在の知識であります(-_-;)
*****
if (m_processingFile) {
      if (keyEvent->key() == Qt::Key_F1) {
              ui->slbFeedOverride->setSliderPosition(ui->slbFeedOverride->sliderPosition() - 10);
          }
      if (keyEvent->key() == Qt::Key_F2) {
              ui->slbFeedOverride->setSliderPosition(ui->slbFeedOverride->sliderPosition() - 1);
          }
      if (keyEvent->key() == Qt::Key_F3) {
              ui->slbFeedOverride->setSliderPosition(ui->slbFeedOverride->sliderPosition() + 1);
          }
      if (keyEvent->key() == Qt::Key_F4) {
              ui->slbFeedOverride->setSliderPosition(ui->slbFeedOverride->sliderPosition() + 10);
          }
      if (keyEvent->key() == Qt::Key_F6) {
              ui->slbRapidOverride->setSliderPosition(ui->slbRapidOverride->sliderPosition() - 1);
          }
      if (keyEvent->key() == Qt::Key_F7) {
              ui->slbRapidOverride->setSliderPosition(ui->slbRapidOverride->sliderPosition() + 1);
          }
      if (keyEvent->key() == Qt::Key_F9) {
              ui->slbSpindleOverride->setSliderPosition(ui->slbSpindleOverride->sliderPosition() - 10);
          }
      if (keyEvent->key() == Qt::Key_F10) {
              ui->slbSpindleOverride->setSliderPosition(ui->slbSpindleOverride->sliderPosition() - 1);
          }
      if (keyEvent->key() == Qt::Key_F11) {
              ui->slbSpindleOverride->setSliderPosition(ui->slbSpindleOverride->sliderPosition() + 1);
          }
      if (keyEvent->key() == Qt::Key_F12) {
              ui->slbSpindleOverride->setSliderPosition(ui->slbSpindleOverride->sliderPosition() + 10);
          }
}
*****

これを前回のQt Creatorでビルド、デプロイすると
実行形式のファイルができあがります。
Qt Creatorでビルド、デプロイできるようになって嬉しいので
これだけは、自らやってみました!
今まで使っていたVer.1.1.7から「LICENSE」と「settings.ini」をコピペします。
早速、適当なGcodeを読み込んでミルをつけずにテストです。
画面は、変わりありません。
[Help]-[About]は、こうなっています。
「zCandle」と命名されております。
では、動画で!
マシンがちと暗いですが
動画を撮りながら操作できるってのが、素晴らしい~
この改造版Candle「zCandle」は、GitHubのここに掲載されています。
「LICENSE」と「settings.ini」は、今まで使っていたVer.1.1.7からコピペします。
但し、十分な確認をしているわけではありませんので、注意の上、ご使用ください。
お~っ!
これを書いている間にLinux版も追加されています。
マーティーは、まだLinuxマシンを持っていません(-_-;)

ちなみに現在のマーティーPCのスタート画面です。
Candleは、右から、V1.0.11、V1.1.7、zCandle V1.1.8.2を並べています。
さすがに、Candle V1.0.11は、使わなくなりました。

<補足>
ビルド&デプロイするQtのバージョンについての備忘録。

改造元のソースは、
ここから「Candle-grbl_1_1.zip」をダウンロードしたものです。
ソースの「candle.pro」には、
*****
TARGET = Candle
TEMPLATE = app
VERSION = 1.1.8
*****
実行形式の公式最新版は、Ver.1.1.7なのに、ソースは、Ver.1.1.8です。
何かこの辺は、末尾に+1する約束事でもあるのかな~?
ただ、このサイトには、なぜか
「Version 1.0 pre-release:」の文字が一番上の項目にあり、
Build requirements: Qt 5.7.0 with MinGW compiler
とありますが、Ver.1.1のことではないので要注意なのです。
ややこしいですが、Candle Ver.1.1説明は、こっちなのです。
ただし、ここにあるソースは、Ver.1.0.12なのです。
要するに、ソースの置き場所が間違っているだけです。
で、ビルド、デプロイは、
Qt 5.4.2 with MinGW Compilerでやらないといけないのです。
Qt 5.7.1でやるとzCandle.exeも***.dllもやたらとファイルサイズがでかくなり
切削開始した途端、下の様にツールパスが消えてしまいます。
Qt 5.4.2では、サイズも動作も正常なファイルが生成されるのです。
それにしても、C++は、難しい~~~っ!
マーティーの頭は、「OUT OF MEMORY」であります(-_-;)

5 件のコメント:

  1. をーご紹介いただきありがとうございます。
    マーティさんのブログを穴が空くほど読み、CNC2418を買ってはや数ヶ月。

    まあまあある程度道具として使えるようになったかな~と感じていることろです。

    もう本当にマーティさんにはお世話になりっぱなしで。。。

    GRBLも枯れてきたというか、あんまり進展がなく、CandleにしてもbCNCにしても開発者の人が放置気味ですねえ。

    こんな感じでちょびちょび直しながら使っていきたいですねえ。
    私自身、プロのソフト屋さんでもなんでもないんでソースを見られるのが恥ずかしいといえば恥ずかしいですが、いつか誰かがバチンと気合の入ったソフトを開発して公開してくれる日を待ちつつ。。。(笑)

    返信削除
    返信
    1. YYさん、こんにちは~
      そんなに見ていただいてるとは光栄であります。
      勘違いはよくやっておりますのでちと恥ずかしいです^^;
      その後、簡単なものを切削しましたが、とても便利です。
      臨機応変にFeedを変えられるので時間短縮もできます。
      これを外付けVR化することを夢見ておりますが
      まだ、settingsメニューで苦戦です。C++は難しいです。
      こちらこそお世話になりますので宜しくお願いしますm(_ _)m
      それにしてもCNC2418の改造は尽きる事がなく面白いですね~
      あっ!YYの所にzCandleのリンクが!オシャレ~

      削除
  2. 私もsettingsイジりたいなー。
    とりあえず、
    Ignore M28
    Ignore %
    Ignore Tool Change Command(M6)
    Enable Keyboard Shortcut Extension
    の4つかな。。。

    返信削除
  3. YYさん、また見て頂きありがとうございます。
    G28と%は、Fusion360のカスタム設定で出ないようにしました。
    (たぶんM28?G28のことだと思うのですが)
    Tool Changeは、ややこしそうで、できておりません。
    まあ、Sendボタン押して、更にIgnoreボタンと一呼吸おくので
    私にとっては最後の確認の意味で逆にあった方がいいのかもです(笑)
    最後のは、Candle改造しないとできないですね~
    今、3DプリンタのC++のFirmを見ていますが、変数は、全部大文字でコメントもあるし、まだ何とな~く、ボヤ~っとわかります。
    同じC++でもCandleの方は、だいぶ眺めましたが、難しいですね~

    返信削除
  4. 失礼いたしました。
    m28ではなくg28ですね。。。(>_<)

    返信削除