1010from snap7 .common import check_error , load_library
1111
1212logger = logging .getLogger (__name__ )
13- clib = load_library ()
1413
1514
1615def error_wrap (func ):
@@ -44,24 +43,25 @@ def __init__(self):
4443
4544 :returns: A Snap7Client object
4645 """
46+ self .library = load_library ()
4747 logger .info ("creating snap7 client" )
48- self .pointer = S7Object (clib .Cli_Create ())
48+ self .pointer = S7Object (self . library .Cli_Create ())
4949 # local buffer used by test for now..
5050
5151 def destroy (self ):
5252 """
5353 destroy a client.
5454 """
5555 logger .info ("destroying snap7 client" )
56- return clib .Cli_Destroy (byref (self .pointer ))
56+ return self . library .Cli_Destroy (byref (self .pointer ))
5757
5858 @error_wrap
5959 def disconnect (self ):
6060 """
6161 disconnect a client.
6262 """
6363 logger .info ("disconnecting snap7 client" )
64- return clib .Cli_Disconnect (self .pointer )
64+ return self . library .Cli_Disconnect (self .pointer )
6565
6666 @error_wrap
6767 def connect (self , address , rack , slot ):
@@ -73,7 +73,7 @@ def connect(self, address, rack, slot):
7373 :param slot: slot on server.
7474 """
7575 logger .info ("connecting to %s rack %s slot %s" % (address , rack , slot ))
76- return clib .Cli_ConnectTo (self .pointer , c_char_p (address ),
76+ return self . library .Cli_ConnectTo (self .pointer , c_char_p (address ),
7777 c_int (rack ), c_int (slot ))
7878
7979 def db_read (self , db_number , start , size ):
@@ -86,7 +86,7 @@ def db_read(self, db_number, start, size):
8686
8787 type_ = snap7 .types .wordlen_to_ctypes [snap7 .types .S7WLByte ]
8888 data = (type_ * size )()
89- result = (clib .Cli_DBRead (self .pointer , db_number , start , size ,
89+ result = (self . library .Cli_DBRead (self .pointer , db_number , start , size ,
9090 byref (data )))
9191 check_error (result , context = "client" )
9292 return bytearray (data )
@@ -103,7 +103,7 @@ def db_write(self, db_number, start, size, data):
103103 logger .debug ("db_write db_number:%s start:%s size:%s data:%s" %
104104 (db_number , start , size , data ))
105105
106- return clib .Cli_DBWrite (self .pointer , db_number , start , size ,
106+ return self . library .Cli_DBWrite (self .pointer , db_number , start , size ,
107107 byref (_buffer ))
108108
109109 def db_full_upload (self , _type , block_num ):
@@ -116,7 +116,7 @@ def db_full_upload(self, _type, block_num):
116116 size = c_int (sizeof (_buffer ))
117117 block_type = snap7 .types .block_types [_type ]
118118
119- result = clib .Cli_FullUpload (self .pointer , block_type , block_num ,
119+ result = self . library .Cli_FullUpload (self .pointer , block_type , block_num ,
120120 byref (_buffer ), byref (size ))
121121
122122 check_error (result , context = "client" )
@@ -136,7 +136,7 @@ def db_upload(self, block_num):
136136 _buffer = buffer_type ()
137137 size = c_int (sizeof (_buffer ))
138138
139- result = clib .Cli_Upload (self .pointer , block_type , block_num ,
139+ result = self . library .Cli_Upload (self .pointer , block_type , block_num ,
140140 byref (_buffer ), byref (size ))
141141
142142 check_error (result , context = "client" )
@@ -153,7 +153,7 @@ def download(self, db_number, data, size):
153153
154154 _buffer = bytearray_to_buffer (data )
155155
156- result = clib .Cli_Download (self .pointer , db_number ,
156+ result = self . library .Cli_Download (self .pointer , db_number ,
157157 byref (_buffer ), size )
158158 return result
159159
@@ -162,7 +162,7 @@ def db_get(self, db_number):
162162 """
163163 logging .debug ("db_get db_number: %s" % db_number )
164164 _buffer = buffer_type ()
165- result = clib .Cli_DBGet (self .pointer , db_number , byref (_buffer ),
165+ result = self . library .Cli_DBGet (self .pointer , db_number , byref (_buffer ),
166166 byref (c_int (buffer_size )))
167167 check_error (result , context = "client" )
168168 return bytearray (_buffer )
@@ -175,7 +175,7 @@ def read_area(self, area, dbnumber, start, amount):
175175 logging .debug ("reading area: %s dbnumber: %s start: %s: amount %s: "
176176 "wordlen: %s" % (area , dbnumber , start , amount , wordlen ))
177177 data = (wordlen_to_ctypes [wordlen ] * amount )()
178- result = clib .Cli_ReadArea (self .pointer , area , dbnumber , start , amount ,
178+ result = self . library .Cli_ReadArea (self .pointer , area , dbnumber , start , amount ,
179179 wordlen , byref (data ))
180180 check_error (result , context = "client" )
181181 return data
@@ -193,7 +193,7 @@ def write_area(self, area, dbnumber, start, amount, data):
193193
194194 _buffer = bytearray_to_buffer (data )
195195
196- return clib .Cli_WriteArea (self .pointer , area , dbnumber , start , amount ,
196+ return self . library .Cli_WriteArea (self .pointer , area , dbnumber , start , amount ,
197197 wordlen , byref (_buffer ))
198198
199199 def list_blocks (self ):
@@ -203,7 +203,7 @@ def list_blocks(self):
203203 """
204204 logging .debug ("listing blocks" )
205205 blocksList = BlocksList ()
206- result = clib .Cli_ListBlocks (self .pointer , byref (blocksList ))
206+ result = self . library .Cli_ListBlocks (self .pointer , byref (blocksList ))
207207 check_error (result , context = "client" )
208208 logging .debug ("blocks: %s" % blocksList )
209209 return blocksList
@@ -214,7 +214,7 @@ def list_blocks_of_type(self, blocktype, size):
214214 (blocktype , size ))
215215 data = (c_int * 10 )()
216216 count = c_int (size )
217- result = clib .Cli_ListBlocksOfType (self .pointer , blocktype ,
217+ result = self . library .Cli_ListBlocksOfType (self .pointer , blocktype ,
218218 byref (data ),
219219 byref (count ))
220220
@@ -226,12 +226,12 @@ def list_blocks_of_type(self, blocktype, size):
226226 def set_session_password (self , password ):
227227 """Send the password to the PLC to meet its security level."""
228228 assert len (password ) <= 8 , 'maximum password length is 8'
229- return clib .Cli_SetSessionPassword (self .pointer , c_char_p (password ))
229+ return self . library .Cli_SetSessionPassword (self .pointer , c_char_p (password ))
230230
231231 @error_wrap
232232 def clear_session_password (self ):
233233 """Clears the password set for the current session (logout)."""
234- return clib .Cli_ClearSessionPassword (self .pointer )
234+ return self . library .Cli_ClearSessionPassword (self .pointer )
235235
236236
237237# TODO: implement
0 commit comments