使用Python的Pyserial将字符发送到Arduino串行端口

用户名

我已经设置了一个Arduino在接收到“ S”字节时发送数据。这适用于Arduino串行监视器。但是,我正在使用Pyserial在Python上绘制数据,以联系串行端口。这是我的Arduino草图,可以明确说明我的意思:

#include <eHealth.h>


unsigned long time;
unsigned long interval = 8;
byte serialByte;

// The setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);  
}

// The loop routine runs over and over again forever:
void loop() {
  if(Serial.available()>0){
    serialByte = Serial.read();
    if(serialByte == 'S'){  
      while(1){
        float ECG = eHealth.getECG();
        time = time + interval;
        Serial.print(time);
        Serial.print(" ");
        Serial.print(ECG, 3); 
        Serial.println("");

        if(Serial.available()>0){
          serialByte = Serial.read();
          if (serialByte == 'F') break;
        }
      }
    }
  }
  delay(interval);
}

正如我所说的,这很好。但是在Python上,当我尝试这样做:

import serial
ser = serial.Serial('/dev/tty.usbmodem1411', 9600)
ser.write(bytearray('S','ascii'))

或这个:

import serial
ser = serial.Serial('/dev/tty.usbmodem1411', 9600)
ser.write('S')

arduino由于某种原因没有收到它,并且数据也没有通过串行端口流到Python。我不知道这个问题。如您所见,我已尝试转换为字节,但仍然无法正常工作。

这是我完整的Python代码:

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg, NavigationToolbar2QTAgg
import matplotlib.figure as mfig
import PyQt4.QtGui as gui, PyQt4.QtCore as core
import collections
import time
import random

import serial
ser = serial.Serial('/dev/tty.usbmodem1411', 9600)
ser.write('S')


refreshMillis = 8
N = 200
xs = collections.deque(maxlen=N)
ys = collections.deque(maxlen=N) 

app = gui.QApplication([])

fig = mfig.Figure()
canvas = FigureCanvasQTAgg(fig)

ax = fig.add_subplot(111)
ax.set_ylim([0,5])
# ax.title("Arduino Electrocardiogram")
ax.set_xlabel("Time (ms)")
ax.set_ylabel("Voltage (V)")
line2D, = ax.plot(xs,ys)
canvas.show()


def process_line():
    line = ser.readline()
    data = map(float,line.split(" "))
    xs.append(data[0])
    ys.append(data[1])
    line2D.set_data(xs,ys)
    print data
    xmin, xmax = min(xs),max(xs)
    if xmin == xmax:
        ax.set_xlim([xmin,xmin+1])
    else:
        ax.set_xlim([xmin,xmax])
    canvas.draw()

    zipString = zip(xs,ys)
    f = open("plot_store","w")
    for line in zipString:
        f.write(" ".join(str(x) for x in line) + "\n")
    f.close()




timer = core.QTimer()
timer.timeout.connect(process_line)
timer.start(refreshMillis)

app.exec_()

ser.flush()
ser.close()
格兰特·吉布森

当我开始使用Arduino serial时,这让我感到震惊。当您打开串行连接(例如通过Python)时,Arduino重置,缺少接下来的几个字符。

我通常会做类似的事情:

ser = serial.Serial('COM6', 9600)
time.sleep(3)
ser.write('Hello world')

希望能有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用pyserial将数据从python发送到arduino

来自分类Dev

使用pyserial将数据从python发送到arduino

来自分类Dev

将串行通信(Ubuntu,Python)发送到Arduino

来自分类Dev

python将十六进制字符串发送到串行端口

来自分类Dev

通过pySerial将字符串发送到端口出错

来自分类Dev

如何使用串行通信将数据作为字符串从 NodeJs 运行时发送到 Arduino 板?

来自分类Dev

如何将十六进制字符串发送到串行端口?

来自分类Dev

无法将字符串从python发送到arduino

来自分类Dev

将数据发送到Little Endian的串行端口

来自分类Dev

无法通过串行端口将数据从Matlab发送到Python

来自分类Dev

重新组装从 Arduino 发送到 Python 的串行数据

来自分类Dev

使用某些格式将字节数组发送到串行端口

来自分类Dev

如何使用ajax jquery将arduino的串行输出发送到文本框

来自分类Dev

使用Java将变量发送到ubuntu上的Arduino COM端口

来自分类Dev

如何使用PowerShell通过串行端口将十六进制命令发送到监视器

来自分类Dev

为什么在将char发送到串行端口时需要延迟?

来自分类Dev

如何将命令发送到串行端口(JAVA + RXTX)

来自分类Dev

将数据发送到串行端口时的异步数字时钟

来自分类Dev

通过蓝牙将数据从Android应用发送到串行COM端口

来自分类Dev

如何将命令发送到串行端口(JAVA + RXTX)

来自分类Dev

如何将数据发送到串行端口并看到任何答案?

来自分类Dev

异步数字时钟,同时将数据发送到串行端口

来自分类Dev

通过蓝牙将数据从android应用发送到串行COM端口

来自分类Dev

如何将数据发送到程序正在连接的串行端口

来自分类Dev

如何通过TCP / IP / UDP将数据发送到串行端口?

来自分类Dev

使用Pyserial根据Arduino串行端口的电压绘制时间

来自分类Dev

Java无法正确发送到串行端口

来自分类Dev

通过串行将 32 位整数从 python 脚本发送到 arduino 以用于驱动 RGB 条

来自分类Dev

Node.js使用串行将数据发送到Arduino

Related 相关文章

  1. 1

    使用pyserial将数据从python发送到arduino

  2. 2

    使用pyserial将数据从python发送到arduino

  3. 3

    将串行通信(Ubuntu,Python)发送到Arduino

  4. 4

    python将十六进制字符串发送到串行端口

  5. 5

    通过pySerial将字符串发送到端口出错

  6. 6

    如何使用串行通信将数据作为字符串从 NodeJs 运行时发送到 Arduino 板?

  7. 7

    如何将十六进制字符串发送到串行端口?

  8. 8

    无法将字符串从python发送到arduino

  9. 9

    将数据发送到Little Endian的串行端口

  10. 10

    无法通过串行端口将数据从Matlab发送到Python

  11. 11

    重新组装从 Arduino 发送到 Python 的串行数据

  12. 12

    使用某些格式将字节数组发送到串行端口

  13. 13

    如何使用ajax jquery将arduino的串行输出发送到文本框

  14. 14

    使用Java将变量发送到ubuntu上的Arduino COM端口

  15. 15

    如何使用PowerShell通过串行端口将十六进制命令发送到监视器

  16. 16

    为什么在将char发送到串行端口时需要延迟?

  17. 17

    如何将命令发送到串行端口(JAVA + RXTX)

  18. 18

    将数据发送到串行端口时的异步数字时钟

  19. 19

    通过蓝牙将数据从Android应用发送到串行COM端口

  20. 20

    如何将命令发送到串行端口(JAVA + RXTX)

  21. 21

    如何将数据发送到串行端口并看到任何答案?

  22. 22

    异步数字时钟,同时将数据发送到串行端口

  23. 23

    通过蓝牙将数据从android应用发送到串行COM端口

  24. 24

    如何将数据发送到程序正在连接的串行端口

  25. 25

    如何通过TCP / IP / UDP将数据发送到串行端口?

  26. 26

    使用Pyserial根据Arduino串行端口的电压绘制时间

  27. 27

    Java无法正确发送到串行端口

  28. 28

    通过串行将 32 位整数从 python 脚本发送到 arduino 以用于驱动 RGB 条

  29. 29

    Node.js使用串行将数据发送到Arduino

热门标签

归档