从串口接收二进制数据的简单模块
项目描述
用于以异步形式从串行端口接收二进制数据的简单模块。用于从 Arduino 或微控制器接收数据而无需使用字符串。
描述
该模块允许您指定二进制数据的格式和要从串行端口接收的标头。该模块创建一个专用线程来读取串行端口并以循环形式提供作为缓冲区传递的 numpy 数组,始终保持相同的长度。
例子
在示例文件夹中有一个创建虚拟串行端口的脚本(仅适用于 linux),允许您运行 test-receiver.py,它将打印接收到的数据缓冲区。
arduino 使用此模块发送要读取的数据的示例代码如下:
void loop() {
uint16_t adc_signal = analogRead(sensorPin);
long unsigned t_now = micros();
uint16_t buffer_size = sizeof(uint16_t) + sizeof(long unsigned) + 2;
byte buf[buffer_size];
buf[0] = 0xFD;
memcpy(buf + 1, (byte *)&t_now, sizeof(unsigned long));
memcpy(buf + 1 + sizeof(unsigned long), (byte *)&adc_vdd, sizeof(uint16_t));
buf[buffer_size - 1] = '\n';
Serial.write(buf, buffer_size);
}
在这种情况下,接收格式为“Lh”。所有可能的格式都在struct package page中定义。