使用Arduino和VDIP 1创建文件

时间:2014-03-07 00:13:34

标签: arduino

我正在为我的大学工作,我正在使用Arduino mega 2560和VDIP1模块[http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_VDIP1.pdf]

此时我设法在连接到VDIP1的USB闪存驱动器上创建一个文件并打印128位。问题是,当我在文件中打印一条消息时,它存储为ascii我想从发送的字节中创建文件。

例如,如果我发送字节:0x61我想创建一个字节源为“61”的文件。

我尝试做但失败的是:

 int byte1 = 0x61;
 Serial1.print ("OPW TEST5.HEX");
      Serial1.write (13);
      WaitForResponse(true, 10000);

      //
      //WRITE TO FILE
      //

      Serial1.print("WRF 1");
      Serial1.write(13);
      WaitForResponse(true, 1000);
      Serial1.print(byte1);
      Serial1.write(13);

      WaitForResponse(true, 1000);

      //
      //CLOSE THE FILE
      //

      Serial1.print("CLF TEST5.HEX");
      Serial1.write(13);

      WaitForResponse(true, 10000);

它正在创建文件,但它不包含我想要的内容:

HEX值:39

ASCII值:9

编辑:

在你的帮助下,我设法将原始二进制文件写入文件[我不知道它是如何被称为]。但我也陷入了另一个问题。

将闪存驱动器插入VDIP后,我需要运行两次程序来创建并写入文件,甚至创建它。

整个代码是:

char incomingByte = 0;
int inPinFlow = 28;
int byte1= 0x61;

void setup(){
  pinMode(inPinFlow, INPUT);
  Serial.begin(57600);
  Serial1.begin(9600);

  Serial1.print("IPA");
  Serial1.write(13);

  Serial.println();
  Serial.print("Initialization finished");  
}
void loop(){

  if (Serial.available()){

    incomingByte = Serial.read();

    Serial.println();
    Serial.print("command = ");
    Serial.print(incomingByte);
    Serial.println();

    if(incomingByte == '1'){

      Serial1.print("OPW TEST5.HEX");
      Serial1.write(13);

      Serial.println();
      Serial.print("Open file: ");
      Serial.println();

      Serial1.print("WRF 1");
      Serial1.write(13);


      Serial.println();
      Serial.print("Prepare for writing: ");
      Serial.println();

      Serial1.write(byte1);
      Serial1.write(13);


      Serial.println();
      Serial.print("Write: ");
      Serial.println();
      delay(500);
      Serial1.print("CLF TEST5.HEX");
      Serial1.write(13);


      Serial.println();
      Serial.print("Close file: ");
      Serial.println();

      Serial.print("END");
      Serial.println();
    }
  }
} 

2 个答案:

答案 0 :(得分:0)

请参阅第here on Serial print页。

从该页面开始:

  

可选的第二个参数指定要使用的基数(格式);   允许值是BIN(二进制或基数2),OCT(八进制或基数8),   DEC(十进制或十进制),十六进制(十六进制或十六进制)。对于浮动   点数,此参数指定小数位数   使用。例如:

所以也许试试:

Serial.print(78, HEX) // gives "4E" 

(我很惊讶Arduino能够自己写一个文件 - 剩下的代码是什么呢?)

答案 1 :(得分:0)

不是VDIP1的专家,而且在其USB记忆棒命令上找到数据有点困难。我从article and example看到WRF需要包括(13)。所以我相信你应该从

改变以下一行
Serial1.print("WRF 1");

Serial1.print("WRF 2");

我怀疑VDIP没有正确关闭文件。


请注意相关的article

Serial.print(13, BYTE);

已替换为

Serial.write(13);