我正在尝试使用我自己的应用程序通过USB将数据从STM32 Discovery Board发送到主机PC。我设法将数据发送到STM。我使用了WriteFile。为了读取数据,我调用函数readSerialPort()
来调用函数ReadFile()
。
在main.c中调用readSerialPort()
。每当我向PC发送一些testdata(4个随机字节)时,我可以看到status.cbInQue
变大4,但ReadFile不返回TRUE,表明它已经完成将数据放入缓冲区指针导致{{ 1}}。
当我执行receivedData()
时,它返回错误代码998.这意味着 ERROR_NOACCESS ,通常这意味着分配的数组与GetLastErrror()
不同,但它是。那么是什么导致了这个错误,并且无法通过USB从STM接收数据呢?
(我很想在Stackoverflow上提问,所以请告诉我是否需要改进我提出这个问题的方式)
的main.c
buf_size
comm.c
char* receivedData[31];
uint32_t id = 0;
while(1) {
if (readSerialPort(*receivedData, 31)) {
printf("%d - %s\n", id, receivedData);
id++;
} else {
printf("error %u\n", GetLastError());
}
答案 0 :(得分:0)
Johnny的第一条评论解决了我的问题:
char* receivedData[31];
是一个未初始化的指针数组。你是否 是char receivedData[31];
?然后打电话:if (readSerialPort(receivedData, 31)) {