首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于xbee的SD卡图像传输

基于xbee的SD卡图像传输
EN

Stack Overflow用户
提问于 2015-01-24 18:23:47
回答 1查看 2.8K关注 0票数 0

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

代码语言:javascript
复制
 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字符)和U(结束字符)。我只能看到结束字符Y,不能看到正确的结束字符。

请advise...trying硬解决这个问题。非常感谢..。

EN

回答 1

Stack Overflow用户

发布于 2015-01-25 14:14:26

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

(在函数顶部将bytesread声明为byte。)

代码语言:javascript
复制
while ((bytesread = file.read(buf, sizeof(buf))) > 0)
{
    Serial.write(buf, bytesread); // Send to xbee via serial
    delay(50); 
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28124475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档