Python同时检查来自控制台和串行的输入吗?

mαττjαĸøb

我正在编写一个python应用程序,应用程序从控制台读取用户输入

buff = raw_input('Enter code: ')

并根据一系列算法生成和输出。

我的问题是该应用程序还通过串行连接到另一台设置某些状态配置属性的机器。要从串行(COM)端口读取字符串,我正在使用PySerial库:

ser = serial.Serial('/dev/ttyAMA0')
ser.baudrate = 115200
[...]
if not(ser.isOpen()):
  ser.open()
s = ser.readline()

如何同时检查两个输入raw_input()会停止执行程序,直到提交字符串为止,从而阻止检查在此期间是否通过串行端口发送了某些内容等待串行输入时同样适用。

我想避免多线程(代码在RaspberryPi上运行),因为它可能会增加过多的复杂性。

谢谢!j

雅各布·鲍耶(Jakob Bowyer)

选择是您的朋友例子取自这里

import sys
import select
import time

# files monitored for input
read_list = [sys.stdin]
# select() should wait for this many seconds for input.
# A smaller number means more cpu usage, but a greater one
# means a more noticeable delay between input becoming
# available and the program starting to work on it.
timeout = 0.1 # seconds
last_work_time = time.time()

def treat_input(linein):
  global last_work_time
  print("Workin' it!", linein, end="")
  time.sleep(1) # working takes time
  print('Done')
  last_work_time = time.time()

def idle_work():
  global last_work_time
  now = time.time()
  # do some other stuff every 2 seconds of idleness
  if now - last_work_time > 2:
    print('Idle for too long; doing some other stuff.')
    last_work_time = now

def main_loop():
  global read_list
  # while still waiting for input on at least one file
  while read_list:
    ready = select.select(read_list, [], [], timeout)[0]
    if not ready:
      idle_work()
    else:
      for file in ready:
        line = file.readline()
        if not line: # EOF, remove file from input list
          read_list.remove(file)
        elif line.rstrip(): # optional: skipping empty lines
          treat_input(line)

try:
    main_loop()
except KeyboardInterrupt:
  pass

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Eclipse中的Python输入功能不接受来自控制台的输入

来自分类Dev

隐藏来自控制台的输出

来自分类Dev

在rake任务中接受来自控制台/命令提示符的用户输入

来自分类Dev

测试程序,该程序使用来自控制台的用户输入运行

来自分类Dev

来自控制台的R readLines-如何用信号通知输入结束

来自分类Dev

来自控制台CentOS的Web浏览器

来自分类Dev

在 MIPS 程序集中存储来自控制台的矩阵

来自分类Dev

JDBC查询。根据来自控制台的输入检索记录。称为SQL语句的错误未正确结束

来自分类Dev

js控制台和rails控制台以不同的方式同时打印是正常的吗?

来自分类Dev

等待Windows API中的串行接收事件和控制台输入事件

来自分类Dev

等待Windows API中的串行接收事件和控制台输入事件

来自分类Dev

在验证用户输入的同时保持对控制台输入的控制

来自分类Dev

没有收到来自控制台的firebase通知

来自分类Dev

来自控制台的错误消息,指出未定义res

来自分类Dev

来自控制台的Runnig Zend Framework 2操作不起作用

来自分类Dev

来自控制台的带有引号/空格的 Javafx 命名参数

来自分类Dev

从 sshj 启动时,来自控制台的命令不运行

来自分类Dev

如何从串行控制台在Unity和GNOME(或恢复控制台)之间切换

来自分类Dev

在控制台中同时输入和输出

来自分类Dev

Python控制台GUI在获取键盘输入的同时进行更新

来自分类Dev

Python,Flask同时打印到控制台和日志文件

来自分类Dev

为什么在Linux中使用串行控制台时无法输入输入?

来自分类Dev

ESLint同时输出到文件和控制台

来自分类Dev

使用pyinstaller同时显示窗口和控制台

来自分类Dev

OSX上的串行控制台登录

来自分类Dev

串行控制台偶尔混乱

来自分类Dev

在插入的USB串行设备上创建串行控制台

来自分类Dev

从控制台以格式输入

来自分类Dev

从控制台获取输入

Related 相关文章

  1. 1

    Eclipse中的Python输入功能不接受来自控制台的输入

  2. 2

    隐藏来自控制台的输出

  3. 3

    在rake任务中接受来自控制台/命令提示符的用户输入

  4. 4

    测试程序,该程序使用来自控制台的用户输入运行

  5. 5

    来自控制台的R readLines-如何用信号通知输入结束

  6. 6

    来自控制台CentOS的Web浏览器

  7. 7

    在 MIPS 程序集中存储来自控制台的矩阵

  8. 8

    JDBC查询。根据来自控制台的输入检索记录。称为SQL语句的错误未正确结束

  9. 9

    js控制台和rails控制台以不同的方式同时打印是正常的吗?

  10. 10

    等待Windows API中的串行接收事件和控制台输入事件

  11. 11

    等待Windows API中的串行接收事件和控制台输入事件

  12. 12

    在验证用户输入的同时保持对控制台输入的控制

  13. 13

    没有收到来自控制台的firebase通知

  14. 14

    来自控制台的错误消息,指出未定义res

  15. 15

    来自控制台的Runnig Zend Framework 2操作不起作用

  16. 16

    来自控制台的带有引号/空格的 Javafx 命名参数

  17. 17

    从 sshj 启动时,来自控制台的命令不运行

  18. 18

    如何从串行控制台在Unity和GNOME(或恢复控制台)之间切换

  19. 19

    在控制台中同时输入和输出

  20. 20

    Python控制台GUI在获取键盘输入的同时进行更新

  21. 21

    Python,Flask同时打印到控制台和日志文件

  22. 22

    为什么在Linux中使用串行控制台时无法输入输入?

  23. 23

    ESLint同时输出到文件和控制台

  24. 24

    使用pyinstaller同时显示窗口和控制台

  25. 25

    OSX上的串行控制台登录

  26. 26

    串行控制台偶尔混乱

  27. 27

    在插入的USB串行设备上创建串行控制台

  28. 28

    从控制台以格式输入

  29. 29

    从控制台获取输入

热门标签

归档