回覆列表
-
1 # 使用者3293251291998
-
2 # 我是阿嘛
使用pyserial庫,是最簡單的!!!
import serial
ser = serial.Serial() # open "COM1", baudrate=9600, etc
ser.write("string out")
ser.read(1) # read 1 byte from COM port
# ...
ser.close()
下面以一個例程來做說明:
arduino程式碼複製列印
intincomingbyte=0;//接收到的databytestringinputstring="";//用來儲存接收到的內容booleannewlinereceived=false;//前一次資料結束標誌voidsetup(){serial.begin(9600);//設定通訊埠及速率}voidloop(){if(newlinereceived){serial.print(inputstring);//這裡只是簡單的將它打出來了,你可以根據自己的要求來用你接收到的資料......inputstring="";//clearthestringnewlinereceived=false;........//其他你的程式}}//serialevent()是ide1.0及以後版本新增的功能,不清楚為什麼大部份人不願意用,這個可是相當於中斷功能一樣的啊!voidserialevent(){while(serial.available()){incomingbyte=serial.read();//一個位元組一個位元組地讀,下一句是讀到的放入字串陣列中組成一個完成的資料包inputstring+=(char)incomingbyte;//全雙工串列埠可以不用在下面加延時,半雙工則要加的////下面就是所謂的通訊協議了,如果接收到了換行符號,本例是定義了這次串列埠通訊資料接收結束////其他的你還可以加一些規則,比如資料包起始位,規定一個數據包就是以ff為開頭的,如果不是就不接收////也可以加上資料校驗位,同樣在這裡做一個校驗判斷,如果不符合,則將資料包丟掉,再透過一個標誌位寫個值,////在主程式裡面讓傳送方重發(主程式裡面都寫一條if就行了)//if(incomingbyte=="\n"){newlinereceived=true;}}}