簡體   English   中英

Python和Arduino串行通信

[英]Python and Arduino Serial Communication

我正在使用Python 3.2嘗試通過串行端口與Arduino通信。 從文檔中,我可以了解到Arduino Serial.Read()讀取單個字節。 但是,當我嘗試實現此功能時,Serial.Read()會讀取我發送的所有數字。 這是我的Python和Arduino的代碼

例如,我有一個值412發送給Arduino。

蟒蛇:

xCoordint = 412
xCoordConverted = "%03d" % (xCoordint)
xCoord = [int(i) for i in str(xCoordConverted)]
xSingleDigit0 = chr(int(xCoord[0] + 48))
xSingleDigit1 = chr(int(xCoord[1] + 48))
xSingleDigit2 = chr(int(xCoord[2] + 48))
ser.write (bytes(xSingleDigit0, 'UTF-8'))
ser.write (bytes(xSingleDigit1, 'UTF-8'))
ser.write (bytes(xSingleDigit2, 'UTF-8'))

的Arduino:

char joinCharX[3] ;
int n_avail = Serial.available();
  if(n_avail>0){ 
    for (int i=0;i<3; i++){
      joinCharX[i] = Serial.read();
    }
int xCoords = atoi(joinCharX);
Serial.print(joinCharX[0]);

返回時,joinCharX [0]是412,而不是4。我想知道為什么會這樣,如何使它一次讀取1個單獨的字節?

嘗試:

char joinCharX[3] ;
int n_avail = Serial.available();
  if(n_avail>0){ 
    for (int i=0;i<3; i++){
      joinCharX[i] = Serial.read(1);  # Note the parameter
    }
int xCoords = atoi(joinCharX);
Serial.print(joinCharX[0]);

這應該使其一次讀取一個字符。

更正:

您不能像上面那樣限制no char,但是您的問題是您的print語句將第一個char作為字符串的開頭:如果您只想查看第一個char,則需要使用:

char forprint;
:
:
forprint = joinCharX[0];
Serial.print (forprint);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM