当前位置: 首页 > news >正文

网站备案期招聘网站排名

网站备案期,招聘网站排名,怎么制作网站软件下载,动态网站 静态网站文章目录 openpnp - Warning - Unknown firmware概述笔记https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares备注END openpnp - Warning - Unknown firmware 概述 接上飞达控制板后, 显示未知固件的警告 开始没看源码之前, 总以为是回答的版本号不合适, …

文章目录

    • openpnp - Warning - Unknown firmware
    • 概述
    • 笔记
    • https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares
    • 备注
    • END

openpnp - Warning - Unknown firmware

概述

接上飞达控制板后, 显示未知固件的警告
在这里插入图片描述
开始没看源码之前, 总以为是回答的版本号不合适, 就照着冰沙板子回的版本号来回固件版本. 还是有这个警告.
现在已经在使用自己编译出来的openpnp, 就想去看看这个警告咋来的.

笔记

判断是否有未知固件的函数为 findIssues()
D:\my_openpnp\openpnp_dev_2022_0801\src\main\java\org\openpnp\machine\reference\solutions\GcodeDriverSolutions.java

public void findIssues(Solutions solutions) {
// ...
if (gcodeDriver.getFirmwareProperty("FIRMWARE_NAME", "").contains("Smoothieware")) {firmware = (gcodeDriver.getFirmwareProperty("X-GRBL_MODE", "").contains("1"))? FirmwareType.SmoothiewareGrblSyntax : gcodeDriver.getFirmwareProperty("FIRMWARE_VERSION", "").contains("chmt-")?FirmwareType.SmoothiewareChmt : FirmwareType.Smoothieware;firmwareAxesCount = Integer.valueOf(gcodeDriver.getFirmwareProperty("X-AXES", "0"));if (firmware == FirmwareType.SmoothiewareChmt) {// OK, CHMT STM32 Smoothieware board. Take PAXES == 5 if missing (legacy build).firmwarePrimaryAxesCount = Integer.valueOf(gcodeDriver.getFirmwareProperty("X-PAXES", "5"));}else if (gcodeDriver.getFirmwareProperty("X-SOURCE_CODE_URL", "").contains("best-for-pnp")) {// OK, regular Smoothieboard with pnp firmware.firmwarePrimaryAxesCount = Integer.valueOf(gcodeDriver.getFirmwareProperty("X-PAXES", "3"));}else {solutions.add(new Solutions.PlainIssue(gcodeDriver, "There is a better Smoothieware firmware available. "+gcodeDriver.getDetectedFirmware(), "Please upgrade to the special PnP version. See info link.", Severity.Error, "https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#smoothieware"));}if (firmwarePrimaryAxesCount != null && firmwarePrimaryAxesCount != firmwareAxesCount) {solutions.add(new Solutions.PlainIssue(gcodeDriver, "Smoothieware firmware should be built with the PAXIS="+firmwareAxesCount+" option.", "Download up-to-date firmware optimized for OpenPnP, or if you build the firmware yourself, please use the `make AXIS="+firmwareAxesCount+" PAXIS="+firmwareAxesCount+"` command. See info link.", Severity.Warning, "https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#smoothieware"));}}else if (gcodeDriver.getFirmwareProperty("FIRMWARE_NAME", "").contains("Duet")) {firmware = FirmwareType.Duet;String firmwareVersion = gcodeDriver.getFirmwareProperty("FIRMWARE_VERSION", "0.0");Integer major = null;Integer minor = null;try {Matcher matcher =Pattern.compile("(?<major>-?\\d+)\\.(?<minor>-?\\d+).*").matcher(firmwareVersion);matcher.matches();major = Integer.parseUnsignedInt(matcher.group("major"));minor = Integer.parseUnsignedInt(matcher.group("minor"));}catch (Exception e) {Logger.warn(e);}if (major == null || minor == null|| major < 3 || (major == 3 && minor < 3)) {solutions.add(new Solutions.PlainIssue(gcodeDriver,"Duet3D firmware was improved for OpenPnP, please use version 3.3beta or newer. Current version is "+firmwareVersion,"Get the new version through the linked web page.",Severity.Error,"https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#duet"));}if (gcodeDriver.getConfiguredAxes() != null) {try {Matcher matcher =Pattern.compile(".*\\s(?<axes>-?\\d+)\\saxes\\svisible.*").matcher(gcodeDriver.getConfiguredAxes());matcher.matches();firmwareAxesCount = Integer.parseUnsignedInt(matcher.group("axes"));}catch (NumberFormatException e) {// ignore}if (gcodeDriver.getConfiguredAxes().contains("(r)")) {solutions.add(new Solutions.PlainIssue(gcodeDriver,"Axes should be configured as linear in feedrate calculations on the Duet controller. See the linked web page.","Use the M584 S0 option in your config.g file.",Severity.Error,"https://duet3d.dozuki.com/Wiki/Gcode#Section_M584_Set_drive_mapping"));}else {firmwarePrimaryAxesCount = firmwareAxesCount;}}}else if (gcodeDriver.getFirmwareProperty("FIRMWARE_NAME", "").contains("Marlin")) {firmware = FirmwareType.Marlin;firmwareAxesCount = Integer.valueOf(gcodeDriver.getFirmwareProperty("AXIS_COUNT", "0"));if (firmwareAxesCount > 3) { firmwarePrimaryAxesCount = firmwareAxesCount;}else {solutions.add(new Solutions.PlainIssue(gcodeDriver, "Marlin firmware is not reporting support for rotation axes (A B C). "+gcodeDriver.getDetectedFirmware(), "Please upgrade the firmware and/or axis configuration. See the info link.", Severity.Error, "https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#marlin-20"));}}else if (gcodeDriver.getFirmwareProperty("FIRMWARE_NAME", "").contains("TinyG")) {// Having a response already means we have a new firmware.firmware = FirmwareType.TinyG;}else if (gcodeDriver.getFirmwareProperty("FIRMWARE_NAME", "").contains("Grbl")) {firmware = FirmwareType.Grbl;}else if (gcodeDriver.getFirmwareProperty("FIRMWARE_NAME", "").contains("GcodeServer")) {firmware = FirmwareType.Generic;}else { solutions.add(new Solutions.PlainIssue(gcodeDriver, "Unknown firmware. "+gcodeDriver.getDetectedFirmware(), "Check out firmwares known to be well supported. See info link.", Severity.Warning, "https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares"));}// ...
}

看了判断是否为未知固件的实现, 明白了.
原来openpnp只支持几种御用固件, 其他的固件都是未知固件.
在代码中, 看到openpnp支持的御用固件如下:

Smoothieware
Duet
Marlin
TinyG
Grbl
GcodeServer

以前和一个同学讨论, 他问一个主板是否支持openpnp, 我当时现去查, 看到有个openpnp硬件项目拟采用那个主板, 才知道那个主板可以用做openpnp的主板.

现在看了代码就很清楚了, openpnp就支持有限的几种御用主板.

如果不是openpnp主板, 而是辅助用的飞达控制板, 出现这种未知固件的警告是不用担心的, 将这个警告禁止掉就行.
飞达控制板不涉及到openpnp硬件的运动位置, 只在固定位置送料, 这种只要送料控制好使就行.

下面是openpnp未知主板固件的提示信息

                else { solutions.add(new Solutions.PlainIssue(gcodeDriver, "Unknown firmware. "+gcodeDriver.getDetectedFirmware(), "Check out firmwares known to be well supported. See info link.", Severity.Warning, "https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares"));}

看到给出了官方openpnp支持的主板固件的wiki连接.
看了一下, 知道了如果用于openpnp, 主板需要支持哪些特性(GCode)

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares

主板固件支持异步GCode驱动和高级运动控制.
不过异步GCode驱动停危险的, 同步GCode驱动就够用了.
异步GCode驱动的官方wiki GcodeAsyncDriver
高级运动控制的官方wiki Advanced Motion Control

openpnp要求的主板关键特性:

  • 支持M115命令, 用来向openpnp上报固件版本, 好让openpnp能判断固件.
  • 必须支持除了X, Y, Z之外的附加轴(A, B, C)控制, 而且可以使多个轴的混合控制好使.
  • 支持M114命令, 用来上报所有轴的位置.
  • 支持G92命令, 用来让每个轴位置归零.
  • 支持M400命令, 用来等待移动完成. 在移动完成之前, 通讯必须是阻塞的. (在M400之后, 可能会发送其他命令, 但是移动完成之前, 必须阻塞住, 不能执行后续的指令)
  • 必须支持M204(加速度控制), M201.3(禁止加速)
  • 最好内置GcodeServer控制器模拟器(可选), 用来和openpnp联调, 用来确定openpnp发送的指令能产生正确的动作和效果.

官方御用的主板和固件如下:
Duet3D => https://docs.duet3d.com/en/Duet3D_hardware/Hardware_overview

RepRapFirmware

只是固件, 板子支持多种, 没细看.

Smoothieware 官方特意说, 不支持中国同学做的山寨版冰沙, 不过都是吓唬人, 用起来挺好的.
冰沙有第三方出的新固件 => makr.zone: “Smoothieware: New Firmware for PnP”

Marlin 2.0

TinyG

备注

对换冰沙主板之外的板子, 不感兴趣. 因为都是钱和时间啊, 等以后时机到了, 再折腾其他主板.

END

http://www.wooajung.com/news/29213.html

相关文章:

  • 做网站需要规划好什么google免费入口
  • 网站关闭多久排名会下降百度大数据平台
  • 做品牌特价的网站优化营商环境条例心得体会
  • 帮人做诈骗网站 获利13万seo网站优化流程
  • 自己做的网站怎么给别人访问seo前线
  • 重庆网站建设培训sem是做什么的
  • 网站结构合理平台怎么推广技巧
  • 郑州网站建设包括哪些制作公司网页多少钱
  • 商丘网站建设想象力网络百度客服人工
  • 山东省住房和建设网站首页品牌策略有哪些
  • 深圳投资推广署官网seo公司 引擎
  • 海南网站建设中心全球搜是什么公司
  • 电子商务专升本可以报什么专业上海专业seo公司
  • 中企动力免费做网站网站优化推广的方法
  • 会计网站模板百度指数怎么用
  • 网站开发工具 枫子科技怎样利用互联网进行网络推广
  • vb2010做网站上海网站排名优化怎么做
  • 大团网站建设微商软文
  • 郑州网站建设网络公司软文自助发稿平台
  • 网站付款链接怎么做的网络营销的概念及特点
  • 网站开发日程安排百度人工
  • 住房和城乡建设部网站北京游戏推广怎么快速拉人
  • 商城网站平台怎么做企业网站管理系统怎么操作
  • 哈尔滨餐饮网站建设宁波seo网络推广报价
  • 郑州微信网站制作百度门店推广
  • 做网站的网页用什么软件好网站的优化从哪里进行
  • 石家庄电子商城网站建设济南seo网络优化公司
  • 做的好的装修公司网站搜索引擎优化的主要工作有
  • 网站上的洗衣液瓶子做花瓶怎么材质第三方网站流量统计
  • 网站qq线客服咋做seo从0到1怎么做