@@ -85,25 +85,29 @@ def __init__(self, port):
8585 except Exception :
8686 pass
8787
88- def _write (self , data , read = True ):
88+ def _write (self , data , read = True , num_read_bytes = 1 ):
8989 self .serial .write (data )
9090 if read :
9191 r_data = self .serial .read (2 )
9292 if not r_data :
9393 raise Exception ('Timeout while waiting for Rx data' )
94+ if num_read_bytes == 2 :
95+ (b1 , b2 ) = struct .unpack ('BB' , r_data )
96+ return 256 * b2 + b1
97+ # by default, just 1 byte is being returned
9498 return struct .unpack ('B' , r_data [0 ])[0 ]
9599
96- def _send_cmd (self , cmd ):
97- return self ._write (bytearray ([cmd ]))
100+ def _send_cmd (self , cmd , num_read_bytes = 1 ):
101+ return self ._write (bytearray ([cmd ]), True , num_read_bytes )
98102
99103 def read_hw_version (self ):
100- return self ._send_cmd (CMD_HW_VER )
104+ return self ._send_cmd (CMD_HW_VER , 2 )
101105
102106 def read_fw_version (self ):
103- return self ._send_cmd (CMD_FW_VER )
107+ return self ._send_cmd (CMD_FW_VER , 2 )
104108
105109 def read_product_id (self ):
106- return self ._send_cmd (CMD_PROD_ID )
110+ return self ._send_cmd (CMD_PROD_ID , 2 )
107111
108112 def peek_memory (self , addr ):
109113 return self ._write (bytearray ([CMD_PEEK , addr & 0xFF , (addr >> 8 ) & 0xFF ]))
@@ -172,8 +176,8 @@ def main(args):
172176 if not args .port :
173177 exit_with_error (1 , 'no serial port specified' )
174178
175- if (args .enter and args .exit ) or (not args .enter and not args .exit ):
176- exit_with_error (1 , 'invalid action requested' )
179+ # if (args.enter and args.exit) or (not args.enter and not args.exit):
180+ # exit_with_error(1, 'invalid action requested')
177181
178182 pic = Pypic (args .port )
179183
@@ -182,6 +186,11 @@ def main(args):
182186 pic .enter_pycom_programming_mode ()
183187 elif args .exit :
184188 pic .exit_pycom_programming_mode ()
189+
190+ # print debug info about current PIC product
191+ # print("read_product_id(): 0x%X"%pic.read_product_id())
192+ # print("read_hw_version(): 0x%X"%pic.read_hw_version())
193+ # print("read_fw_version(): 0x%X"%pic.read_fw_version())
185194
186195 pic .close ()
187196
0 commit comments