我正在为我的大学工作,我正在使用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();
}
}
}
答案 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);