2009-01-23 6 views
16

La méthode serial.write() dans pyserial semble envoyer uniquement des données de chaîne. J'ai des tableaux comme [0xc0,0x04,0x00] et je veux pouvoir les envoyer/recevoir via le port série? Existe-t-il des méthodes séparées pour les E/S brutes?Données binaires avec pyserial (port série python)

Je pense que je devrais peut-être changer les tableaux en ['\ xc0', '\ x04', '\ x00'], mais le caractère null peut poser un problème.

Répondre

10

Vous devez convertir vos données en une chaîne

"\xc0\x04\x00" 

caractères NULL ne sont pas un problème en Python - les chaînes ne sont pas NULL mis fin à l'octet zéro se comporte exactement comme un autre octet "\x00".

Une façon de le faire:

>>> import array 
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring() 
'\xc0\x04\x00' 
12

Une autre méthode, sans utiliser le module array:

def a2s(arr): 
    """ Array of integer byte values --> binary string 
    """ 
    return ''.join(chr(b) for b in arr) 
+1

+1 meilleure réponse pour moi carte – PALEN

+0

peut être encore plus rapide: 'def A2s (arr): return '' .join (carte (chr, arr)) ' – RufusVS