回覆列表
  • 1 # 使用者3293251291998

    下面以一個例程來做說明:

    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;}}}

  • 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()

  • 中秋節和大豐收的關聯?
  • 對辛苦一天的人發一條安慰的手機簡訊?