【问题标题】:Python checking for serial string in If statementPython 检查 If 语句中的串行字符串
【发布时间】:2013-10-01 16:52:19
【问题描述】:

作为 python 的新手,我正在尝试使用它来读取文件并将文件的每一行写入 RS-232 端口。我的下面的代码似乎大部分都可以工作,除了我的听和反应部分。从四处寻找,如果我从我的设备 (RS-232) 收到“开始\r”或“结束\r”字符串,我的 if 语句似乎无法读取。任何人都可以就缺少的内容提供反馈吗?

import serial
import time

port = "/dev/ttyS0"
speed = 9600

print("\n\n\n\nScript Starting\n\n\n")

ser = serial.Serial(port, speed, timeout=0) 

ser.flushInput() #flush input buffer, discarding all its contents
ser.flushOutput()#flush output buffer, aborting current output and discard all that is in buffer

text_file = open("my.file", "r")
lines = text_file.read().split('\n')
i = 0
counter = 0


while i<len(lines):

    response = ser.readline()

    if (counter == 0):
        print("\n\nProbing With Off Data\n")
        ser.write('FFF')
        ser.write('\r')
        counter+=1

    if (response == 'Start'):

        ser.write('FFF')
        ser.write('\r')

    if (response == 'End'):
        print("\nString Transmitted:")
        print lines
        make_list_a_string = ''.join(map(str, lines))
        ser.write(make_list_a_string)
        ser.write('\r')
        print("\n")
        i+=1




text_file.close()
exit(0)

【问题讨论】:

  • 您得到什么错误或不正确的行为?如果您遇到异常,请发布完整的堆栈跟踪。你想发生什么?此外,一些基本的调试是个好主意 - 你在 response 中得到什么值 - 添加 print() 并告诉我们它与你的预期有何不同。

标签: python linux serial-port


【解决方案1】:

尝试使用 strip() 删除任何尾随或前面的 '\r's:

if (response.strip() == 'Start'):

【讨论】:

    猜你喜欢
    • 2015-12-02
    • 2021-02-16
    • 2013-10-03
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    相关资源
    最近更新 更多