使用xbee进行SD卡图像传输

时间:2015-01-24 10:23:47

标签: arduino xbee

我试图从arduino(20KB-JPEG -using SD库)读取SD卡图像并通过Xbee(系列2)传输由于xbee的限制,必须打破60个字节并发送直到完整文件发送。我认为,图像以ASCII字符存储。

 void setup() {

 Serial.begin(115200);

 if (!SD.begin()) {

Serial.println("begin failed");
return;
       }

 file = SD.open("PIC00.JPG");

 }
   void loop() {
   Serial.flush();

char buf[64];
if(file) {
while (file.position() < file.size())
         { 
   while (file.read(buf, sizeof(buf)) == sizeof(buf))  // read chunk of 64bytes 
         {

        Serial.write(buf); // Send to xbee via serial
         delay(50); 
         }

      }
       file.close();
} }

但是这种方法,我无法在串行写入时看到完整的图像传输。过了一会儿,我才知道图像的开头是Y(ascii chracter)和U(结束字符)。我只能看到结束开始字符Y看不到正确的结束字符。

请指教......努力解决这个问题。非常感谢...

1 个答案:

答案 0 :(得分:1)

JPEG实际上是二进制数据。要发送它,请使用Serial.write()的版本,其中包含要发送的字节数的长度参数。否则,它认为您正在尝试发送以空字符结尾的字符串。

(在您的函数顶部声明bytesreadbyte。)

while ((bytesread = file.read(buf, sizeof(buf))) > 0)
{
    Serial.write(buf, bytesread); // Send to xbee via serial
    delay(50); 
}

另请注意,延迟可能不够 - 您应该使用具有硬件流控制的串行端口(从XBee模块监视/CTS),以便您知道何时向其发送数据是明确的。