Parcourir la source

tcp客户端;

scbc.sat2 il y a 5 ans
Parent
commit
09db75da99
2 fichiers modifiés avec 193 ajouts et 0 suppressions
  1. 103 0
      Chroma22293/Chroma22293.py
  2. 90 0
      Chroma22293/baseClient.py

+ 103 - 0
Chroma22293/Chroma22293.py

@@ -0,0 +1,103 @@
+# -*- coding:utf-8 -*-
+import os
+import sys
+import time
+import json
+from baseClient import BaseClient
+import numpy as np
+
+class C22293Manager(BaseClient):
+    def __init__(self):
+        BaseClient.__init__(self)  # python 继承方式  
+        self.device_name = "Chroma22293"     
+
+    def setPattern(self, pattern, device=''):
+        self.device_id = 1
+        self.device_cmd = 'run ptn %s;\r' % pattern
+        result = self.sendmsg()
+        return result
+
+    def setTiming(self, timing, device=''):
+        self.device_id = 1
+        self.device_cmd = 'run tim %s;\r' % timing
+        result = self.sendmsg()
+        return result
+
+    def setTimingPattern(self, timing, pattern, device=''):
+        self.device_id = 1
+        self.device_cmd = 'run tim %s;run ptn %s;\r' % timing, pattern
+        result = self.sendmsg()
+        return result
+
+    def getDeviceName(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'report model;\r'
+        result = self.sendmsg()
+        return result
+
+    def getDeviceSoft(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'report ver;\r'
+        result = self.sendmsg()
+        return result
+
+    def getStatus(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'dummy;\r'
+        result = self.sendmsg()
+        return result
+
+    def setBlueOFF(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'b off;\r'
+        result = self.sendmsg()
+        return result
+
+    def setBlueON(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'b on;\r'
+        result = self.sendmsg()
+        return result
+
+    def setGreenOFF(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'g off;\r'
+        result = self.sendmsg()
+        return result
+
+    def setGreenON(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'g on;\r'
+        result = self.sendmsg()
+        return result
+
+    def setRedOFF(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'r off;\r'
+        result = self.sendmsg()
+        return result
+
+    def setRedON(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'r on;\r'
+        result = self.sendmsg()
+        return result
+
+    def setKeyBoardLock(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'kb lock on;\r'
+        result = self.sendmsg()
+        return result
+
+    def setKeyBoardUnLock(self, device=''):
+        self.device_id = 1
+        self.device_cmd = 'kb lock off;\r'
+        result = self.sendmsg()
+        return result
+
+if __name__ == "__main__":
+    c2 = C22293Manager()
+    print c2.getDeviceName()
+    # ProHead = np.dtype({'names': ['version', 'len'], 'formats': ['B', 'i']})
+    # a = np.array([(0xAA, 80)], dtype=ProHead)
+    # print a, a.__len__(), a.itemsize

+ 90 - 0
Chroma22293/baseClient.py

@@ -0,0 +1,90 @@
+# -*- coding:utf-8 -*-
+import os, sys, time
+import abc
+import socket
+import json
+import numpy as np
+
+#创建ProHeader数据类型
+ProHead = np.dtype({'names': ['version', 'len'], 'formats': ['u1', 'u4']})
+
+class BaseClient(object):
+    __metaclass__ = abc.ABCMeta
+
+    def __init__(self):
+        """设备id"""
+        self.device_id = 0
+        '''设备名称'''
+        self.device_name = ""
+        '''设备命令'''
+        self.device_cmd = ""
+
+        '''通信sock'''
+        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        '''通信端口号'''
+        self.port = 5566
+        '''通信状态'''
+        self.constate = False
+
+    def __def__(self):
+        self.disconnect()
+
+    def connect(self):
+        try:
+            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+            self.sock.connect(('127.0.0.1', self.port))  # 没有返回值;
+            self.sock.sendall('111')
+            self.constate = True
+        except Exception, e:
+            print "LoggingUtil:client=> socket connect error:", e, self.port
+            self.constate = False
+
+        return self.constate
+
+    # 发送消息;
+    def sendmsg(self):
+        if self.constate is False:
+            if self.connect() is False:
+                return None
+
+        msg_json = ""
+        msg_dict = {'device_id': self.device_id, 'device_name': self.device_name, "device_cmd": self.device_cmd}
+        try:
+            msg_json = json.dumps(msg_dict)
+        except Exception:
+            print "LoggingUtil:client=> to json error:", msg_dict
+            return None
+
+        try:
+            self.sock.settimeout(1)
+            phead = np.array([(0xAA, msg_json.__len__() + np.array([(0xAA, 0)], dtype=ProHead).itemsize)], dtype=ProHead)
+            # self.sock.sendall(phead.tobytes() + bytearray(msg_json))
+            # self.sock.send(msg_json)
+            self.sock.sendall(bytearray(phead.tobytes() + bytes(msg_json)))
+            # self.sock.sendall(phead.tobytes())
+            # self.sock.sendall(bytes(msg_json))
+            self.sock.settimeout(None)
+
+            # 等待数据返回;
+            data = bytes(self.sock.recv(1024 * 8))
+
+            # data = bytes(self.sock.recv(1024 * 8))
+            print data.__len__()
+            phead = data[0: np.array([(0xAA, 0)], dtype=ProHead).itemsize]
+            msg_json = (data[np.array([(0xAA, 0)], dtype=ProHead).itemsize])#.decode("UTF-8")
+            msg_json = msg_json.decode("utf-8").encode('gbk')
+            # 解析成json;
+            msg_dict = json.loads(data)
+            return msg_dict
+        except Exception, e:
+            print "Error:", e
+            self.disconnect()
+            self.connect()
+            return None
+
+    def disconnect(self):
+        try:
+            self.sock.shutdown(2)
+            self.sock.close()
+        except Exception, e:
+            print "LoggingUtil:client=> socket disconnect error:", e