55import serial
66import time
77from serial .tools import list_ports
8- if platform .system () == 'Windows' :
8+
9+ import sys
10+ if sys .platform .startswith ('win' ):
911 import _winreg as winreg
1012else :
1113 import glob
@@ -22,9 +24,9 @@ def enumerate_serial_ports():
2224 path = 'HARDWARE\\ DEVICEMAP\\ SERIALCOMM'
2325 try :
2426 key = winreg .OpenKey (winreg .HKEY_LOCAL_MACHINE , path )
25- except WindowsError :
27+ except OSError : # TODO
2628 raise Exception
27-
29+
2830 for i in itertools .count ():
2931 try :
3032 val = winreg .EnumValue (key , i )
@@ -85,7 +87,7 @@ def find_port(baud, timeout):
8587def get_version (sr ):
8688 cmd_str = build_cmd_str ("version" )
8789 try :
88- sr .write (cmd_str )
90+ sr .write (str . encode ( cmd_str ) )
8991 sr .flush ()
9092 except Exception :
9193 return None
@@ -130,7 +132,7 @@ def digitalWrite(self, pin, val):
130132 pin_ = pin
131133 cmd_str = build_cmd_str ("dw" , (pin_ ,))
132134 try :
133- self .sr .write (cmd_str )
135+ self .sr .write (str . encode ( cmd_str ) )
134136 self .sr .flush ()
135137 except :
136138 pass
@@ -150,7 +152,7 @@ def analogWrite(self, pin, val):
150152 val = 0
151153 cmd_str = build_cmd_str ("aw" , (pin , val ))
152154 try :
153- self .sr .write (cmd_str )
155+ self .sr .write (str . encode ( cmd_str ) )
154156 self .sr .flush ()
155157 except :
156158 pass
@@ -166,7 +168,7 @@ def analogRead(self, pin):
166168 """
167169 cmd_str = build_cmd_str ("ar" , (pin ,))
168170 try :
169- self .sr .write (cmd_str )
171+ self .sr .write (str . encode ( cmd_str ) )
170172 self .sr .flush ()
171173 except :
172174 pass
@@ -189,7 +191,7 @@ def pinMode(self, pin, val):
189191 pin_ = pin
190192 cmd_str = build_cmd_str ("pm" , (pin_ ,))
191193 try :
192- self .sr .write (cmd_str )
194+ self .sr .write (str . encode ( cmd_str ) )
193195 self .sr .flush ()
194196 except :
195197 pass
@@ -209,7 +211,7 @@ def pulseIn(self, pin, val):
209211 pin_ = pin
210212 cmd_str = build_cmd_str ("pi" , (pin_ ,))
211213 try :
212- self .sr .write (cmd_str )
214+ self .sr .write (str . encode ( cmd_str ) )
213215 self .sr .flush ()
214216 except :
215217 pass
@@ -256,7 +258,7 @@ def pulseIn_set(self, pin, val, numTrials=5):
256258 durations = []
257259 for s in range (numTrials ):
258260 try :
259- self .sr .write (cmd_str )
261+ self .sr .write (str . encode ( cmd_str ) )
260262 self .sr .flush ()
261263 except :
262264 pass
@@ -290,7 +292,7 @@ def digitalRead(self, pin):
290292 """
291293 cmd_str = build_cmd_str ("dr" , (pin ,))
292294 try :
293- self .sr .write (cmd_str )
295+ self .sr .write (str . encode ( cmd_str ) )
294296 self .sr .flush ()
295297 except :
296298 pass
@@ -335,18 +337,18 @@ def Melody(self, pin, melody, durations):
335337 cmd_args = [length , pin ]
336338 if length == len (durations ):
337339 cmd_args .extend ([NOTES .get (melody [note ])
338- for note in range (length )])
340+ for note in range (length )])
339341 cmd_args .extend ([durations [duration ]
340- for duration in range (len (durations ))])
342+ for duration in range (len (durations ))])
341343 cmd_str = build_cmd_str ("to" , cmd_args )
342344 try :
343- self .sr .write (cmd_str )
345+ self .sr .write (str . encode ( cmd_str ) )
344346 self .sr .flush ()
345347 except :
346348 pass
347349 cmd_str = build_cmd_str ("nto" , [pin ])
348350 try :
349- self .sr .write (cmd_str )
351+ self .sr .write (str . encode ( cmd_str ) )
350352 self .sr .flush ()
351353 except :
352354 pass
@@ -369,7 +371,7 @@ def capacitivePin(self, pin):
369371 the Arduino/Shrimp and any hardware attached to the pin.
370372 '''
371373 cmd_str = build_cmd_str ("cap" , (pin ,))
372- self .sr .write (cmd_str )
374+ self .sr .write (str . encode ( cmd_str ) )
373375 rd = self .sr .readline ().replace ("\r \n " , "" )
374376 if rd .isdigit ():
375377 return int (rd )
@@ -386,7 +388,7 @@ def shiftOut(self, dataPin, clockPin, pinOrder, value):
386388 """
387389 cmd_str = build_cmd_str ("so" ,
388390 (dataPin , clockPin , pinOrder , value ))
389- self .sr .write (cmd_str )
391+ self .sr .write (str . encode ( cmd_str ) )
390392 self .sr .flush ()
391393
392394 def shiftIn (self , dataPin , clockPin , pinOrder ):
@@ -401,7 +403,7 @@ def shiftIn(self, dataPin, clockPin, pinOrder):
401403 (int) an integer from 0 to 255
402404 """
403405 cmd_str = build_cmd_str ("si" , (dataPin , clockPin , pinOrder ))
404- self .sr .write (cmd_str )
406+ self .sr .write (str . encode ( cmd_str ) )
405407 self .sr .flush ()
406408 rd = self .sr .readline ().replace ("\r \n " , "" )
407409 if rd .isdigit ():
@@ -441,7 +443,7 @@ def attach(self, pin, min=544, max=2400):
441443 cmd_str = build_cmd_str ("sva" , (pin , min , max ))
442444
443445 while True :
444- self .sr .write (cmd_str )
446+ self .sr .write (str . encode ( cmd_str ) )
445447 self .sr .flush ()
446448
447449 rd = self .sr .readline ().replace ("\r \n " , "" )
@@ -457,7 +459,7 @@ def detach(self, pin):
457459 position = self .servo_pos [pin ]
458460 cmd_str = build_cmd_str ("svd" , (position ,))
459461 try :
460- self .sr .write (cmd_str )
462+ self .sr .write (str . encode ( cmd_str ) )
461463 self .sr .flush ()
462464 except :
463465 pass
@@ -467,14 +469,14 @@ def write(self, pin, angle):
467469 position = self .servo_pos [pin ]
468470 cmd_str = build_cmd_str ("svw" , (position , angle ))
469471
470- self .sr .write (cmd_str )
472+ self .sr .write (str . encode ( cmd_str ) )
471473 self .sr .flush ()
472474
473475 def writeMicroseconds (self , pin , uS ):
474476 position = self .servo_pos [pin ]
475477 cmd_str = build_cmd_str ("svwm" , (position , uS ))
476478
477- self .sr .write (cmd_str )
479+ self .sr .write (str . encode ( cmd_str ) )
478480 self .sr .flush ()
479481
480482 def read (self , pin ):
@@ -483,7 +485,7 @@ def read(self, pin):
483485 position = self .servo_pos [pin ]
484486 cmd_str = build_cmd_str ("svr" , (position ,))
485487 try :
486- self .sr .write (cmd_str )
488+ self .sr .write (str . encode ( cmd_str ) )
487489 self .sr .flush ()
488490 except :
489491 pass
@@ -513,7 +515,7 @@ def begin(self, p1, p2, baud):
513515 """
514516 cmd_str = build_cmd_str ("ss" , (p1 , p2 , baud ))
515517 try :
516- self .sr .write (cmd_str )
518+ self .sr .write (str . encode ( cmd_str ) )
517519 self .sr .flush ()
518520 except :
519521 pass
@@ -533,7 +535,7 @@ def write(self, data):
533535 if self .connected :
534536 cmd_str = build_cmd_str ("sw" , (data ,))
535537 try :
536- self .sr .write (cmd_str )
538+ self .sr .write (str . encode ( cmd_str ) )
537539 self .sr .flush ()
538540 except :
539541 pass
@@ -550,7 +552,7 @@ def read(self):
550552 """
551553 if self .connected :
552554 cmd_str = build_cmd_str ("sr" )
553- self .sr .write (cmd_str )
555+ self .sr .write (str . encode ( cmd_str ) )
554556 self .sr .flush ()
555557 response = self .sr .readline ().replace ("\r \n " , "" )
556558 if response :
@@ -561,7 +563,7 @@ def read(self):
561563
562564class EEPROM (object ):
563565 """
564- Class for reading and writing to EEPROM.
566+ Class for reading and writing to EEPROM.
565567 """
566568
567569 def __init__ (self , board ):
@@ -573,45 +575,44 @@ def size(self):
573575 Returns size of EEPROM memory.
574576 """
575577 cmd_str = build_cmd_str ("sz" )
576-
578+
577579 try :
578- self .sr .write (cmd_str )
580+ self .sr .write (str . encode ( cmd_str ) )
579581 self .sr .flush ()
580582 response = self .sr .readline ().replace ("\r \n " , "" )
581583 return int (response )
582584 except :
583585 return 0
584-
586+
585587 def write (self , address , value = 0 ):
586588 """ Write a byte to the EEPROM.
587-
589+
588590 :address: the location to write to, starting from 0 (int)
589591 :value: the value to write, from 0 to 255 (byte)
590592 """
591-
593+
592594 if value > 255 :
593595 value = 255
594596 elif value < 0 :
595597 value = 0
596598 cmd_str = build_cmd_str ("eewr" , (address , value ))
597599 try :
598- self .sr .write (cmd_str )
600+ self .sr .write (str . encode ( cmd_str ) )
599601 self .sr .flush ()
600602 except :
601603 pass
602-
604+
603605 def read (self , adrress ):
604606 """ Reads a byte from the EEPROM.
605-
607+
606608 :address: the location to write to, starting from 0 (int)
607609 """
608610 cmd_str = build_cmd_str ("eer" , (adrress ,))
609611 try :
610- self .sr .write (cmd_str )
611- self .sr .flush ()
612+ self .sr .write (str . encode ( cmd_str ) )
613+ self .sr .flush ()
612614 response = self .sr .readline ().replace ("\r \n " , "" )
613615 if response :
614616 return int (response )
615617 except :
616618 return 0
617-
0 commit comments