发送短信时pySerial获取writeTimeout

嗨,
我在使用PYSERIAL的串口连接上得到了一个写入超时。这是我的代码。

选择 | 换行 | 行号
  1. ser = serial.Serial('COM10',
  2.                         baudrate=115200,
  3.                         timeout=2,
  4.                         writeTimeout = 2,
  5.                         bytesize=serial.EIGHTBITS,
  6.                         parity=serial.PARITY_NONE,
  7.                         stopbits=serial.STOPBITS_ONE)
  8. ser.flushOutput()
  9. ser.flushInput()
  10.  
  11. print "PDU LENGTH", pdu.length # the length of the pdu
  12. ser.write('AT+CMGS=%d\r' % pdu.length)
  13. print ser.readlines()
  14. time.sleep(1)
  15. # write the PDU and send a Ctrl+z escape
  16. print "PDU", pdu.pdu # the pdu string
  17. ser.write('%s\x1a' % pdu.pdu) # this i about where my app stops and throws a writeTimeout
  18. print "sent pdu"
  19. time.sleep(1)
  20. print ser.readlines()
  21.  

我得到的错误是:

选择 | 换行 | 行号
  1. Traceback (most recent call last):
  2.   File "C:\Users\Andreas\Documents\My Dropbox\Programmering\Projects\SMSTerminal\src\SMSSender.py", line 52, in <module>
  3.     send_text('41603627', 'r'*200)
  4.   File "C:\Users\Andreas\Documents\My Dropbox\Programmering\Projects\SMSTerminal\src\SMSSender.py", line 36, in send_text
  5.     ser.write('%s\x1a\r' % pdu.pdu)
  6.   File "c:\Python26\lib\site-packages\serial\serialwin32.py", line 260, in write
  7.     raise writeTimeoutError
  8. serial.serialutil.SerialTimeoutException: Write timeout
  9.  

我已尝试延长写入和读取超时时间,但没有成功
有没有人经历过同样的问题?
我在超级终端中尝试了相同的命令,它起作用了。
安德烈亚斯

# 回答1

选择 | 换行 | 行号
  1. ser = serial.Serial('COM10',

您有10个串口吗?此外,pySeries使用的是
Serer=Serial.Serial(0)#打开第一个串口

Ser=seral.Serial('/dev/ttyS0')
AFAIK
此外,您还应该使用以下任一语句检查连接
Print ser.portstr#检查实际使用的端口
Print ser.isOpen()

# 回答2


谢谢你的回答,是的。当我把我的手机连接到我的USB时,它有2个串口,我现在已经连接了几个,它只是每次都计数,而不是问题。
端口是打开的,因为我能够发送第一个命令,但当我尝试发送长度约为200个字符的PDU时,它抛出一个写入错误。我在超级终端中尝试了完全相同的功能,它在超级终端中也可以工作。
无论如何,感谢您的快速回复:)
# 回答3


我将为长度和类型添加一条打印语句,并分别发送CTRL-Z以隔离所有内容。

选择 | 换行 | 行号
  1. print "PDU", pdu.pdu # the pdu string
  2. print len(pdu.pdu), type(pdu.pdu)
  3. ser.write('%s' % pdu.pdu) # this i about where my 
  4. print "pdu.pdu sent"
  5. ser.write('\x1a') 

标签: python

添加新评论