参考:
- https://processing.org/reference/libraries/serial/
- 《Processing与Arduino互动编程》
Serial简介
Serial是一个串行接口(简称串口)库。
能够通过Processing程序「一次一个字节地」在两个设备之间读/写数据。
该库针对的是串行接口(serial即串行)。
常见的串行接口有普通计算机使用的RS232标准的9针接口:
对单片机来说,会使用TTL(逻辑门电路)电平的串口,它长这样:
Serial库的使用
要想在程序中添加Serial的相关功能,需要先导入(serial是processing的系统库,无需添加外部文件,直接import即可):
import processing.serial.*;
接下来就需要声明一个Serial变量:
Serial myPort;
如果此时设备有正在连接的串口,调用list()方法可以列举目前所有的串口名:
String[] strList = myPort.list(); // 返回一个字符串数组
println(strList);
如果存在这样的接口,就可以将myPort变量实例化了:
myPort = new Serial(this, "串口名", 波特率);
// 以Arduino为例
myPort = new Serial(this, "COM4", 9600);
这样一来,就可以在这个串口上,以某个波特率接收和发送数据了。
对于一个实例化的Serial,有以下方法可以使用:
方法名 | 返回值类型 | 说明 |
stop() | void | 关闭processing与串口的通信 |
available() | int | 返回缓冲区可读取的字节数 |
clear() | void | 清空缓冲区 |
write() | void | 向串口写入数据,支持int、String、bytes[] |
read() | int | 读取缓冲区1字节的数据(0~255) 如果没有数据,返回-1 |
readChar() | char | 读取缓冲区的下一个字节,作为char类型返回。 如果没有数据,返回-1或0xffff |
readBytes() | byte[]或int | 读取缓冲区所有数据,作为bytes[]类型返回。 |
readString() | String | 读取缓冲区所有数据,作为String类型返回。 如果没有数据,返回null。 默认编码格式为ASCII。若需要转换成Unicode,则要先转换成字节流,然后以bytes数组的形式输出。 |
readBytesUntil() | byte[]或int | 如果该字节数据不在缓冲区,返回null 如果缓冲区不够大,返回-1并报错 如果缓冲区没有内容,返回0 |
readStringUntil() | String | |
bufferUntil() | void | 在调用serialEvent()之前,在缓冲区添加特定的字节数据。 |
此外,还有一个需要重写的函数serialEvent(Serial),调用方法和setup()和draw()等一样。当缓冲区有可用数据时,会自动调用该函数。
void serialEvent(Serial myPort) {
// 要执行的内容
}