无法打开串行端口,或使用pyseri从串行端口读取数据

2024-05-23 18:01:14 发布

您现在位置:Python中文网/ 问答频道 /正文

背景:当PXE获得一个IP地址时,我试图自动重启服务器。这是为了重新生成一个问题,唯一的方法是在每次重新启动的同时冷启动它。我已经厌倦了手工操作,到目前为止,我已经花了10个小时在这个脚本和故障排除上了。

我试图从服务器上的串行控制台读取行,同时查找某个字符串,然后发出重新启动命令。在

现在,我能让这个脚本响应串行控制台上的内容的唯一方法是关闭服务器电源,启动minicom,打开服务器电源,当文本启动时,我可以不重置就退出minicom,然后启动我的脚本。在

第一次运行时,脚本运行良好,甚至最后的iLO命令也能正常工作,然后它重新启动while循环,但之后我再也没有从控制台获得任何输出。在

似乎我没有正确地打开串行端口,但是我打印了get_设置,波特率、停止位等都是正确的。在

我搜索并使用了来自许多不同地方的代码片段来拼凑这个脚本,我真的很沮丧,因为我不能独立运行这个脚本。在

[root@localhost ~]# python2 bootorder.py 
{'parity': 'N', 'baudrate': 115200, 'bytesize': 8, 'xonxoff': False, 'rtscts': False, 'timeout': None, 'inter_byte_timeout': None, 'stopbits': 1, 'dsrdtr': False, 'write_timeout': None}

正如您在上面看到的,当我运行它时,我打印出串行端口设置,它们与minicom和服务器端的串行控制台相匹配。在

那么minicom在做什么来打开我在脚本中没有做的端口呢?我已经从很多网站上看到了一些例子,而且它有时也会起作用,我只是不知道如何让它自己起作用。在

这是我的剧本:

^{pr2}$

感谢您的投入和帮助!在


Tags: 方法端口命令服务器脚本nonefalsetimeout
1条回答
网友
1楼 · 发布于 2024-05-23 18:01:14

它可能会节省一些与串行端口中的其他线路有关的东西:DTR、DSR等。它们的使用常常不一致,而且它们经常被用于其他目的而不是预期用途。在

也许minicom使用DTR来初始化连接。请尝试在序列号open后面添加这个。在

s.setDTR(False)
sleep(0.025)
s.setDTR(True)

相关问题 更多 >