Porównaj commity

...

84 Commity

Autor SHA1 Wiadomość Data
tippfehlr 607deda463
Merge d6e49ca9fa into cec1a70a90 2024-04-09 17:10:44 +02:00
Peter van der Walt cec1a70a90
Merge pull request #336 from typ1804/feature-surfacing-framing-optional
added option "Enable Framing" to surfacing wizard to make the framing-gcode optional
2024-04-09 17:08:37 +02:00
unknown 64536498a0 #325 2024-04-09 16:59:13 +02:00
unknown 44a6ca38fa Fix #316 - Selected UI enhancements 2024-04-09 16:56:24 +02:00
unknown 2582dc83cd Update readme image 2024-04-09 16:40:09 +02:00
unknown 3f1a0f77a1 Fix undefined error for nonexistent object in G73 handler (from #278 but doesn't add the other missing handlers yet) 2024-04-09 15:46:55 +02:00
unknown 4794ef75f7 Test beta fix for #257 2024-04-09 15:39:20 +02:00
unknown 53b7f58d6d Fix #285 2024-04-09 14:38:02 +02:00
unknown a7d06e9fca Fix #299 2024-04-09 14:30:58 +02:00
unknown 25a4b944c6 Reworded firmware no found logging to hopefully ease support 2024-04-09 14:15:44 +02:00
unknown 4800540ffa Fix #348 2024-04-09 10:13:50 +02:00
unknown 83781e8df5 Retire avrGirl 2024-04-09 09:56:30 +02:00
unknown 0c4b906db0 Test SerialPort 2024-04-09 09:53:28 +02:00
unknown 6de833b222 Test SerialPort v10 2024-04-08 23:09:34 +02:00
unknown 47cefafd02 Test SerialPort v10 2024-04-08 22:55:14 +02:00
unknown f3316da6dc Work on #321 2024-04-08 22:40:59 +02:00
unknown a77a99023f Work on #321 2024-04-08 22:27:54 +02:00
unknown e1982e260d Work on #321 2024-04-08 22:21:58 +02:00
unknown 95bf3723e2 Work on #321 2024-04-08 22:12:04 +02:00
unknown 9eebf5680e Work on #321 2024-04-08 22:06:05 +02:00
unknown 43cf823210 Work on #321 2024-04-08 21:49:46 +02:00
unknown 8b012e234d Work on #321 2024-04-08 21:38:03 +02:00
unknown 5f8dff0941 Work on #321 2024-04-08 21:31:17 +02:00
unknown c52fb04059 Work on #321~ 2024-04-08 21:30:12 +02:00
unknown 1b5f2af272 Work on #321~ 2024-04-08 21:19:45 +02:00
unknown 07da06bdc9 Work on #321~ 2024-04-08 21:13:46 +02:00
unknown 3545b5213d Work on #321 2024-04-08 21:02:38 +02:00
unknown e6a1be5844 Work on #321 2024-04-08 20:54:46 +02:00
unknown 317b6541f2 Work on #321 2024-04-08 20:44:24 +02:00
unknown b568b91ace Work on #321 2024-04-08 20:34:54 +02:00
unknown 97b008cf89 Work on #321 2024-04-08 20:23:47 +02:00
unknown 8ed574dd0d Work on #321 2024-04-08 20:21:22 +02:00
unknown d0754760ce Work on #321 2024-04-08 20:18:58 +02:00
unknown 0bff353d5b Work on #321 2024-04-08 20:17:27 +02:00
unknown dd09860885 Work on #321 2024-04-08 20:15:07 +02:00
unknown d6072adaaf Start work on #321 2024-04-08 20:13:15 +02:00
unknown a95b83c312 Start work on #321 2024-04-08 20:11:43 +02:00
unknown 1e77fc38ed Start work on #321 2024-04-08 20:10:27 +02:00
unknown cff2fe1fd6 Start work on #321 2024-04-08 20:07:20 +02:00
unknown 3b2fded429 Changed DROs to 3-decimals, updated Grbl Settings for newest binary 2024-04-08 16:37:04 +02:00
unknown a2f56f97d3 Changed DROs to 3-decimals, updated Grbl Settings for newest binary 2024-04-08 16:36:02 +02:00
unknown e769dba2f2 Fix #346 2024-04-08 14:06:54 +02:00
unknown 8de3acec1f Fixed #308 2024-04-08 09:16:16 +02:00
unknown e945001961 Fix #313 2024-04-07 12:46:12 +02:00
unknown 358b86d838 Fix #308 2024-04-07 12:43:51 +02:00
unknown 9e05ddc603 Fix #327 2024-04-07 12:34:56 +02:00
unknown 20dfc43235 Fix #328 2024-04-07 12:23:14 +02:00
unknown 8e4d605c3b Removed X32 Advertisement" 2024-04-07 10:03:14 +02:00
unknown 5fc950b63c Fix #343 2024-04-07 09:51:51 +02:00
unknown 17bcadfcea Fixed #344 2024-04-07 09:45:27 +02:00
Peter van der Walt d35f2fe987
Fixes for #323, #345 and #332
Merge pull request #324 from sharmstr/master

Thank you @sharmstr !
2024-04-07 09:31:25 +02:00
unknown 32279044e4 v1.0.371 2024-04-06 09:10:24 +02:00
unknown f220872ffa v1.0.371 2024-04-06 09:03:42 +02:00
unknown 3f0f6b8a1c v1.0.371 2024-04-06 08:57:19 +02:00
unknown 3de1cf00fe v1.0.371 2024-04-06 08:49:37 +02:00
unknown 116c275c68 v1.0.371 2024-04-06 08:47:45 +02:00
unknown cdb077bab4 v1.0.371 2024-04-05 23:22:17 +02:00
unknown 76190e3571 v1.0.371 2024-04-05 23:18:20 +02:00
unknown 6134e804c5 v1.0.371 2024-04-05 23:16:26 +02:00
unknown f67c20f258 v1.0.371 2024-04-05 23:15:08 +02:00
unknown 70567aa8b9 v1.0.371 2024-04-05 23:11:35 +02:00
unknown 9327926e75 v1.0.371 2024-04-05 23:08:18 +02:00
unknown 39c9768108 v1.0.371 2024-04-05 23:01:09 +02:00
unknown d2dd8edcde v1.0.371 2024-04-05 22:58:19 +02:00
unknown 9f1f57e393 v1.0.371 2024-04-05 22:55:03 +02:00
unknown a340fa3a22 v1.0.371 2024-04-05 22:52:50 +02:00
unknown f32ee75b78 v1.0.371 2024-04-05 22:49:18 +02:00
unknown ec494c14c4 v1.0.371 2024-04-05 22:43:53 +02:00
unknown d671e97670 v1.0.371 2024-04-05 22:40:40 +02:00
unknown 8050321b67 v1.0.371 2024-04-05 22:36:36 +02:00
unknown 1f3aa54d36 v1.0.371 2024-04-05 22:30:11 +02:00
unknown e182b666b2 v1.0.371 2024-04-05 22:20:58 +02:00
unknown d539d60d8c v1.0.371 2024-04-05 21:55:37 +02:00
unknown b33205067f v1.0.371 2024-04-05 21:53:54 +02:00
unknown fc49ae166c v1.0.371 2024-04-05 21:14:24 +02:00
unknown d707fb1e0d v1.0.371 2024-04-05 21:11:38 +02:00
unknown 40746f42cc v1.0.371 2024-04-05 21:06:32 +02:00
unknown 2dd6e5fb94 v1.0.371 2024-04-05 20:47:41 +02:00
unknown a9a89926e5 v1.0.371 2024-04-05 20:27:37 +02:00
unknown 2ae3943393 v1.0.371 2024-04-05 19:05:50 +02:00
Shawn 9eecfed210 Issue 345
Update grblparams variable when setting is updated outside of grbl settings tab.
2024-04-02 07:47:57 -07:00
Shawn 291ca3cdba Fix issue #332
XYZ Probe Offset Center: X is using Y offset
2024-04-02 07:46:32 -07:00
stefan.kramer 83286a3b6c added option "Enable Framing" to surfacing wizard to make the framing-gcode optional 2023-09-04 16:50:19 +02:00
Shawn 94f86b9785 Fixed macro sorting issue
Force numerical sorting
2023-06-28 09:12:08 -07:00
31 zmienionych plików z 3479 dodań i 3126 usunięć

Wyświetl plik

@ -8,23 +8,64 @@ jobs:
strategy:
matrix:
#os: [macos-latest, ubuntu-latest, windows-latest]
os: [macos-latest, windows-latest, ubuntu-20.04]
#os: [macos-latest, ubuntu-latest]
steps:
- name: Check out Git repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 20
- name: Install Node gyp
run: npm install -g node-gyp@latest
# new Windows Signing (2024)
- name: Setup Certificate (Windows)
if: startsWith(matrix.os, 'windows')
run: |
echo "${{secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12
cat /d/Certificate_pkcs12.p12
shell: bash
- name: Prepare for app notarization
# new Windows Signing (2024)
- name: Set variables (Windows)
if: startsWith(matrix.os, 'windows')
id: variables
run: |
echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
echo "SM_CODE_SIGNING_CERT_SHA1_HASH=${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}" >> "$GITHUB_ENV"
echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV"
echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV"
echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH
echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH
echo "C:\Program Files\DigiCert\DigiCert One Signing Manager Tools" >> $GITHUB_PATH
shell: bash
# new Windows Signing (2024)
- name: Setup SSM KSP on windows latest (Windows)
if: startsWith(matrix.os, 'windows')
run: |
curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o smtools-windows-x64.msi
msiexec /i smtools-windows-x64.msi /quiet /qn
smksp_registrar.exe list
smctl.exe keypair ls
C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
smksp_cert_sync.exe
shell: cmd
- name: Certificates Sync
if: startsWith(matrix.os, 'windows')
run: |
smctl windows certsync
shell: cmd
- name: Install setuptools (macos)
if: startsWith(matrix.os, 'macos')
run: sudo -H pip install setuptools
- name: Prepare for app notarization (macos)
if: startsWith(matrix.os, 'macos')
# Import Apple API key for app notarization on macOS
run: |
@ -32,22 +73,30 @@ jobs:
echo '${{ secrets.api_key }}' > ~/private_keys/AuthKey_${{ secrets.api_key_id }}.p8
- name: Electron Builder Action
uses: OpenBuilds/action-electron-build@v1.8.0
uses: OpenBuilds/action-electron-build@v1.9.0
with:
# GitHub token, automatically provided to the action
# (No need to define this secret in the repo settings)
github_token: ${{ secrets.github_token }}
windows_certs: ${{ secrets.WIN_CSC_LINK }}
windows_certs_password: ${{ secrets.WIN_CSC_PASSWORD }}
mac_certs: ${{ secrets.mac_certs }}
mac_certs_password: ${{ secrets.mac_certs_password }}
release: true
#debugElectron: true // to enable debug=electron-builder
debugElectron: true
# release: ${{ startsWith(github.ref, 'refs/tags/v') }}
debugElectron: false
env:
# macOS notarization API key
API_KEY_ID: ${{ secrets.api_key_id }}
API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id }}
#USE_HARD_LINKS: false
# new MacOS notarize secrets (2024)
DEBUG: electron-builder # To debug electron-builder
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# # new Windows Signing (2024)
# - name: Signing using Signtool
# if: startsWith(matrix.os, 'windows')
# run: |
# signtool.exe sign /sha1 ${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }} /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 "D:\a\OpenBuilds-CONTROL\OpenBuilds-CONTROL\dist\*.exe"
# signtool.exe verify /v /pa "D:\a\OpenBuilds-CONTROL\OpenBuilds-CONTROL\dist\*.exe"
#
# - name: Upload artifacts
# uses: actions/upload-artifact@v2
# with:
# name: ${{ matrix.os }}
# path: |
# dist/*.exe

