#include <libserialport.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>
int main(int argc, char **argv)
{
if (argc < 2) {
printf("Usage: %s <port> <baudrate> \n", argv[0]);
return -1;
}
char *port_names = argv[1];
struct sp_port *port;
int baudrate = argc == 3 ? atoi(argv[2]) : 115200;
sp_get_port_by_name(port_names, &port);
int res = sp_open(port, SP_MODE_READ_WRITE);
if(res != SP_OK)
{
printf("Open port: %s ERROR %d\n", port_names, res);
abort();
}
printf("Open port: %s baudrate: %d\n", port_names, baudrate);
sp_set_baudrate(port, baudrate);
sp_set_bits(port, 8);
sp_set_parity(port, SP_PARITY_NONE);
sp_set_stopbits(port, 1);
sp_set_flowcontrol(port, SP_FLOWCONTROL_NONE);
unsigned int timeout = 500;
int buf_len = 40960000;
char *buf = malloc(buf_len);
while (1)
{
struct timeval start, end;
gettimeofday(&start, NULL);
int n = sp_blocking_read(port, buf, buf_len, timeout);
gettimeofday(&end, NULL);
if(n > 0)
{
long timeUsedUs = (end.tv_sec - start.tv_sec) * 1000 * 1000 + end.tv_usec - start.tv_usec;
double speed = n * 1000.0 * 1000.0 / timeUsedUs / 1024;
printf("recv n: %d time timeUsedUs %d us: speed %.2f KB/s\n", n, timeUsedUs, speed);
}
}
free(buf);
sp_close(port);
return 0;
}
libserialport 库串口速度测试
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 对于序列化超长整数,数据量达GB量级的测试结果如上(各库都是最新版,常规用法,未特别优化) 如Cap'n Prot...
- 在进行PID参数整定的工作过程中,我需要将电机的转速、扭矩、母线电压、母线电流、相电压、相电流等参数通过串口传递到...
- 一般来说,喜欢站立的人,比喜欢躺着或或坐着的人,身材更好。与躺着的姿势相比,站姿所消耗的能量要多出10%。而单腿站...
- 今天给大家分享的是如何使pip下载速度可以“飞”起来。 国内的镜像源主要有: 阿里云:http://mirrors...
- 一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万...