Contact me: hankecnc@gmail.com

连接到拦截会给出“[errno 22] 无效参数” #1094

推推 grbl 3年前 (2023-02-02) 186次浏览
关闭
vatral 打开了这个问题 2018 年 12 月 11 日 · 4条评论
关闭

连接到拦截会给出“[errno 22] 无效参数”#1094

vatral 打开了这个问题 2018 年 12 月 11 日 · 4条评论

评论

连接到拦截会给出“[errno 22] 无效参数” #1094
贡献者

我一直在尝试使用拦截的建议方法对 smoothieboard 的问题进行一些调试。不幸的是它没有连接。

尝试连接后,我立即得到:“[Errno 22] 无效参数”

看起来问题在于:

ioctl(5, TIOCMBIS, [TIOCM_DTR]) = -1 EINVAL (Invalid argument)

我不确定这是否是由于不支持所需的 ioctl 而导致的拦截中的错误,或者是 bCNC 中的错误,因为没有忽略建议的拦截未提供的缺失。

$ groups
vadim wheel dialout mock libvirt

$ sudo interceptty -l /dev/ttyACM_cnc  /dev/ttyACM_cnc_intercept | interceptty-nicedump 2>&1 | tee dump.log                                                                                                                                         

$ ls -l /dev/ttyACM_cnc_intercept  
lrwxrwxrwx. 1 root root 10 Dec 10 20:15 /dev/ttyACM_cnc_intercept -> /dev/pts/4

$ ls -l /dev/pts/4
crw-rw----. 1 root dialout 136, 4 Dec 10 20:15 /dev/pts/4

$ ls -l /dev/ttyACM_cnc
lrwxrwxrwx. 1 root root 7 Dec 10 19:56 /dev/ttyACM_cnc -> ttyACM1
 
$ ls -l /dev/ttyACM1   
crw-rw----. 1 root dialout 166, 1 Dec 10 20:06 /dev/ttyACM1

跟踪:


42207 10285 openat(AT_FDCWD, "/dev/ttyACM_cnc_intercept", O_RDWR|O_NOCTTY|O_NONBLOCK <unfinished ...>
42208 10300 <... socket resumed> )            = 4
42209 10300 setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
42210 10300 bind(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("0.0.0.0")}, 16 <unfinished ...>
42211 10285 <... openat resumed> )            = 5                                                                                                                                                                                                                                 
42212 10285 ioctl(5, TCGETS <unfinished ...>
42213 10300 <... bind resumed> )              = 0
42214 10285 <... ioctl resumed> , {B38400 -opost -isig -icanon -echo ...}) = 0
42215 10300 futex(0x5624e8aaee10, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, 0xffffffff <unfinished ...>
42216 10285 futex(0x5624e8aaee10, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
42217 10300 <... futex resumed> )             = -1 EAGAIN (Resource temporarily unavailable)
42218 10285 <... futex resumed> )             = 0
42219 10300 getsockname(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
42220 10285 ioctl(5, TCGETS <unfinished ...>
42221 10300 futex(0x5624e8aaee10, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, 0xffffffff <unfinished ...>
42222 10285 <... ioctl resumed> , {B38400 -opost -isig -icanon -echo ...}) = 0
42223 10285 ioctl(5, SNDCTL_TMR_START or TCSETS, {B115200 -opost -isig -icanon -echo ...}) = 0
42224 10285 ioctl(5, TCGETS, {B115200 -opost -isig -icanon -echo ...}) = 0
42225 10285 futex(0x5624e8aaee10, FUTEX_WAKE_PRIVATE, 1) = 1
42226 10300 <... futex resumed> )             = 0
42227 10285 ioctl(5, TIOCMBIS, [TIOCM_DTR])   = -1 EINVAL (Invalid argument)

我有另一个错误中建议的 spy:/// 端口 URL 的解决方法,因此这不是关键问题。但是,github 页面底部建议的调试方法存在问题:

https://github.com/vlachoudis/bCNC

连接到拦截会给出“[errno 22] 无效参数” #1094
合作者
哈维 评论了 2018 年 12 月 13 日  

是的,我认为这种方法已经过时,我将从文档中删除它。spy:// 是现在的方式,因为拦截只适用于 linux,而 spy 适用于所有平台。

但是它应该可以工作(我一直在使用它)。尝试使用更保守的命名方式。像 /dev/ttyUSB9 而不是 /dev/ttyACM_cnc。还要检查您的权限。

连接到拦截会给出“[errno 22] 无效参数” #1094
贡献者作者

上面引用了权限,它们都是:

crw-rw----. 1 root dialout

我在拨出组中。

命名对我来说很好,没有拦截。bCNC 可以很好地找到并连接到 /dev/ttyACM_cnc。

它也应该得到支持,因为通过 udev 的固定名称是我非常想要的标准 Linux 功能。该计算机还连接到 3D 打印机和 Arduino 开发板,处理随机更改的端口名称很痛苦。

连接到拦截会给出“[errno 22] 无效参数” #1094
合作者

该计算机还连接到 3D 打印机和 Arduino 开发板,处理随机更改的端口名称很痛苦。

USB 是该死的地狱。我在单个服务器中有 16 个 USB 转串口转换器。只要它们来自单一制造商,就没有机会区分它们。您可以尝试告诉他们他们连接到哪个 USB 插座。但是,当您的员工一直在更改连接时,这并不实用。此外,它们连接在多个 USB 集线器中,出于同样的原因,无法区分它们。地狱地狱地狱。

连接到拦截会给出“[errno 22] 无效参数” #1094
贡献者作者

关闭,因为现在它似乎已经过时了