更正。请参阅下面我自己的问题的答案。到Alien RFID阅读器的Python界面
我想通过与Python 2.7的TCP/IP接口与Alien RFID 9800阅读器进行通信。
但是,附加的测试代码不会超出读者登录范围,并且读者不会处理“Get ReaderName”命令。
我正在使用默认的用户名(外星人)和密码(密码)。事情从异形界面工作正常。登录交换有问题吗?什么是不对的?
import socket
cmdHost, cmdPort = '192.168.1.106', 23
CmdDelim = '\n' # Corrected from '\n\r' to '\n'. Delimiter of Alien commands (sent to reader).
ReaderDelim = '\r\n\0' # Delimiter of Alien reader responses (received from reader).
CmdPrefix = chr(1) # Causes Alien reader to suppress prompt on response.
def getResponse(conn):
''' Get the reader's response with correct terminator. '''
response = ''
while not response.endswith(ReaderDelim):
more = conn.recv(4096)
if not more:
break
response += more
return response
def GetReaderName():
''' Log into the reader, get the reader name, then quit. '''
print 'Sending commands to the Alien reader...'
cmdSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
cmdSocket.connect((cmdHost, int(cmdPort)))
except Exception as inst:
log('Reader Connection Failed: CmdAddr=%s:%d' % (cmdHost, cmdPort))
log('%s' % inst)
cmdSocket.close()
return False
# Read the initial header from the reader.
response = getResponse(cmdSocket)
print response
# UserName
cmdSocket.sendall('alien%s' % CmdDelim)
response = getResponse(cmdSocket)
print response
# Password
cmdSocket.sendall('password%s' % CmdDelim)
response = getResponse(cmdSocket)
print response
# Get ReaderName command
cmdSocket.sendall('%sGet ReaderName%s' % (CmdPrefix, CmdDelim))
response = getResponse(cmdSocket)
print response
# Quit
cmdSocket.sendall('%sQuit%s' % (CmdPrefix, CmdDelim))
response = getResponse(cmdSocket)
print response
cmdSocket.close()
return True
if __name__ == '__main__':
GetReaderName()
我得到外星人阅读头。但是,我什么都没有得到。上检查网络上的一些Java代码,一个 '\ n'[LR]定界符用于甚则记录 '\ r \ n'[CR] [LF]。 TCP/IP分隔符只是'\ n'[LF]? – EMS 2013-02-18 16:38:51