Wyświetl plik

@ -1,3 +1,25 @@
v1.0.371: (Unreleased):
- Updated Build environment to Node 20
- Fixed Issue #285 Updated ACRO with Pen servo default Grbl profile PWM parameters
- Fixed Issue #299 Change of settings numbering for grblHAL Station parameters
- Fixed Issue #308 Improvement: Remember last used COM port
- Fixed Issue #313 Reworded recovery wizard menu item
- Fixed Issue #321 Switched Windows CodeSigning to new EAL4+ / FIPS140-2 compliant workflow
- Fixed Issue #322 Switched to new Notarizing workflow for MacOS per Apple Technote TN3147
- Fixed Issue #323 Merged fix for Macro Sorting issue
- Fixed Issue #327 Show correct fields in Steps per mm Calculator Utility in default state
- Fixed Issue #328 Improved Flashing Wizard and added warning to backup
- Fixed Issue #330 Experimental $40=1 in Machine Profiles to see if that resolves Soft Limits issue
- Fixed Issue #332 Merged fix for Center Probing Offset calculation bug
- Fixed Issue #343 Fixed SiLabs USB descriptor
- Fixed Issue #344 Added Reset prompt to end of Calibration routine
- Fixed Issue #345 Merged fix for Update Grbl Settings for if settings are changed from macro/terminal/etc
- Fixed Issue #346 Updated included grblHAL firmware binaries to v20240402 from 20230501
- Fixed Issue #348 Merged fix for Dark Mode CSS Improvement
- Removed BlackBox X32 advertisement from Splash Screen
- Changed DROs to use 3 decimal places per grblHAL standards
- Updated Grbl Settings Descriptions for newer firmware builds
- Reworded 'firmware not found' error messages to clarify
v1.0.370: Fixed typo in an error message, Updated SSL Certificates
v1.0.369: Fixed bug in firmware flashing tool
v1.0.368: Updated grblHAL firmware images to 20230501, updated grblHAL Settings templates, added 3-Axes with Door firmware, Fixed bug in Firmware flashing tool for Interface > Firmware Version when offline, Updated included Interface firmware version

Wyświetl plik

@ -1,23 +0,0 @@
.waviy {
position: relative;
-webkit-box-reflect: below -20px linear-gradient(transparent, rgba(0, 0, 0, .2));
font-size: 60px;
}
.waviy span {
position: relative;
display: inline-block;
text-transform: uppercase;
animation: waviy 1s infinite;
animation-delay: calc(.1s * var(--i));
}
@keyframes waviy {
0%, 40%, 100% {
transform: translateY(0)
}
20% {
transform: translateY(-20px)
}
}

Wyświetl plik

