串口通信——接收串口数据并处理(C语言)_c语言串口接收数据存入数组

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

case ‘O’:
options.c_cflag |= (PARODD | PARENB);
options.c_iflag |= (INPCK | ISTRIP);
break;
case ‘e’:
case ‘E’:
options.c_cflag |= PARENB;
options.c_cflag &= ~PARODD;
options.c_iflag |= (INPCK | ISTRIP);
break;
case ‘S’:
case ‘s’:
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
break;
default:
fprintf(stderr,“Unsupported parity\n”);
return (0);
}
switch (stopbits)/*设置停止位*

在Windows系统上,你可以使用C语言的`win32` API来串口数据存入数组。以下是一个简单的示例代码,演示了如何在Windows上串口数据将其存入数组: ```c #include <stdio.h> #include <windows.h> #define MAX_BUFFER_SIZE 256 int main() { HANDLE serial_port; DCB dcb_serial_params; COMMTIMEOUTS timeouts; char buffer[MAX_BUFFER_SIZE]; DWORD bytes_read; // 打开串口 serial_port = CreateFile("COM1", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (serial_port == INVALID_HANDLE_VALUE) { printf("无法打开串口\n"); return -1; } // 配置串口参数 memset(&dcb_serial_params, 0, sizeof(dcb_serial_params)); dcb_serial_params.DCBlength = sizeof(dcb_serial_params); if (!GetCommState(serial_port, &dcb_serial_params)) { printf("无法获取串口参数\n"); CloseHandle(serial_port); return -1; } dcb_serial_params.BaudRate = CBR_9600; // 波特率设置为9600 dcb_serial_params.ByteSize = 8; // 数据位设置为8 dcb_serial_params.StopBits = ONESTOPBIT; // 1位停止位 dcb_serial_params.Parity = NOPARITY; // 无奇偶校验 if (!SetCommState(serial_port, &dcb_serial_params)) { printf("无法设置串口参数\n"); CloseHandle(serial_port); return -1; } // 配置取超时时间 memset(&timeouts, 0, sizeof(timeouts)); timeouts.ReadIntervalTimeout = MAXDWORD; timeouts.ReadTotalTimeoutConstant = 0; timeouts.ReadTotalTimeoutMultiplier = 0; if (!SetCommTimeouts(serial_port, &timeouts)) { printf("无法设置超时时间\n"); CloseHandle(serial_port); return -1; } // 串口数据 while (1) { if (ReadFile(serial_port, buffer, MAX_BUFFER_SIZE, &bytes_read, NULL)) { for (DWORD i = 0; i < bytes_read; i++) { printf("%c", buffer[i]); } fflush(stdout); } } // 关闭串口 CloseHandle(serial_port); return 0; } ``` 在代码中,使用`CreateFile`函数打开串口,配置串口参数使用`GetCommState`和`SetCommState`函数,配置取超时时间使用`SetCommTimeouts`函数,使用`ReadFile`函数串口数据。 需要注意的是,代码中的串口名称为"COM1",你可以根据实际情况修改为你要使用的串口名称。 希望对你有所帮助!如果有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值