美文网首页
tcp send simple sample

tcp send simple sample

作者: Lacia | 来源:发表于2017-11-21 17:01 被阅读0次
    
    #-*-coding:UTF-8-*-
    from datetime import datetime
    import time
    import socket
    
    
    class dp_send():
        def __init__(self):
            self.__sock = None
            self.host = HOST
            self.port = PORT
            self.addr = (self.host,self.port)
    
        def connect(self):
        #def connect(self,host='10.10.30.54',port=30245):
            #ADDR = (host, port)
            try:
                self.__sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                self.__sock.connect(self.addr)
            except socket.error:
                print 'connect error!'
            return
        
        def send_auth(self,device_code):
            r = self.__sock.recv(1024)
            print datetime.now(), 'from server:', r
            message = ';' + device_code + '016011*af.'
            print('%s\r\n' % message)
            self.__sock.sendall(message)
    
        def send_number(self,device_code,channel_number=1):
            #发送通道数
            data1 = ';' + device_code + '023170cr' + str(channel_number) + '000' + str(channel_number) + '*af'      
            print('%s\r\n' % data1)     
            self.__sock.sendall('%s\r\n' % data1)
            
    
        def send_data(self,channel,channel_number=1,watermeter_number=3,reading=[]):
            #发送每个通道的信息及通道下的水表数据
            st = ''
            for i in reading:
                st = st + i
    
            data2 = ';' + channel + '023170crc' + str(channel_number) + '0' + str(channel_number) + '00' + str(watermeter_number) + '*af'
            print('%s\r\n' % data2)
            self.__sock.sendall('%s\r\n' % data2)
    
            #message = ';'+channel+ '561310db003' + reading[0] + reading[1] + reading[2] + '*af'
            message = ';'+channel+ '561310db00' + str(watermeter_number) + st + '*af'
    
            print('%s\r\n' % message)
            self.__sock.sendall('%s\r\n' % message) 
    
        def send_end(self,device_code):
            message = ';' + device_code + '024170cre10001*af'
            print('%s\r\n' % message)
            self.__sock.sendall(message)
    
    
        def disconnect(self):
            try:
                self.__sock.close()      
            except socket.error:
                print 'close socket error!'
                           
            return
    
    
    HOST = '10.10.30.54'
    PORT = 30245
    #PORT = 10000
    devicecode = '042005'
    channel_n = 1
    
    #水表数据,要录几个就写几个
    readings1 = ['033','022','023']
    readings2 = []
    readings3 = []
    
    dp = dp_send()
    dp.connect()
    #device_code:通讯机号
    dp.send_auth(device_code = devicecode)
    #device_code:通讯机号,channel_number:通道数量
    dp.send_number(device_code = devicecode ,channel_number=channel_n)
    #channel:通道号,channel_number:通道数(为1),water_meter_number:每个通道下的水表数量,reading:水表数据,为list类型
    
    
    dp.send_data(channel='620051',channel_number=1,watermeter_number=3,reading=readings1)
    
    #dp.send_data(channel='620031',channel_number=1,watermeter_number=3,reading=readings2)
    
    #dp.send_data(channel='620031',channel_number=1,watermeter_number=3,reading=readings3)
    
    
    #device_code:通讯机号
    dp.send_end(device_code = devicecode)
    print 'end'
    dp.disconnect()
    
    

    相关文章

      网友评论

          本文标题:tcp send simple sample

          本文链接:https://www.haomeiwen.com/subject/kdmwvxtx.html