2013-04-15 42 views
8

Seri bağlantı noktasını kullanarak birçok kod örneği gördüm ve insanlar da çalışma kodlarını söylüyorlar. Şey, kodu denediğimde işe yaramıyor.Python ile pySerial kullanımı 3.3

import serial 

ser = serial.Serial(
    port=0, 
    baudrate=9600 
    # parity=serial.PARITY_ODD, 
    # stopbits=serial.STOPBITS_TWO, 
    # bytesize=serial.SEVENBITS 
) 

ser.open() 
ser.isOpen() 

print(ser.write(0xAA)) 

Bana verdiği hata şöyledir: "SerialException: Bağlantı noktası zaten açıldı". Python3.3 problemi mi kullanıyorsunuz yoksa kurmam gereken başka bir şey var mı? COM bağlantı noktalarını Python3.3 ile kullanmanın başka bir yolu var mı?

+0

Herhangi biri sorarsa, COM1 var. Onu çok kullanırım. Bu kodu denediğimde başka bir program tarafından açılmadı. Docklite ile denendiğinde, COM1 başarıyla açılır. –

cevap

10

Öyleyse hikayenin ahlakı .. başlatıldığında port açılır. ser.open(), seri bağlantı noktası zaten ser = serial.Serial(.....) tarafından açıldığı için başarısız oluyor. Ve bu bir şeydir.

Diğer bir sorun var, ser.write(0xAA) - Bunun anlamı "bir bayt 0xAA gönder" demek istedim, gerçekten ne yaptı 170 (0xAA) sıfırları gönderdi. write işlevinde, aşağıdakileri gördüm: data = bytes(data) Veriler, geçirdiğiniz argümandır. işlevi bayt() argüman olarak dizeleri almıyor gibi görünmektedir, bu nedenle dizeleri doğrudan serial.write() ile gönderemez, ancak ser.write(bytearray(TheString,'ascii')) işini yapar.

Ben ekleyerek düşünüyorum rağmen: ser.write() yılında

if(type(data) == type('String')): 
    data = bytearray(data,'ascii') 

, bu benim kod diğer bilgisayarlarda çalışmaz imkan vermesine rağmen.