美文网首页
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