Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用UART arduino接收数据阵列_C_Arrays_Arduino - Fatal编程技术网

C 使用UART arduino接收数据阵列

C 使用UART arduino接收数据阵列,c,arrays,arduino,C,Arrays,Arduino,我正试图通过arduino中的UART将数据发送到指纹扫描仪 我使用一个数组来发送命令,它工作得很好 for(i =0 ; i<= 24 ; i++) { Serial.write(SendArray[i]); SendArray[i] =0; } for(i=0;iOP正在尝试使用24个元素,但在两个位置循环了25次。这肯定会导致无效的数组访问 char SendArray[24] = ... // for(i =0 ; i<= 24 ; i++) f

我正试图通过arduino中的UART将数据发送到指纹扫描仪 我使用一个数组来发送命令,它工作得很好

for(i =0 ; i<= 24 ; i++)
  {
    Serial.write(SendArray[i]); 
    SendArray[i] =0;
  }

for(i=0;iOP正在尝试使用24个元素,但在两个位置循环了25次。这肯定会导致无效的数组访问

char SendArray[24] = ...

// for(i =0 ; i<= 24 ; i++)
for(i = 0; i < 24; i++) {
  Serial.write(SendArray[i]); 
  SendArray[i] = 0;
}

// for(k=0 ; k<=24 ; k++)
for(k = 0; k < 24; k++)
  RecieveArray[k] = Serial.read();  // Receive spelled wrong
char SendArray[24]=。。。
//对于(i=0;i调用循环中的
Serial.read()
将返回
-1
,如果没有数据可用,或者当数据仍在通过串行线传输时。您可能正在该接收循环上用
-1
填充缓冲区

您可以做的是等待
Serial.available()
变为大于零,然后再调用
Serial.read()

(k=0;k<24;k++)的
{
while(Serial.available()==0);
ReceiveArray[k]=Serial.read();
}

串行
发送阵列
接收阵列
的类型是什么?以及
串行读取()
return?您在扫描仪上使用的是什么协议?您希望接收什么以及如何检测/显示“奇怪符号”?请注意,您似乎正在发送/请求25个字符?
Serial.read()
返回一个
int
序列。write
用于发送二进制数据,因此如果您试图直接可视化此数据,您将看到不可打印的字符。可以对接收到的数据进行后处理以将其转换为ASCII数字,或者管理与
chars
的通信。两者都是char类型,例如command就像这个char SendArray[24]={85170,36,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,1};我会收到类似的东西also@MartinJames扫描器正在使用UART,我希望接收像这样的东西{85170,36,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,1};它是十进制或十六进制的,这无关紧要,我通过存储来显示它们,例如char store=receivearray[5];然后我使用Serial.println(store);要查看不起作用的值,仍然无法读取characters@MuhammedAshraf“不工作”没有用。“仍然获取无法读取的字符”没有公布你收到的信息、预期的信息和最简单的代码有用。例如,我发送了{85170,36,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,1}指纹的这一序列数据。指纹应该像这样回复ack{0x55,0xAA,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01}我应该存储此序列以对其执行操作,例如,我必须将0x01保存为用户id,我尝试将数组的元素#3存储在char类型的变量中,然后使用serial.print()打印它;要查看并了解它的值,我得到这个@Muhammed Ashraf您的发送方/接收方可能有不匹配的字长、奇偶校验或停止位设置。请查看端口两端的设置,以确保字长=8,相同的奇偶校验、停止位设置。另一个可能是信号的电压电平不兼容,因为您大部分是DROP输入1位。当发送器的电压不够负时,可能会发生这种情况。
char SendArray[24] = ...

// for(i =0 ; i<= 24 ; i++)
for(i = 0; i < 24; i++) {
  Serial.write(SendArray[i]); 
  SendArray[i] = 0;
}

// for(k=0 ; k<=24 ; k++)
for(k = 0; k < 24; k++)
  RecieveArray[k] = Serial.read();  // Receive spelled wrong
for(k = 0; k < 24; k++) {
    while (Serial.available() == 0);
    ReceiveArray[k] = Serial.read();
}