您可以使用 pySerial 透過 COM port 與 Arduino 聯繫。
官網 http://pyserial.sourceforge.net/#
下載
切換至下載頁面 https://pypi.python.org/pypi/pyserial,點擊 pyserial-2.7-win32.exe (md5)。
安裝
雙擊 pyserial-2.7-win32.exe,然後依照視窗提示安裝即可。它會被安裝到 C:\Python27\Lib\site-packages\serial\ 這個位置。
開啟 COM4 並送出訊息
COM port 的編號是從 0 開始,所以 serial.Serial(3) 表開啟 COM4。
import serial
ser = serial.Serial(3) # open COM4 port
print ser.name # check which port was really used
ser.write("hello") # write a string
ser.close() # close port
以名稱方式開啟 COM port 並讀取訊息
超時設為 1 秒,讀取資料時如果時間超過 1 秒沒接收到資料就中斷接收。
import serial
ser = serial.Serial('COM4', 19200, timeout=1)
x = ser.read() # read one byte
s = ser.read(10) # read up to ten bytes (timeout)
line = ser.readline() # read a '\n' terminated line
ser.close()
稍後才設定 COM 的參數
您不必一開始就指定某個特定的 COM port 必須使用多少鮑率等參數,而是可以隨著程式的進行隨時改變參數,方法如下所示:
>>> import serial
>>> ser = serial.Serial()
>>> ser.baudrate = 19200
>>> ser.port = 0
>>> ser
Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
>>> ser.open()
>>> ser.isOpen()
True
>>> ser.close()
>>> ser.isOpen()
False
獲取可用的 COM port
import serial.tools.list_ports
coms=serial.tools.list_ports.comports()
for a in coms:
print a
讓 Arduino 板子 pin 13 的 LED 閃爍
Python code:
import serial
def main():
sp = serial.Serial()
sp.port = 'COM4'
sp.baudrate = 9600
sp.timeout = 5
sp.open()
sp.readline() #to give the hardware handshake time to happen
sp.write(chr(1))
value = sp.readline()
print value
sp.write(chr(0))
sp.close()
if __name__ == "__main__":
main()
Arduino code:
const int ledPin = 13;
void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop(){
while(Serial.available()){
switch(Serial.read()) {
case 0:
digitalWrite(ledPin, LOW);
break;
case 1:
digitalWrite(ledPin, HIGH);
break;
}
delay(20);
}
}
您可能也喜歡
Arduino and Python
http://playground.arduino.cc/interfacing/python
pyFirmata
https://github.com/tino/pyFirmata
Python Arduino Prototyping API
https://github.com/vascop/Python-Arduino-Proto-API-v2
<Python Serial Port Extension>
1. wxTerminal.py
http://sourceforge.net/p/pyserial/code/HEAD/tree/trunk/pyserial/examples/wxTerminal.py
2. wxSerialConfigDialog.py
http://sourceforge.net/p/pyserial/code/HEAD/tree/trunk/pyserial/examples/wxSerialConfigDialog.py