问题描述
尝试通过USB电缆连接到连接到MacBook Air的Tevo Tornado 3D打印机。 在终端中,我确定USB设备并尝试使用以下命令将其连接:
> js$ ls /dev/tty* | grep usb
/dev/tty.usbserial-1410
> js$ screen /dev/tty.usbserial-1410
如果我将打印机连接到运行OctoPrint软件的RaspBerry Pi,则可以在Pi的OctoPrint网页上查看终端输出,并进行以下交换:
Connecting to: /dev/ttyUSB0
Changing monitoring state from "Offline" to "opening serial port"
Connected to: Serial<id=0xabb411d0,open=True>(port='/dev/ttyUSB0',baudrate=250000,bytesize=8,parity='N',stopbits=1,timeout=10.0,xonxoff=False,rtscts=False,dsrdtr=False),starting monitor
Changing monitoring state from "opening serial port" to "Connecting"
Send: N0M110 N0*125
Send: N0 M110 N0*125
Recv: start
Recv: echo:Marlin TORNADO
Send: N0 M110 N0*125
Recv:
...
这列出了允许该软件成功连接到打印机的波特率和其他连接参数。回到终端,将打印机直接重新连接到Mac的USB端口,我尝试通过将上述信息输入到screen命令中来进行连接,如下所示:
screen /dev/tty.usbserial-14210 250000,cs8,-parenb,-cstopb,-ixoff
我也尝试了其他变体,但是它们都产生了上面没有响应的终端屏幕。 有人对我在做什么错以及如何使用Mac上的终端机连接到此USB设备有任何想法吗?
更新,在连接到打印机的章鱼上跑动,并得到以下结果:
pi@octopi:~ $ stty < /dev/ttyUSB0 -a
speed 0 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 0; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
-imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl
-echoke -flusho -extproc
Update2: 在OctoPi上查看源代码后,有一个名为comm.py的文件。它详细介绍了在切换奇偶校验设置时打开和关闭端口的过程。显然,这是某种常见的错误/功能???为了连接Python串行库,这是必须要做的,现在我可以这样做了。这是comm.py的代码,它是OctoPrint Source的一部分:
use_parity_workaround = settings().get(["serial","useParityWorkaround"])
needs_parity_workaround = get_os() == "linux" and os.path.exists("/etc/debian_version") # See #673
if use_parity_workaround == "always" or (needs_parity_workaround and use_parity_workaround == "detect"):
serial_obj.parity = serial.PARITY_ODD
serial_obj.open()
serial_obj.close()
serial_obj.parity = serial.PARITY_NONE
serial_obj.open()
尽管如此,我仍然不知道如何获取屏幕以执行此断开-更改奇偶连接过程。所以也许屏幕是不可能的??
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)