@ -89,7 +89,8 @@ body.theme_dark, .theme_dark div.window, .theme_dark .card {
}
.theme_dark .button.light:hover, .theme_dark .command-button.light:hover, .theme_dark .image-button.light:hover, .theme_dark .info-button.light:hover, .theme_dark .input .button.light:hover, .theme_dark .notify.light:hover, .theme_dark .select .button.light:hover, .theme_dark .shortcut.light:hover, .theme_dark .spinner .button.light:hover, .theme_dark .split-button .split.light:hover, .theme_dark .tag-input .button.light:hover, .theme_dark .tally.light:hover, .theme_dark .toast.light:hover, .theme_dark .tool-button.light:hover, .theme_dark code.light:hover, .theme_dark tbody td.light:hover, .theme_dark tbody tr.light:hover {
background-color: #333;
background-color: #222;
color: #FFF;
}
.theme_dark .button.disabled, .theme_dark .button:disabled, .theme_dark .command-button.disabled, .theme_dark .command-button:disabled, .theme_dark .image-button.disabled, .theme_dark .image-button:disabled, .theme_dark .shortcut.disabled, .theme_dark .shortcut:disabled, .theme_dark .split-button .split.disabled, .theme_dark .split-button .split:disabled, .theme_dark .tool-button.disabled, .theme_dark .tool-button:disabled {

BIN
app/img/splash.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 52 KiB

Wyświetl plik

@ -11,7 +11,6 @@
<script type="text/javascript" src="lib/jquery/jquery.min.js"></script>
<link rel="stylesheet" href="lib/metro4/css/metro-all.min.css" />
<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" href="css/splash.css" />
<link rel="stylesheet" href="css/buttons.css" />
<link rel="stylesheet" href="css/probev2.css" />
<link rel="stylesheet" href="/lib/furcanIconPicker/iconpicker-1.5.0.css" />
@ -19,25 +18,12 @@
<body>
<div class="pos-fixed pos-center" id="splash" onclick="socket.emit('adX32');">
<div class="pos-fixed pos-center" id="splash">
<center>
<div id="openbuildslogosplash" style="display: none;">
<!-- <img id="openbuildslogosplashImg" src="/img/openbuilds.png" onload="$('#openbuildslogosplash').fadeIn(800); setTimeout(function() { $('#splash').fadeOut(400); }, 2000)" width="200" /> -->
<h1>OpenBuilds<sup>&reg;</sup>&nbsp;CONTROL</h1>
<img id="openbuildslogosplashImgX32" src="/img/x32splash.png" onload="setTimeout(function() {$('#openbuildslogosplash').fadeIn(800); setTimeout(function() { $('#splash').fadeOut(400); }, 4000)}, 500);" style="cursor:pointer" />
<h3 style="cursor:pointer">Check out the all NEW OpenBuilds<sup>&reg;</sup>&nbsp;BlackBox&nbsp;X32</h3>
<div class="waviy" style="cursor:pointer">
<span style="--i:1">C</span>
<span style="--i:2">L</span>
<span style="--i:3">I</span>
<span style="--i:4">C</span>
<span style="--i:5">K</span>
<span style="--i:6"> </span>
<span style="--i:7">H</span>
<span style="--i:8">E</span>
<span style="--i:9">R</span>
<span style="--i:10">E</span>
</div>
<img id="openbuildslogosplashImgX32" src="/img/splash.png" onload="setTimeout(function() {$('#openbuildslogosplash').fadeIn(100); setTimeout(function() { $('#splash').fadeOut(100); }, 1000)}, 100);" style="cursor:pointer" />
</div>
</center>
</div>
@ -325,9 +311,9 @@
</li>
<li class="divider fg-gray"></li>
<li class=""><a href="#" onclick="socket.emit('opencam', true);"><img width="16" src="img/openbuilds.svg"> OpenBuilds CAM</a></li>
<li class=""><a href="#" onclick="socket.emit('lightburn', true);"><img width="16" src="affiliates/lightburn/lightburn.png"> Lightburn</a></li>
<li class=""><a href="#" onclick="socket.emit('vectric', true);"><img width="16" src="affiliates/vectric/vectric.svg"> Vectric</a></li>
<li class="" onclick="socket.emit('opencam', true);"><a href="#"><img width="16" src="img/openbuilds.svg"> OpenBuilds CAM</a></li>
<li class="" onclick="socket.emit('lightburn', true);"><a href="#"><img width="16" src="affiliates/lightburn/lightburn.png"> Lightburn</a></li>
<li class="" onclick="socket.emit('vectric', true);"><a href="#"><img width="16" src="affiliates/vectric/vectric.svg"> Vectric</a></li>
</ul>
</div>
@ -343,9 +329,9 @@
<li class="btn-file" onclick="socket.emit('openFile')"><a href="#"><i class="far fa-folder-open fa-fw"></i> <b>Open GCODE</b> from File (*.gcode, *.gc, *.tap, *.nc, *.cnc)</a> </li>
<li class="divider fg-gray"></li>
<li class=""><a href="#" onclick="socket.emit('opencam', true);"><img width="16" src="img/openbuilds.svg"> OpenBuilds CAM</a></li>
<li class=""><a href="#" onclick="socket.emit('lightburn', true);"><img width="16" src="affiliates/lightburn/lightburn.png"> Lightburn</a></li>
<li class=""><a href="#" onclick="socket.emit('vectric', true);"><img width="16" src="affiliates/vectric/vectric.svg"> Vectric</a></li>
<li class="" onclick="socket.emit('opencam', true);"><a href="#"><img width="16" src="img/openbuilds.svg"> OpenBuilds CAM</a></li>
<li class="" onclick="socket.emit('lightburn', true);"><a href="#"><img width="16" src="affiliates/lightburn/lightburn.png"> Lightburn</a></li>
<li class="" onclick="socket.emit('vectric', true);"><a href="#"><img width="16" src="affiliates/vectric/vectric.svg"> Vectric</a></li>
</ul>
</div>
@ -374,7 +360,7 @@
<span class="caption">Run<br>Job</span>
</button>
<ul class="ribbon-dropdown" data-role="dropdown" data-duration="100" id="toolChangesMenu">
<li class=""><a href="#" onclick="socket.emit('opencam', true);"><i class="fas fa-link fa-fw"></i> Open browser to https://cam.openbuilds.com</a></li>
<li class="" onclick="socket.emit('opencam', true);"><a href="#"><i class="fas fa-link fa-fw"></i> Open browser to https://cam.openbuilds.com</a></li>
</ul>
</div>
@ -409,7 +395,7 @@
<span class="caption">Tool<br>On</span>
</button>
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
<li><a class="grblmode" href="#" onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0))">Router On (M3 S<span class="ToolOnS100">1000</span>)</a></li>
<li onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0))"><a class="grblmode" href="#">Router On (M3 S<span class="ToolOnS100">1000</span>)</a></li>
<li>
<a href="#" class="dropdown-toggle">Variable Speed Spindle On (M3 Sxxx)</a>
<ul class="ribbon-dropdown" data-role="dropdown">
@ -434,10 +420,10 @@
</ul>
</li>
<!-- <li class="divider"></li> -->
<li><a class="grblmode" href="#" onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0))">Plasma On (M3 S<span class="ToolOnS100">1000</span>)</a></li>
<li onclick="sendGcode('M3 S'+parseInt(grblParams.$30).toFixed(0))"><a class="grblmode" href="#">Plasma On (M3 S<span class="ToolOnS100">1000</span>)</a></li>
<li class="divider fg-gray"></li>
<li id="menuMisting" style="display: none;"><a class="grblmode" href="#" onclick="sendGcode('M7')">Misting On (M7)</a></li>
<li><a class="grblmode" href="#" onclick="sendGcode('M8')">Coolant On (M8)</a></li>
<li id="menuMisting" style="display: none;" onclick="sendGcode('M7')"><a class="grblmode" href="#">Misting On (M7)</a></li>
<li onclick="sendGcode('M8')"><a class="grblmode" href="#">Coolant On (M8)</a></li>
<!-- <li><a class="grblmode" href="#" onclick="sendGcode('M9 S1000')">Coolant Off (M9)</a></li> -->
</ul>
@ -455,9 +441,9 @@
<span class="caption">Tool<br>Off</span>
</button>
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
<li><a class="grblmode" href="#" onclick="sendGcode('M5')">Router / Spindle / Laser / Plasma Off (M5)</a></li>
<li onclick="sendGcode('M5')"><a class="grblmode" href="#">Router / Spindle / Laser / Plasma Off (M5)</a></li>
<li class="divider fg-gray"></li>
<li><a class="grblmode" href="#" onclick="sendGcode('M9')">Coolant Off (M9)</a></li>
<li onclick="sendGcode('M9')"><a class="grblmode" href="#">Coolant Off (M9)</a></li>
</ul>
</div>
@ -501,8 +487,8 @@
<span class="caption">Wizards<br>& Tools</span>
</button>
<ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
<li><a href="#" onclick="populateSurfaceToolForm();"><i class="fas fa-exchange-alt"></i> Surfacing / Flattening Wizard</a></li>
<li><a href="#" onclick="jogWidget();"><i class="fas fa-mobile-alt"></i> Mobile Jog Widget</a></li>
<li onclick="populateSurfaceToolForm();"><a href="#"><i class="fas fa-exchange-alt"></i> Surfacing / Flattening Wizard</a></li>
<li onclick="jogWidget();"><a href="#"><i class="fas fa-mobile-alt"></i> Mobile Jog Widget</a></li>
<li class="divider fg-gray"></li>
<li class="disabled grblCalibrationMenu" onclick="xstepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate X-Axes Steps/mm</a></li>
<li class="disabled grblCalibrationMenu" onclick="ystepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate Y-Axes Steps/mm</a></li>
@ -516,7 +502,7 @@
<li class="divider fg-gray"></li>
<li onclick="showJobLog();"><a href="#"><i class="fas fa-history fa-fw"></i> Job Log</a></li>
<li class="divider fg-gray"></li>
<li onclick="recoverCrashedJob();"><a href="#"><i class="fas fa-fw fa-route"></i> Recover crashed/stopped job </a></li>
<li onclick="recoverCrashedJob();"><a href="#"><i class="fas fa-fw fa-route"></i> Recover stopped/crashed job </a></li>
</ul>
</div>
@ -661,12 +647,12 @@
<span title="Show/change current Work Coordinate System" class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G54
</button>
<ul class="ribbon-dropdown drop-shadow" data-role="dropdown">
<li class="checked wcsItem wcsItemG54"><a href="#" onclick="sendGcode('G54')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G54</a></li>
<li class="wcsItem wcsItemG55"><a href="#" onclick="sendGcode('G55')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G55</a></li>
<li class="wcsItem wcsItemG56"><a href="#" onclick="sendGcode('G56')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G56</a></li>
<li class="wcsItem wcsItemG57"><a href="#" onclick="sendGcode('G57')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G57</a></li>
<li class="wcsItem wcsItemG58"><a href="#" onclick="sendGcode('G58')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G58</a></li>
<li class="wcsItem wcsItemG59"><a href="#" onclick="sendGcode('G59')"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G59</a></li>
<li class="checked wcsItem wcsItemG54" onclick="sendGcode('G54')"><a href="#"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G54</a></li>
<li class="wcsItem wcsItemG55" onclick="sendGcode('G55')"><a href="#"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G55</a></li>
<li class="wcsItem wcsItemG56" onclick="sendGcode('G56')"><a href="#"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G56</a></li>
<li class="wcsItem wcsItemG57" onclick="sendGcode('G57')"><a href="#"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G57</a></li>
<li class="wcsItem wcsItemG58" onclick="sendGcode('G58')"><a href="#"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G58</a></li>
<li class="wcsItem wcsItemG59" onclick="sendGcode('G59')"><a href="#"><span class="fas fa-fw fa-layer-group icon fg-darkGray"></span>G59</a></li>
</ul>
</div>

