123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import sys,os,time
- reload(sys)
- sys.setdefaultencoding('utf-8')
- import struct,binascii
- class C3316A_CmdParse():
- def __init__(self):
-
- self.Command = ''
-
- self.Data = ''
-
- self.CmdType = ''
-
- self.EOF = '\r'
-
- self.Separator = ','
-
- self.Result = ''
- '''
- 描述:将参数根据协议格式转化为协议指令;
- 参数:
- command:协议命令码;
- data:协议命令码数据;
- ctrl:True表示是控制命令, False表示是设置命令;
- 注意:command, data传递的是字符串类型;
- 返回:返回要发送到串口中的数据包;
- '''
- def parseCommand(self, command, data, ctrl = True):
- self.Command = command
- if ctrl == True:
- self.CmdType = '='
- self.Data = data
- else:
- self.CmdType = '?'
- self.Data = ''
- package = self.Command + self.CmdType + self.Data + self.EOF
- return package
-
- def parseCmdLine(self, cmdline):
- chIndex = cmdline.find('=')
- if chIndex == -1:
- chIndex = cmdline.find('?')
- if chIndex == -1:
- return None
- self.CmdType = '?'
- else:
- self.CmdType = '='
-
- self.Command = cmdline[:chIndex]
-
- self.Data = cmdline[chIndex+1:cmdline.find(self.EOF)]
-
- package = self.Command + self.CmdType + self.Data + self.EOF
- return package
- '''
- 描述:解析读串口数据是否正确返回;
- 参数:data:串口返回的数据(设备响应数据);
- 返回:命令有效返回True,否则返回False
- '''
- def parseResult(self, data):
- if data.__len__() == 0:
- return False
-
- index = data.find('=')
- if index == -1:
- return False
-
- if self.CmdType == '?':
- header = data[:index]
- if header.lower() == self.Command.lower():
- self.Result = data[index+1:data.find(self.EOF)]
- return True
-
- self.parseResponse(data[index+1:])
- return False
- else:
- return self.parseResponse(data[index+1:])
-
- '''
- 描述:解析设备RVOPE返回值;
- 参数:rvope;
- 返回:命令有效返回True,否则返回False
- '''
- def parseResponse(self, rvope):
-
- if rvope[0] == '1':
- print 'Command Error'
- return False
-
-
- if rvope[1] == '1':
- print 'Parameter Error'
- return False
-
- if rvope[2] == '1':
- print 'Busy Error'
- return False
-
-
- return True
-
- if __name__ == "__main__":
- pass
-
|