2013-04-15 90 views
8

我見過很多使用串口的代碼示例,並且有人說他們也是工作代碼。事情是,當我嘗試代碼它不起作用。在Python中使用pySerial 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)) 

它給我的錯誤是:「SerialException:端口已經打開」。 是我使用python3.3的問題還是有額外的東西我需要安裝?有沒有其他的方式來使用Python3.3的COM端口?

+0

如果有人問,我有COM1。我用了很多。當我嘗試這個代碼時,它並沒有被另一個程序打開。使用Docklite嘗試成功打開COM1時。 –

回答

10

故事的寓意是......端口在初始化時打開。 ser.open()失敗,因爲串口已被ser = serial.Serial(.....)打開。這是一回事。

另一個問題是ser.write(0xAA) - 我期望這意味着「發送一個字節0xAA」,它實際上做了什麼是發送170(0xAA)零。在函數write中,我看到以下內容: data = bytes(data)其中數據是您傳遞的參數。似乎函數bytes()不會將字符串作爲參數,所以不能直接發送字符串:serial.write(),但ser.write(bytearray(TheString,'ascii'))完成這項工作。

雖然我正在考慮加入:

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

,儘管這使我的代碼上的其他電腦無法正常工作。