Wyświetl plik

@ -20,6 +20,11 @@ function fixGrblHALSettings(j) {
// Fix Enable Invert
$("#val-" + j + "-input").val(0)
}
if (j == "40") {
// Fix Soft Limits for grblHAL https://openbuilds.com/threads/openbuilds-control-software.13121/page-81#post-137277
$("#val-" + j + "-input").val(1)
}
}
}
@ -914,7 +919,13 @@ function selectMachine(type) {
// as per https://openbuilds.com/threads/blackbox-x32.19810/page-3#post-131285
$("#val-44-input").val(3)
$("#val-45-input").val(0)
$("#val-33-input").val(50)
$("#val-33-input").val(50) // spindle pwm freq
// $33 = 50Hz = 20ms (1/50s) repetion rate, $34-$36 are percentages of this. https://openbuilds.com/threads/blackbox-x32-servo-connection.20395/#post-134896
// Set $33=50 (PWM frequency), $34=5, $35=5 and $36=10 to generate a “standard” PWM signal: 20ms repetition rate, 1 - 2ms pulse length range.
// You may decrease $34 and $35 to output a shorter pulse than 1ms at min, and increase $36 to get a longer pulse than 2ms at max.
$("#val-34-input").val(5) // off value
$("#val-35-input").val(5) // min value
$("#val-36-input").val(100) // max value
} else if (customFirmware == "acro" && laststatus.machine.firmware.platform == "grbl") {
Metro.dialog.create({

Wyświetl plik

@ -639,55 +639,6 @@ var grblSettingsTemplate2 = {
template: `<input id="val-70-input" data-role="input" data-clear-button="false" data-append="mask" type="text" >`,
utils: ``
},
300: {
key: `$300`,
title: `Hostname`,
description: ``,
template: `<input id="val-300-input" data-role="input" data-clear-button="false" data-append="text" type="text" >`,
utils: ``
},
302: {
key: `$302`,
title: `IP Address`,
description: ``,
template: `<input id="val-302-input" data-role="input" data-clear-button="false" data-append="ip" type="text" >`,
utils: ``
},
303: {
key: `$303`,
title: `Gateway`,
description: ``,
template: `<input id="val-303-input" data-role="input" data-clear-button="false" data-append="gateway" type="text" >`,
utils: ``
},
304: {
key: `$304`,
title: `Netmask`,
description: ``,
template: `<input id="val-304-input" data-role="input" data-clear-button="false" data-append="netmask" type="text" >`,
utils: ``
},
305: {
key: `$305`,
title: `Telnet Port`,
description: ``,
template: `<input id="val-305-input" data-role="input" data-clear-button="false" data-append="tcp" type="text" >`,
utils: ``
},
306: {
key: `$306`,
title: `HTTP Port`,
description: ``,
template: `<input id="val-306-input" data-role="input" data-clear-button="false" data-append="tcp" type="text" >`,
utils: ``
},
307: {
key: `$307`,
title: `Websocket Port`,
description: ``,
template: `<input id="val-307-input" data-role="input" data-clear-button="false" data-append="tcp" type="text" >`,
utils: ``
},
73: {
key: `$73`,
title: `Wifi Mode`,
@ -890,5 +841,49 @@ var grblSettingsTemplate2 = {
description: `Coolant on delay in s`,
template: `<input id="val-393-input" data-role="input" data-clear-button="false" data-append="sec" type="number" >`,
utils: ``
},
337: {
key: `$337`,
title: `WiFi Access Point (AP) BSSID`,
description: `Optional WiFi Access Point BSSID (MAC) to connect to, colon delimited values. NOTE: A hard reset of the controller is required after changing this setting.`,
template: `<input id="val-337-input" data-role="input" data-clear-button="false" data-append="MAC" type="text" >`,
utils: ``
},
394: {
key: `$394`,
title: `Spindle on delay in s, range: 0.5 - 20`,
description: `Delay to allow spindle to restart after feed hold is canceled.`,
template: `<input id="val-394-input" data-role="input" data-clear-button="false" data-append="sec" type="number" >`,
utils: ``
},
673: {
key: `$673`,
title: `Coolant on delay in s, range: 0.5 - 20`,
description: `Delay to allow coolant to restart after feed hold is canceled.`,
template: `<input id="val-673-input" data-role="input" data-clear-button="false" data-append="sec" type="number" >`,
utils: ``
},
484: {
key: `$484`,
title: `Unlock required after E-Stop as boolean`,
description: `If set unlock (by sending $X) is required after resetting a cleared E-Stop condition.`,
template: `<input id="val-484-input" data-role="input" data-clear-button="false" data-append="bool" type="number" >`,
utils: ``
},
486: {
key: `$486`,
title: `Unlock required after E-Stop as boolean`,
description: `Lock coordinate systems against accidental changes. 0 - G59.1 (1) / 1 - G59.2 (2) / 2 - G59.3 (4)`,
template: `<input id="val-486-input" data-role="input" data-clear-button="false" data-append="bitfield" type="number" >`,
utils: ``
},
650: {
key: `$650`,
title: `File systems options as bitfield`,
description: `Auto mount SD card on startup. 0 - Auto mount SD card (1) / 1 - Hide LittleFS (2)`,
template: `<input id="val-650-input" data-role="input" data-clear-button="false" data-append="bitfield" type="number" >`,
utils: ``
}
}

Wyświetl plik

@ -507,42 +507,46 @@ function grblSaveSettings() {
clearInterval(i);
grblParams = {};
toSaveCommands = [];
setTimeout(function() {
Metro.dialog.close('#savingGrblSettingsProgress')
Metro.dialog.create({
title: "Configuration Updated. Reset Grbl?",
content: "<div>Some changes in the Grbl Configuration only take effect after a restart/reset of the controller. Would you like to Reset the controller now?</div>",
clsDialog: 'dark',
actions: [{
caption: "Yes",
cls: "js-dialog-close success",
onclick: function() {
setTimeout(function() {
sendGcode(String.fromCharCode(0x18));
setTimeout(function() {
refreshGrblSettings()
}, 1000); // refresh grbl settings
}, 800); // reset
}
},
{
caption: "Later",
cls: "js-dialog-close",
onclick: function() {
console.log("Do nothing")
refreshGrblSettings();
}
}
]
});
$('#grblSettingsBadge').hide();
}, 1000); // Just to show settings was written
askToResetOnGrblSettingsChange();
}
}, 400); // send another command every 200ms
}
}
function askToResetOnGrblSettingsChange() {
setTimeout(function() {
Metro.dialog.close('#savingGrblSettingsProgress')
Metro.dialog.create({
title: "Configuration Updated. Reset Grbl?",
content: "<div>Some changes in the Grbl Configuration only take effect after a restart/reset of the controller. Would you like to Reset the controller now?</div>",
clsDialog: 'dark',
actions: [{
caption: "Yes",
cls: "js-dialog-close success",
onclick: function() {
setTimeout(function() {
sendGcode(String.fromCharCode(0x18));
setTimeout(function() {
refreshGrblSettings()
}, 1000); // refresh grbl settings
}, 800); // reset
}
},
{
caption: "Later",
cls: "js-dialog-close",
onclick: function() {
console.log("Do nothing")
refreshGrblSettings();
}
}
]
});
$('#grblSettingsBadge').hide();
}, 1000); // Just to show settings was written
}
// Old Gnea-Grbl way
// function grblSaveSettings() {

