gpt4 book ai didi

c - 使用C语言从Arduino串口获取数据时出错

转载 作者:行者123 更新时间:2023-11-30 14:35:03 26 4
gpt4 key购买 nike

我想用C编程语言从Arduino串口实时检索数据。 Arduino 上的程序:

void setup() {
Serial.begin(9600);
}
int i=1;
void loop() {
Serial.println(i);
delay(1000);
i++;
}

c语言程序:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main()
{
HANDLE hComm;
hComm=CreateFile("\\\\.\\COM3",GENERIC_READ | GENERIC_WRITE, 0, NULL,OPEN_EXISTING,0,NULL );
BOOL Status;
DCB dcbSerialParams={0};

dcbSerialParams.DCBlength=sizeof(dcbSerialParams);
Status=GetCommState(hComm,&dcbSerialParams);

dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;

Status=SetCommState(hComm,&dcbSerialParams);

COMMTIMEOUTS timeouts;
timeouts.ReadIntervalTimeout=50;
timeouts.ReadTotalTimeoutConstant=50;
timeouts.ReadTotalTimeoutMultiplier=10;
timeouts.WriteTotalTimeoutConstant=50;
timeouts.WriteTotalTimeoutMultiplier=10;

Status=SetCommMask(hComm,EV_RXCHAR);

DWORD dwEventMask;
Status=WaitCommEvent(hComm,&dwEventMask,NULL);

char TempChar;
char SerialBuffer[256];
DWORD NoBytesRead;
int i=0;

FILE *fp;
fp=fopen("data.txt", "w");
do{
Status=ReadFile(hComm,&TempChar,sizeof(TempChar),&NoBytesRead,NULL);
SerialBuffer[i]=TempChar;
printf("%c",SerialBuffer[i]);
fprintf(fp, "%c", SerialBuffer[i]);
i++;
}
while(1);

CloseHandle(hComm);

return 0;
}

运行时出现错误:

enter image description here

请帮忙看看是什么问题导致的?正确的程序是什么?

最佳答案

正如评论中提到的,0xc0000005 是访问冲突。

如果不花太多时间阅读代码(您应该自己调试),我想说的是,如果该变量用于索引数组,则在无限循环中递增该变量通常是一个坏主意。

而且你永远不会检查你的 ReadFile 是否真的成功。

C 书籍没有介绍在索引数组和正确使用控制结构之前读取文件是有原因的。

关于c - 使用C语言从Arduino串口获取数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58706877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com