M-x serial-term在windows不能正常工作?

RT,我最近在搞一些circuitpython的玩意,需要一个串口终端。尝试了putty和emacs的serial-term,putty是没问题的,serial-term是无论改什么设置(baud,流控制,停止位什么的都试过了)都没有任何输出,对于Control-C,Control-D这种组合键也没有任何反应。。。

所以有没有搞嵌入式的老哥知道这个要咋弄吗? :melting_face:

哈哈, Emacs 的 serial-term 与常规 串口 的不一样, 你应该询问 AI 有关: process-send-string 的使用, 串口 是一个进程(process)
我也是懂一点点, 还在摸索
等你深入了解了, 欢迎你的分享…

如果串口速率配置没问题,按理说你从另一头发数据这边肯定是有显示的,你的串口另一端是什么软件,linux shell吗?可能是行缓冲的问题,你配成raw mode就可以了。

串口另一端是一个python repl,而且似乎我在emacs serial term里面打字实际上python repl是能接收到的,但是python repl的任何输出emacs接收不到。我比较肯定不是编码问题,因为process-filter 设为 nil 也是一个字都收不到。

我试着装了一个串口模拟软件,然后用这个软件开两个 emacs serial term是能正常相互通信的,所以也有可能是circuitPython有问题,,好吧,想不出还有别的什么东西能debug,暂时先用putty吧

如果你发送没问题,但收不到东西,那看起来像是接收数据的中断没有处理,但是putty又是正常的,说明信号没问题,内核以下没问题,还是用户进程有问题。

才注意到是windows你用的是wsl2还是cygwin版本?

是msys2,windows原生emacs

那可能是cygwin的问题,cygwin会把COMx映射成/dev/ttySx,你也可以尝试从emacs下访问这个路径。

我查到一个已知问题是,cygwin使用行缓冲模式,默认阻塞输入,直到接收CR,你可以尝试发送硬编码的CRLF换行符试试。

/dev/ttySx 是只能通过mingw terminal访问的虚拟文件,因为是虚拟文件,在windows系统下面根本找不到,emacs打不开。。。不过msys2 repo里面有tio, 可以用tio打开这个,是能正常使用的。

我比较确定这个应该跟circuitpython serial console实际上是USB serial有关,putty里面除了COM port,别的设置随便乱改都不影响能正常连上,可能serial-term设计的时候没考虑这种设备吧