Wyświetl plik

@ -462,7 +462,7 @@ function sortMacros(index, delta) {
// var index = array.indexOf(element);
var newIndex = index + delta;
if (newIndex < 0 || newIndex == buttonsarray.length) return; //Already at the top or bottom.
var indexes = [index, newIndex].sort(); //Sort the indixes
var indexes = [index, newIndex].sort((a,b)=>a-b); //Sort the indixes
buttonsarray.splice(indexes[0], 2, buttonsarray[indexes[1]], buttonsarray[indexes[0]]); //Replace from lowest index, two elements, reverting the order
populateMacroButtons();
};

Wyświetl plik

@ -259,6 +259,12 @@ function initSocket() {
lineColor = "fg-dark"
}
// look for grbl settings change and update grblparams variable
// matches $number(s)=
if (/^\$\d*=/.test(data.command) && data.response == 'ok') {
grblSettings(data.command)
}
// Parse Grbl Settings Feedback
if (data.response.indexOf('$') === 0) {
if (typeof grblSettings !== 'undefined') {
@ -627,21 +633,21 @@ function initSocket() {
if (!disableDROupdates) {
if (unit == "mm") {
var xpos = status.machine.position.work.x.toFixed(2) + unit;
var ypos = status.machine.position.work.y.toFixed(2) + unit;
var zpos = status.machine.position.work.z.toFixed(2) + unit;
var apos = status.machine.position.work.a.toFixed(2) + "deg";
var xpos = status.machine.position.work.x.toFixed(3) + unit;
var ypos = status.machine.position.work.y.toFixed(3) + unit;
var zpos = status.machine.position.work.z.toFixed(3) + unit;
var apos = status.machine.position.work.a.toFixed(3) + "deg";
$(" #xPos ").attr('title', 'X Machine: ' + (status.machine.position.work.x + status.machine.position.offset.x).toFixed(2) + unit + "/ X Work: " + xpos);
$(" #yPos ").attr('title', 'Y Machine: ' + (status.machine.position.work.y + status.machine.position.offset.y).toFixed(2) + unit + "/ Y Work: " + ypos);
$(" #zPos ").attr('title', 'Z Machine: ' + (status.machine.position.work.z + status.machine.position.offset.z).toFixed(2) + unit + "/ Z Work: " + zpos);
$(" #aPos ").attr('title', 'A Machine: ' + (status.machine.position.work.a + status.machine.position.offset.a).toFixed(2) + "deg" + "/ A Work: " + apos);
$(" #xPos ").attr('title', 'X Machine: ' + (status.machine.position.work.x + status.machine.position.offset.x).toFixed(3) + unit + "/ X Work: " + xpos);
$(" #yPos ").attr('title', 'Y Machine: ' + (status.machine.position.work.y + status.machine.position.offset.y).toFixed(3) + unit + "/ Y Work: " + ypos);
$(" #zPos ").attr('title', 'Z Machine: ' + (status.machine.position.work.z + status.machine.position.offset.z).toFixed(3) + unit + "/ Z Work: " + zpos);
$(" #aPos ").attr('title', 'A Machine: ' + (status.machine.position.work.a + status.machine.position.offset.a).toFixed(3) + "deg" + "/ A Work: " + apos);
} else if (unit == "in") {
var xpos = (status.machine.position.work.x / 25.4).toFixed(3) + unit;
var ypos = (status.machine.position.work.y / 25.4).toFixed(3) + unit;
var zpos = (status.machine.position.work.z / 25.4).toFixed(3) + unit;
var apos = status.machine.position.work.a.toFixed(2) + "deg";
var apos = status.machine.position.work.a.toFixed(3) + "deg";
$(" #xPos ").attr('title', 'X Machine: ' + ((status.machine.position.work.x / 25.4) + (status.machine.position.offset.x / 25.4)).toFixed(3) + unit + "/ X Work: " + xpos);
$(" #yPos ").attr('title', 'Y Machine: ' + ((status.machine.position.work.y / 25.4) + (status.machine.position.offset.y / 25.4)).toFixed(3) + unit + "/ Y Work: " + ypos);
@ -692,10 +698,10 @@ function initSocket() {
}
if (unit == "mm") {
$("#realFeed").html(status.machine.overrides.realFeed + "mm/min");
$("#realFeed").html(status.machine.overrides.realFeed + " mm/min");
//$("#realSpeed").html("S=" + status.machine.overrides.realSpindle);
} else if (unit == "in") {
$("#realFeed").html((status.machine.overrides.realFeed / 25.4).toFixed(0) + "in/min");
$("#realFeed").html((status.machine.overrides.realFeed / 25.4).toFixed(0) + " in/min");
//$("#realSpeed").html(("S=" + status.machine.overrides.realSpindle / 25.4).toFixed(0) + "in/min");
}
@ -1076,6 +1082,7 @@ function selectPort(port) {
baud: 115200,
type: "usb"
};
localStorage.setItem('lastUsedPort', port);
}
if (port.length > 1) {
socket.emit('connectTo', data);
@ -1136,7 +1143,14 @@ function populatePortsMenu() {
response += `<optgroup label="USB Ports">`
for (i = 0; i < laststatus.comms.interfaces.ports.length; i++) {
var port = friendlyPort(i)
response += `<option value="` + laststatus.comms.interfaces.ports[i].path + `">` + port.note + " " + laststatus.comms.interfaces.ports[i].path.replace("/dev/tty.", "") + `</option>`;
var lastUsedPort = localStorage.getItem('lastUsedPort');
if (laststatus.comms.interfaces.ports[i].path == lastUsedPort) {
response += `<option value="` + laststatus.comms.interfaces.ports[i].path + `" selected>` + laststatus.comms.interfaces.ports[i].path.replace("/dev/tty.", "") + " " + port.note + `</option>`;
} else {
response += `<option value="` + laststatus.comms.interfaces.ports[i].path + `">` + laststatus.comms.interfaces.ports[i].path.replace("/dev/tty.", "") + " " + port.note + `</option>`;
}
};
}
response += `</optgroup>`
@ -1242,8 +1256,8 @@ function friendlyPort(i) {
}
if (laststatus.comms.interfaces.ports[i].productId == 'EA60' && laststatus.comms.interfaces.ports[i].vendorId == '10C4') {
// found CP2102
img = 'nodemcu.png';
note = 'NodeMCU';
img = 'silabs.png';
note = 'Silicon Labs USB to UART';
}
if (laststatus.comms.interfaces.ports[i].productId == '2303' && laststatus.comms.interfaces.ports[i].vendorId == '067B') {
// found CP2102

Wyświetl plik

@ -362,7 +362,8 @@ GCodeParser = function(handlers, modecmdhandlers) {
if (p2deltaX >= 0) anglepArcp2 += Math.PI;
}
if (anglepArcp1 === anglepArcp2 && clwise === false)
//if (anglepArcp1 === anglepArcp2 && clwise === false) // commented out 9 apr 2024 to see if it helps for #257
if (anglepArcp1 === anglepArcp2)
// Draw full circle if angles are both zero,
// start & end points are same point... I think
switch (args.plane) {
@ -804,6 +805,7 @@ GCodeParser = function(handlers, modecmdhandlers) {
lastLine = newLine;
},
G2: function(args, indx, gcp) {
//console.log(args, indx, gcp)
/* this is an arc move from lastLine's xy to the new xy. we'll
show it as a light gray line, but we'll also sub-render the
arc itself by figuring out the sub-segments . */
@ -820,11 +822,16 @@ GCodeParser = function(handlers, modecmdhandlers) {
arck: args.k !== undefined ? cofg.ijkabsolute(lastLine.z, args.k) : lastLine.z,
arcr: args.r ? args.r : null,
};
//console.log("G2 newLine:", newLine);
//newLine.g2 = true;
newLine.arc = true;
newLine.clockwise = true;
if (args.clockwise === false) newLine.clockwise = args.clockwise;
if (args.clockwise === false) {
newLine.clockwise = false
} else {
newLine.clockwise = true
}
cofg.addSegment(lastLine, newLine, args);
//console.log("G2", lastLine, newLine, args, cofg.offsetG92);
lastLine = newLine;
@ -840,7 +847,7 @@ GCodeParser = function(handlers, modecmdhandlers) {
G73: function(args, indx, gcp) {
// peck drilling. just treat as g1
newLine.g73 = true;
//newLine.g73 = true;
console.log("G73 gcp:", gcp);
gcp.handlers.G1(args);
},

Wyświetl plik

@ -151,4 +151,6 @@ function closeServoCal() {
localStorage.setItem("servo-calibration", JSON.stringify(servo));
Metro.dialog.close($('#servocalstep1').parent().parent());
console.log(servo)
askToResetOnGrblSettingsChange();
}

Wyświetl plik

@ -90,9 +90,7 @@ function applycalibrationx() {
// $('#val-100-input').val(newsteps)
// checkifchanged();
sendGcode("$100=" + newsteps);
setTimeout(function() {
sendGcode(String.fromCharCode(0x18));
}, 500);
askToResetOnGrblSettingsChange()
}

Wyświetl plik

@ -88,9 +88,7 @@ function applycalibrationy() {
// $('#val-101-input').val(newsteps)
// checkifchanged();
sendGcode("$101=" + newsteps);
setTimeout(function() {
sendGcode(String.fromCharCode(0x18));
}, 500);
askToResetOnGrblSettingsChange()
}

Wyświetl plik

@ -88,9 +88,7 @@ function applycalibrationz() {
// $('#val-102-input').val(newsteps)
// checkifchanged();
sendGcode("$102=" + newsteps);
setTimeout(function() {
sendGcode(String.fromCharCode(0x18));
}, 500);
askToResetOnGrblSettingsChange()
}
function zstepscalibrate() {

Wyświetl plik

@ -32,7 +32,7 @@ var grblcalctemplate = `<div>
</select>
</td>
</tr>
<tr id="pulleyrow">
<tr id="pulleyrow" style="display: none;">
<td>Pulley Type</td>
<td>
<select data-role="select" data-filter="false" id="pulleyselect" data-on-change="processpreset();">

Wyświetl plik

@ -9,6 +9,7 @@ function flashToolBoard(device) {
$("#flash-tool-erase-row").hide();
$("#flash-tool-interface-fw-row").hide();
$("#flash-tool-custom-row").hide();
$("#flash-tool-backup-row").show();
$("#customFirmwareSet").html("Please select the Grbl Firmware hex file you want to flash");
} else if (device == "blackboxx32") {
$("#grblHalAxesCount").data("select").val("3axes-grblhal")
@ -17,6 +18,7 @@ function flashToolBoard(device) {
$("#flash-tool-erase-row").show();
$("#flash-tool-interface-fw-row").hide();
$("#flash-tool-custom-row").hide();
$("#flash-tool-backup-row").show();
$("#customFirmwareSet").html("Please select the GrblHAL Firmware binary file you want to flash");
} else if (device == "interfacev1") {
$("#interfaceFirmwareVer").data("select").val("online")
@ -24,6 +26,7 @@ function flashToolBoard(device) {
$("#flash-tool-grblhal-row").hide();
$("#flash-tool-erase-row").hide();
$("#flash-tool-interface-fw-row").show();
$("#flash-tool-backup-row").hide();
$("#customFirmwareSet").html("Please select the Interface Firmware binary file you want to flash");
}
@ -85,11 +88,11 @@ function openFlashingTool() {
</div>
</div>
<div class="row" id="flash-tool-erase-row" style="display: none;">
<div class="row" id="flash-tool-erase-row">
<div class="cell-md-3 mb-1">Erase Settings</div>
<div class="cell-md-9 mb-1">
<select data-prepend="&nbsp;<i class='fas fa-eraser'></i>" data-role="select" data-filter="false" id="flashErase" data-editable="true">
<option value="flashonly">Flash firmware, do not erase settings </option>
<option value="flashonly">Flash firmware, do not erase settings (only applies to updates)</option>
<option value="flasherase">Flash firmware and erase settings</option>
</select>
</div>
@ -107,6 +110,14 @@ function openFlashingTool() {
</div>
</div>
<div class="row mt-2" id="flash-tool-backup-row">
<div class="cell-md-3 mb-1">Warning</div>
<div class="cell-md-9 mb-1">
<p class="remark alert">
Before upgrading a controller that has already been configured, make sure you have a Grbl Settings Backup before proceeding! If you don't have a backup you may stand to lose your configuration and have to redo it manually
</p>
</div>
</div>
`

Wyświetl plik

@ -477,7 +477,7 @@ function runProbeNew() {
template += `Offset: Center:\n`;
template += `Offset x:` + probemode.stock.x / 2 + `\n`;
template += `Offset y: ` + probemode.stock.y / 2 + `\n`;
stockoffset.x = probemode.stock.y / 2
stockoffset.x = probemode.stock.x / 2
stockoffset.y = probemode.stock.y / 2
}

Wyświetl plik

@ -68,6 +68,16 @@ var surfacingWizardTemplate = `
</select>
</div>
</div>
<div class="row mb-2 pb-2 border-bottom bd-gray">
<label class="cell-sm-6">Enable Framing</label>
<div class="cell-sm-6">
<select id="surfaceFraming" data-role="input" data-clear-button="false">
<option value="enabled" selected>Enabled</option>
<option value="disabled">Disabled</option>
</select>
</div>
</div>
</div>
<div class="cell-sm-5">
@ -134,6 +144,7 @@ function populateSurfaceToolForm() {
surfaceDepth: 3,
surfaceFinalDepth: 3,
surfaceCoolant: "enabled",
surfaceFraming: "enabled",
surfaceRPM: 1000
};
}
@ -152,6 +163,9 @@ function populateSurfaceToolForm() {
if (data.surfaceCoolant != undefined) {
$('#surfaceCoolant').val(data.surfaceCoolant)
}
if (data.surfaceFraming != undefined) {
$('#surfaceFraming').val(data.surfaceFraming)
}
$('#surfaceRPM').val(data.surfaceRPM)
var $radios = $("input:radio[name=surfaceType]");
@ -173,7 +187,8 @@ function createSurfaceGcode() {
surfaceFinalDepth: parseFloat($("#surfaceFinalDepth").val()),
surfaceType: $("input[name='surfaceType']:checked").val(),
surfaceRPM: $('#surfaceRPM').val(),
surfaceCoolant: $('#surfaceCoolant').val()
surfaceCoolant: $('#surfaceCoolant').val(),
surfaceFraming: $('#surfaceFraming').val()
};
console.log(data);
@ -298,17 +313,18 @@ G1 F` +
gcode += `G0 Z10; Pass complete, lifting to Z Safe height\n`;
// Framing Pass
gcode += `; Framing pass\n`;
gcode += `G0 X` + startpointX.toFixed(4) + ` Y` + startpointY.toFixed(4) + ` Z10\n`; // position at start point
gcode += `G1 Z` + zval + `\n`; // plunge
gcode += `G1 X` + startpointX.toFixed(4) + ` Y` + endpointY.toFixed(4) + ` Z` + zval + `\n`; // Cut side
gcode += `G0 Z10\n`;
gcode += `G0 X` + endpointX.toFixed(4) + ` Y` + endpointY.toFixed(4) + `\n`; // position at start point
gcode += `G1 Z` + zval + `\n`; // plunge
gcode += `G1 X` + endpointX.toFixed(4) + ` Y` + startpointY.toFixed(4) + ` Z` + zval + `\n`; // Cut side
gcode += `G0 Z10\n`;
gcode += `G0 X0 Y0\n`;
if (data.surfaceFraming == "enabled") {
gcode += `; Framing pass\n`;
gcode += `G0 X` + startpointX.toFixed(4) + ` Y` + startpointY.toFixed(4) + ` Z10\n`; // position at start point
gcode += `G1 Z` + zval + `\n`; // plunge
gcode += `G1 X` + startpointX.toFixed(4) + ` Y` + endpointY.toFixed(4) + ` Z` + zval + `\n`; // Cut side
gcode += `G0 Z10\n`;
gcode += `G0 X` + endpointX.toFixed(4) + ` Y` + endpointY.toFixed(4) + `\n`; // position at start point
gcode += `G1 Z` + zval + `\n`; // plunge
gcode += `G1 X` + endpointX.toFixed(4) + ` Y` + startpointY.toFixed(4) + ` Z` + zval + `\n`; // Cut side
gcode += `G0 Z10\n`;
gcode += `G0 X0 Y0\n`;
}
}
// END MULTIPASS

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 122 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 139 KiB

Wyświetl plik

@ -133,13 +133,6 @@ var grblSettingCodes = {
370: "Invert I/O Port Inputs (mask)",
384: "Disable G92 Persistence",
70: "Network Services",
300: "Hostname",
302: "IP Address",
303: "Gateway",
304: "Netmask",
305: "Telnet Port",
306: "HTTP Port",
307: "Websocket Port",
73: "Wifi Mode", // Off/Station
74: "SSID",
75: "PSK",
@ -159,7 +152,12 @@ var grblSettingCodes = {
398: "Planner buffer blocks",
481: "Autoreport interval in ms",
376: "Rotational axes as bitfield",
337: "WiFi Access Point (AP) BSSID (MAC Address)",
394: "Spindle on delay in s after Feedhold resume",
484: "Unlock required after E-Stop as boolean",
486: "Lock coordinate systems against accidental changes",
650: "File systems options as bitfield", // Auto mount SD?
673: "Coolant on delay in s after Feedhold resume"
};

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -58,7 +58,7 @@ config.nextWebPort = function() {
return config.webPort;
}
config.webPort = process.env.WEB_PORT || config.nextWebPort();
config.posDecimals = process.env.DRO_DECIMALS || 2;
config.posDecimals = process.env.DRO_DECIMALS || 3;
config.grblWaitTime = 0.5;
config.firmwareWaitTime = 4;
@ -168,7 +168,9 @@ const {
} = require('serialport')
const {
ReadlineParser
} = require('@serialport/parser-readline');
} = require('@serialport/parser-readline')
// telnet
const net = require('net');
@ -829,13 +831,6 @@ io.on("connection", function(socket) {
shell.openExternal('https://openbuilds.com/threads/openbuilds-control-software.13121/')
});
socket.on("adX32", function(data) {
const {
shell
} = require('electron')
shell.openExternal('https://openbuildspartstore.com/BlackBox-Motion-Control-System-X32')
});
socket.on("gpuinfo", function(data) {
// GPU
var gpuInfoWindow = new BrowserWindow({
@ -934,7 +929,7 @@ io.on("connection", function(socket) {
console.log(firmwarePath)
console.log("-------------------------------------------")
const Avrgirl = require('avrgirl-arduino');
//const Avrgirl = require('avrgirl-arduino');
if (status.comms.connectionStatus > 0) {
debug_log('WARN: Closing Port ' + port);
@ -952,33 +947,33 @@ io.on("connection", function(socket) {
io.sockets.emit("progStatus", data);
}
setTimeout(function() {
var avrgirl = new Avrgirl({
board: board,
port: port,
debug: function(debugString) {
var port = this.connection.options.port;
flashGrblCallback(debugString, port)
}
});
debug_log(JSON.stringify(avrgirl));
status.comms.connectionStatus = 6;
avrgirl.flash(firmwarePath, function(error) {
if (error) {
console.error(error);
io.sockets.emit("progStatus", 'Flashing FAILED!');
status.comms.connectionStatus = 0;
} else {
console.info('done.');
io.sockets.emit("progStatus", 'Programmed Succesfully');
io.sockets.emit("progStatus", 'Please Reconnect');
status.comms.connectionStatus = 0;
}
status.comms.connectionStatus = 0;
});
}, 1000)
// setTimeout(function() {
// var avrgirl = new Avrgirl({
// board: board,
// port: port,
// debug: function(debugString) {
// var port = this.connection.options.port;
// flashGrblCallback(debugString, port)
// }
// });
//
// debug_log(JSON.stringify(avrgirl));
//
// status.comms.connectionStatus = 6;
// avrgirl.flash(firmwarePath, function(error) {
// if (error) {
// console.error(error);
// io.sockets.emit("progStatus", 'Flashing FAILED!');
// status.comms.connectionStatus = 0;
// } else {
// console.info('done.');
// io.sockets.emit("progStatus", 'Programmed Succesfully');
// io.sockets.emit("progStatus", 'Please Reconnect');
// status.comms.connectionStatus = 0;
// }
// status.comms.connectionStatus = 0;
// });
// }, 1000)
})
socket.on("flashGrblHal", function(data) {
@ -1108,9 +1103,10 @@ io.on("connection", function(socket) {
port.isOpen = true;
}
parser = port.pipe(new ReadlineParser({
const parser = port.pipe(new ReadlineParser({
delimiter: '\r\n'
}));
}))
// port.on("data", function(data) {
// console.log(data)
@ -1161,24 +1157,18 @@ io.on("connection", function(socket) {
debug_log("PORT INFO: Connected to " + port.path + " at " + port.baudRate);
var output = {
'command': 'connect',
'response': "PORT INFO: Port is now open: " + port.path + " - Attempting to detect Firmware",
'response': "PORT INFO: Port is now open: " + port.path + " - Attempting to detect Controller...",
'type': 'info'
}
io.sockets.emit('data', output);
status.comms.connectionStatus = 1;
var output = {
'command': 'connect',
'response': "Checking for firmware on " + port.path,
'type': 'info'
}
io.sockets.emit('data', output);
addQRealtime("\n"); // this causes smoothie and grblHAL to send the welcome string
var output = {
'command': 'connect',
'response': "Detecting Firmware: Method 1 (Autoreset)",
'response': "Attempting to detect Controller (1): (Autoreset)",
'type': 'info'
}
io.sockets.emit('data', output);
@ -1188,7 +1178,7 @@ io.on("connection", function(socket) {
debug_log("Didnt detect firmware after AutoReset. Lets see if we have Grbl instance with a board that doesnt have AutoReset");
var output = {
'command': 'connect',
'response': "Detecting Firmware: Method 2 (Ctrl+X)",
'response': "Attempting to detect Controller (2): (Ctrl+X)",
'type': 'info'
}
io.sockets.emit('data', output);
@ -1202,7 +1192,7 @@ io.on("connection", function(socket) {
debug_log("No firmware yet, probably not Grbl then. lets see if we have Smoothie?");
var output = {
'command': 'connect',
'response': "Detecting Firmware: Method 3 (others that are not supported)",
'response': "Attempting to detect Controller (3): (others)",
'type': 'info'
}
io.sockets.emit('data', output);
@ -1253,8 +1243,7 @@ io.on("connection", function(socket) {
} else {
var output = {
'command': 'connect',
'response': `ERROR!: No supported firmware detected - See https://docs.openbuilds.com/doku.php?id=docs:blackbox:faq-usb-connection-failed
for more details. Closing port ` + port.path,
'response': `ERROR!: No Response from Controller - See https://docs.openbuilds.com/doku.php?id=docs:blackbox:faq-usb-connection-failed for troubleshooting information. Closing port ` + port.path,
'type': 'error'
}
}
@ -1551,6 +1540,7 @@ io.on("connection", function(socket) {
// debug_log(data)
} else if (data.indexOf("ok") === 0) { // Got an OK so we are clear to send
io.sockets.emit('ok', command); // added per #325
// debug_log("OK FOUND")
if (status.machine.firmware.type === "grbl") {
// debug_log('got OK from ' + command)

30
notarize.js 100644
Wyświetl plik

@ -0,0 +1,30 @@
// From https://github.com/simonw/til/blob/main/electron/sign-notarize-electron-macos.md
// Based on https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/
const {
notarize
} = require("@electron/notarize");
exports.default = async function notarizing(context) {
const {
electronPlatformName,
appOutDir
} = context;
if (electronPlatformName !== "darwin") return;
const appName = context.packager.appInfo.productFilename;
try {
await notarize({
appBundleId: "app.openbuilds.control",
appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD,
teamId: process.env.APPLE_TEAM_ID,
});
console.log("Notarization using OpenBuilds CONTROL's custom notarize.js script: successful");
} catch (error) {
console.error("Notarization using OpenBuilds CONTROL's custom notarize.js script: failed:", error);
}
};

Wyświetl plik

@ -1,18 +1,17 @@
{
"name": "OpenBuildsCONTROL",
"version": "1.0.370",
"version": "1.0.371",
"license": "AGPL-3.0",
"description": "OpenBuildsCONTROL CNC Machine Host Software",
"author": "github.com/openbuilds <support@openbuilds.com>",
"devDependencies": {
"electron": "^23.1.1",
"electron-builder": "^24.0.0",
"electron-builder-notarize": "^1.5.1",
"electron-builder": "^24.9.1",
"electron-builder-notarize": "latest",
"electron-rebuild": "^3.2.9",
"ncp": "^2.0.0"
},
"dependencies": {
"avrgirl-arduino": "^5.0.1",
"detect-rpi": "^1.4.0",
"electron-updater": "^5.2.1",
"evilscan": "^1.9.1",
@ -27,7 +26,7 @@
"ncp": "^2.0.0",
"node-abi": "^3.33.0",
"node-gyp": "^9.3.1",
"serialport": "^10.4.0",
"serialport": "^12.0.0",
"socket.io": "^4.6.1",
"xmodem.js": "^0.1.0"
},
@ -50,12 +49,13 @@
"vPrefixedTagName": true
}
],
"afterSign": "electron-builder-notarize",
"afterSign": "./notarize.js",
"mac": {
"icon": "build/icon.icns",
"category": "public.app-category.graphics-design",
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist"
"entitlementsInherit": "build/entitlements.mac.plist",
"notarize": false
},
"icon": "build/icon.icns",
"appId": "openbuilds.control",
@ -125,6 +125,8 @@
"*.bin"
],
"win": {
"sign": "./signWin.js",
"signingHashAlgorithms": ["sha256"],
"target": [
{
"target": "nsis",

31
signWin.js 100644
Wyświetl plik

@ -0,0 +1,31 @@
const {
execSync
} = require('node:child_process')
exports.default = async configuration => {
if (!process.env.SM_API_KEY) {
console.error("Signing using OpenBuilds CONTROL's custom signWin.js script: failed: SM_API_KEY ENV VAR NOT FOUND");
return
}
if (!process.env.SM_CODE_SIGNING_CERT_SHA1_HASH) {
console.error("Signing using OpenBuilds CONTROL's custom signWin.js script: failed: FINGERPRINT ENV VAR NOT FOUND");
return
}
if (!configuration.path) {
throw new Error(`Signing using OpenBuilds CONTROL's custom signWin.js script: failed: TARGET PATH NOT FOUND`)
return
}
try {
execSync(`smctl sign --fingerprint="${process.env.SM_CODE_SIGNING_CERT_SHA1_HASH}" --input "${String(configuration.path)}"`, {
stdio: 'inherit',
})
console.log("Signing using OpenBuilds CONTROL's custom signWin.js script: successful");
} catch (error) {
console.error("Signing using OpenBuilds CONTROL's custom signWin.js script: failed:", error);
}
}

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 144 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 144 KiB

5921
yarn.lock

Plik diff jest za duży Load Diff