Contact me: hankecnc@gmail.com

探测错误(“错误的数字格式”) #1069

推推 grbl 3年前 (2023-01-23) 338次浏览

打开
dougkusanagi 打开了这个问题 2016 年 8 月 27 日 · 6条评论
打开

探测错误(“错误的数字格式”)#1069

dougkusanagi 打开了这个问题 2016 年 8 月 27 日 · 6条评论

注释

探测错误(“错误的数字格式”) #1069

我正在尝试在 PHP 中创建一个 gcode 发送器并测试一些发送我只是用一些数字得到了那个错误……

这是我收到的:

**恩维亚多:G0x50.0
雷西比多:
好的

Enviado:G0x40.0
Recebido:
错误:错误的数字格式

恩维亚多:G0x50.3
雷西比多:
好的**

那是我的代码:

<?php

// echo chr(10);

include "PHP-Serial/src/PhpSerial.php";

exec("mode COM8 BAUD=57600 PARITY=N data=8 stop=1 xon=off");

$serial = new phpSerial();

$serial->deviceSet("COM8");

$serial->confBaudRate(57600);       //Baud rate: 9600
$serial->confParity("none");            //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8);        //Character length     (this is the "8" in "8-N-1")
$serial->confStopBits(1);               //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none");

$serial->deviceOpen();
sleep(3);

if (ob_get_level() == 0) ob_start();            //Inicia o Buffer

$read = $serial->readPort();
echo "<pre>".$read."</pre>";

ob_flush();                         //Start Buffer
flush();                                //Send Buff

$gcode[] = "G0x50.0\n";
$gcode[] = "G0x40.0\n";
$gcode[] = "G0x50.3\n";

foreach ($gcode as $line) {
    echo "Enviado: " . $line . "</br>";
    $serial->sendMessage($line);

    $read = $serial->readPort();
    echo "Recebido: <pre>" . $read . "</pre>";

    ob_flush();
    flush();

    if(!$read == "ok"){
        $serial->deviceClose();
        die($read);
    }
}
探测错误(“错误的数字格式”) #1069
成员

Grbl的串口速率是115200。

探测错误(“错误的数字格式”) #1069
作者
dougkusanagi 评论了 2016 年 8 月 28 日  

我的GRBL不是新版本,所以波特率为57600 tnx for answer。
:)

那是因为我使用 Arduino Mega 2560 并且我无法在没有编译错误的情况下安装 grbl 9…但是如果有人知道这样做的方法我也很乐意尝试。

探测错误(“错误的数字格式”) #1069

这几乎可以肯定是奇偶校验错误。
从你调用mode命令的事实来看,我假设你在 Windows 上运行。
我似乎记得在 Windows 上 phpSerial 奇偶校验设置不能正常工作 – 每次更改设置时 Windows 都会默认所有其他设置。
尝试删除设置波特率、奇偶校验等的行(即介于deviceSet和之间deviceOpen),然后仅依赖mode命令并查看是否可行。
当然,如果您仍然有问题并希望得到帮助,您应该真正使用最新版本进行测试。

探测错误(“错误的数字格式”) #1069
作者

我在串行 php 类中尝试了注释设置波特率等…

`包括“PHP-Serial/src/PhpSerial.php”;

$序列号 = 新的 phpSerial();

$serial->deviceSet(“COM8”);
exec(“模式 COM8 BAUD=57600 PARITY=N data=8 stop=1 xon=off”);

// $串行->confBaudRate(57600); //波特率:9600
// $serial->confParity(“none”); //奇偶校验(这是“8-N-1”中的“N”)
// $serial->confCharacterLength(8); //字符长度(这是“8-N-1”中的“8”)
// $serial->confStopBits(1); //停止位(这是“8-N-1”中的“1”)
// $serial->confFlowControl(“none”);

$serial->deviceOpen();`

没用…

探测错误(“错误的数字格式”) #1069

没用…

如果您需要帮助,您应该提供比这更多的信息。这次你得到了什么输出?完全相同,还是不同?

我很确定这个问题只是由于 WIndows 上的 phpSerial 中的一个错误,因为你得到的错误将与不正确的奇偶校验(即除了“无”之外)一致。对于这个问题,2 年前实际上有一个未提交的 phpSerial 补丁,所以它看起来很不受支持。参见Xowap/PHP-Serial#10

也许您可以尝试该补丁,或者只是对这些行进行注释/取消注释或排序的其他组合。特别是,我会尝试将confParity调用移至列表末尾。

或者…在 Linux 上尝试,使用不同的串行库或其他语言 – Python 很好 :)

探测错误(“错误的数字格式”) #1069
作者

我尝试上传其他 GRBL 版本,准确地说是 grbl0.9f,手动配置模式并从代码中删除 phpSerial 并且出乎意料地工作了!
但是,现在我发送了更多行的 gcode 并从第 3 行开始,arduino 停止向我发送响应,并且什么都不返回……

`<?php

包括“PHP-Serial/src/PhpSerial.php”;

exec(“模式 COM8 BAUD=115200 PARITY=N data=8 stop=1 xon=off octs=off rts=on”);

@$fp = fopen (“COM8”, “r+”);
if (!$fp) {
die(“Porta não encontrada ou indisponível.”);
} else {
echo “打开”;
}

睡觉(3);

如果 (ob_get_level() == 0) ob_start(); //缓冲区初始化

$read = fread($fp, 1024*8);
回声“

".$read."

“;

�����[]=”$\n”;
$gcode[] = “g0x50\n”;
$gcode[] = “x50\n”;
$gcode[] = “x50\n”;

foreach ($gcode as $line) {
echo “Enviado: ” . $行。”
“;
fwrite($fp, $line);

$read = fread($fp, 1024*8);
echo "Recebido: <pre>" . $read . "</pre>";
// var_dump($read);

ob_flush();
flush();

// if(!$read == "ok"){
//  $serial->deviceClose();
//  die($read);
// }

}`

响应:

Open
Grbl 0.9f [‘$’寻求帮助]
������������������������������error: Expected command letter
Enviado: $$
Recebido:
$0=200.000 (x, step/mm)
$1=755.906 (y, step/mm)
$2=755.906 (z, step/mm)
$3=755.906 (x max rate, mm/min)
$4=0.000 (y max速度,mm/min)
$5=0.000 (z max rate, mm/min)
$6=0.000 (x accel, mm/sec^2)
$7=0.000 (y accel, mm/sec^2)
$8=50.000 (z accel , mm/sec^2)
$9=-0.050(x 最大行程,mm)
$10=200.001(y 最大行程,mm)
$11=200.000(z 最大行程,mm)
$12=10(步进脉冲,usec)
$13=0 (step port invert mask:00000000)
$14=192 (dir port invert mask:11000000)
$15=25 (step idle delay, msec)
$16=0.020 (junction deviation, mm)
$17=0.002 (arc tolerance, mm)
$19=0 (report inches, bool)
$20=1 (auto start, bool)
$21=0 (反转步骤启用,布尔)
$22=0(反转限制引脚,布尔)
$23=0(软限制,布尔)
$24=0(硬限制,布尔)
$25=0(归位周期,布尔)
$26=0(归位方向反转mask:00000000)
$27=25.000 (归位进给, mm/min)
$28=500.000 (归位寻道, mm/min)
$29=250 (归位去抖, msec)
$30=1.000 (归位牵引, mm)
ok
Enviado: g0x50
Recebido:
好的
Enviado:x50
Recebido:
Enviado:x50
Recebido:

喜欢 (0)