tcp send simple sample


#-*-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()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容