diff --git a/tcutils/pyDecard.py b/tcutils/pyDecard.py
index 55774e6..5821a4f 100644
--- a/tcutils/pyDecard.py
+++ b/tcutils/pyDecard.py
@@ -6,6 +6,7 @@
 '''
 from ctypes import *
 import codecs
+import traceback
 
 
 def _b(v):
@@ -48,10 +49,14 @@
             py_decard.error_method = kwdargs["error_method"]
 
 ####################################################################
-    def __init__(self):
+    def __init__(self, port=None, baud=None):
         py_decard._do_load_dll()
         self.card_mode = 'contactless'
         self.ic_port = 0
+        if port:
+            if not self.open_port(port, baud):
+                raise RuntimeError(u"不能打开读卡器port=%d,baud=%d" % (port, baud))
+            self.beep()
 
     def set_card_mode(self, mode='cotactless', icport=-1):
         self.card_mode = mode
@@ -160,7 +165,7 @@
         if ret != 0:
             command_header = codecs.encode(command, 'hex')
             return self.error('CPUCard apdu command : %s ,ret=%d' % (command_header, ret))
-        return  response.raw[:ord(resplen.value)]
+        return response.raw[:ord(resplen.value)]
 
     def cpucard_apdu(self, command):
         current_resp = self._do_apdu(command)
@@ -187,7 +192,7 @@
         if ret != 0:
             command_header = codecs.encode(command, 'hex')
             return self.error('CPUCard apdu command : %s ,ret=%d' % (command_header, ret))
-        return  response.raw[:ord(resplen.value)]
+        return response.raw[:ord(resplen.value)]
 
     def sam_apdu(self, command):
         current_resp = self._do_sam_apdu(command)
@@ -236,3 +241,18 @@
         if r != 0:
             return False
         return True
+
+    def __enter__(self):
+        if not py_decard.device_handle:
+            raise RuntimeError(u"Device not open")
+        py_decard.setup(error_method=self.ERROR_RAISE_EXP)
+        return self
+
+    def __exit__(self, exc_type, exc_value, tb):
+        try:
+            self.close_port()
+        except:
+            pass
+        if exc_type:
+            traceback.print_exception(exc_type, exc_value, tb)
+        return True
