用其他设备模拟SD卡或两个设备共享同一个SD卡。

3

我正在寻找一个项目入门的提示。

我有一台设备可以读取SD卡中的数据。但我无法通过任何方式远程控制它 - 我只能通过在SD卡上保存新数据来“控制”这个设备。我需要手动操作 - 所以如果我想更改10个设备上的某些数据,我需要拿出10张sd卡,发送新数据,然后把它放回设备中。

1)我想知道是否可以使用arduino或树莓派来模拟SD卡。这个设备将直接从arduino读取数据,而不是从SD卡读取数据。Arduino易于控制。

2)第二种解决方案是两个设备共享一个SD卡。Arduino / RaspberryPi / Android设备将向SD卡发送数据,另一个设备将读取数据。

但我想每隔10-15秒更改一次数据,因此共享一个SD卡可能会有问题。

你有任何解决这个问题的想法吗? 这是可能的吗? 编辑: 也许我没有清楚地提到,但我不能更改阅读设备,我不能在那里安装任何东西。它是黑盒设备,只能从SD卡中读取数据。


你知道读卡器是如何访问SD卡的吗?如果它使用SPI接口,你可以让RPi模拟SPI SD卡协议并出现为读卡器中的SD卡。 - Craig
2个回答

0

基本上你有两个选择:要么模拟一个SD卡,要么使用真正的SD卡并在你的Arduino和读取设备之间切换。

要模拟一个SD卡,你需要使用FPGA并编写相当多的VHDL / Verilog代码。由于涉及到高时钟速率(主机可能以几兆比特每秒的速度向你请求数据),因此您无法通过微控制器软件来完成这项工作。

此外,即使您能够做到这一点,仍然有很大的机会在进行更改时“断开”读卡器与SD卡的连接,至少要短暂时间内这样做,否则读卡器将不知道您已更改了卡的内容:它可能无法读取新文件,甚至可能覆盖它们。


0

我使用Dropbox Sync API来实现我的设备之间的单向同步。只需在Dropbox中更改一个文件或文件夹,然后我的设备会获取所有更改并写入它们的SD卡。

但是,这也存在一些挑战,我花了一些时间才使其正常工作。主要是因为Sync API的行为与PC上的Dropbox不同,它不会自动下载文件,而是能够判断哪些文件发生了变化,并在需要时再进行懒加载。虽然这可能对你的用例足够了,但是我需要离线访问文件,并且必须经过一些步骤才能在用户实际请求文件之前将其下载到SD卡中。

如果你只需要相对简单的数据或小文件,我建议使用parse.com。请注意,我还没有使用过这个系统,但它看起来非常有前途。

编辑:

现在明白对你来说上述不可能,那么在设备之间共享SD卡应该是可以的,我想。你可以在写入SD卡时创建一个简单的空文件,比如.lock,并在写入后立即删除它。这样,每当其中一个设备尝试读取数据时,如果它们看到.lock文件,就知道他们应该等一会儿再次进行读写操作。这可能是一个简单的解决方案,以避免损坏数据。

1
也许我没有表达清楚,但我无法更改阅读设备,也无法在那里安装任何东西。它是一个黑匣子设备,只能从SD卡中读取数据。 - user2893624
我明白了,我只是被安卓的思维方式所影响 :) 所以我没有任何聪明的想法。 - cYrixmorten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接