串行字符串问题

时间:2013-05-23 23:27:54

标签: c# arrays string serial-port arduino

我对编写arduino非常陌生,但我已经完成了一项相当复杂的任务。我的同学正在为Windows编写Visual Basic程序。我的计划是和他一起工作。需要发生的是,当他向arduino发送“receive int”(结束字符为'\ 0')时,我必须让arduino设置接收两个不同的四个项目列表。其中一个是名称列表,另一个是字节值,它将设置我们正在使用的Mega的端口L上的输出。顺序是名称,然后是字节四次。然后必须将四个名称放入一个数组中,并将字节放入一个单独的数组中,以便我可以同时访问它们的元素。歌曲1,字节1.歌曲2,字节2等。他将在每个项目后发送'\ 0'信号转换到下一个。 我还必须设计一些内容,如果他发送“send int”后跟'\ 0',它会将我的数组中的项目加载回他的程序,仍然使用'\ 0'作为每个单独项目信号的结尾,并且相同的订单。列表项然后字节,四次。 这些阵列也需要保存到EEPROM中,因此arduino可以通过远离计算机的信息执行其他任务。这意味着当程序需要时,还必须从EEPROM中提取信息。我下载了EEPROMex库,我想我可以做到这一点,但到目前为止,我的沟通努力没有产生任何结果。下面是我到目前为止拼凑在一起的代码的副本。任何帮助将非常感激。这是我用来尝试这个的循环。

 while (Serial.available() > 0) {
buffer[buffindex++] = Serial.read();
if (buffindex == MAX_BUFF_SIZE) {
  buffindex=0;
  return;
  }
if (buffindex > 6 && Serial.read() == '\0') {
  if (buffer == upload) {
    for (x = 0; x < 4; x++) {
      Serial.print(songlist[x]);
      Serial.print('\0');
      Serial.print(mypedal[x]);
      Serial.print('\0');
    }
  }

  if (buffer == download) {
    for (y = 0; y < 4; y++) {
      Serial.readBytesUntil('\0', mysong, 25);
      songlist[y] = mysong;
      Serial.readBytesUntil('\0', mysong, 25);
      mypedal[y] = int(mysong);
    }
    address1 = 0;
    address2 = 4000;
    EEPROM.updateBlock(address1, songlist, 4);
    EEPROM.updateBlock(address2, mypedal, 4);
  }
}

}

0 个答案:

没有答案