我在中国的公交系统中看到,公交车内有可以处理电子支付的设备。这个过程是这样的:
- 乘客上车。
- 乘客使用智能手机应用程序中的二维码在设备屏幕上擦拭(二维码扫描仪)
- 如果乘客成功充电,他们将被允许在巴士上就座。如果没有,设备会发出一些警报。
我正在尝试在我的大学中为我的项目实施这个系统。起初,我使用树莓派和二维码扫描模块来识别二维码,并通过 Wi-Fi 将数据推送到远程服务器上的 API。我的做法是,每次设备收到二维码时,它都会立即将该数据发送到 API。然后 API 处理所有事情并将响应发送回设备。
一切正常。但是,出现了一个问题,每次发送之间似乎要花费很多时间,而且我并没有真正处理一些意外情况,例如将数据发送到 API 时连接丢失。
例如,当第一位乘客来了,把手机APP的二维码放到设备上,但整个过程大约需要4-6秒(包括将乘客的数据发送到服务器的API,API处理收费,余额处理) ,然后将响应发送回设备以检查是否允许该乘客进入)。有时,设备失去连接,因此乘客无法使用该设备。
于是,我萌生了这样的想法:
- 我会将数据库中乘客的关键数据(Id、姓名、余额)与设备的存储同步。
- 现在,处理付款将直接在设备上实现。例如,该设备将检查乘客的二维码,然后与其存储中的数据进行比较,以处理该乘客是否可以进入。
- 在所有乘客完成登记后(即公交车移动时),设备的存储将再次与服务器的数据库同步。
我认为如果系统以这种方式运行,它会很顺利,因为所有事情都会在本地完成,直到它们同步。
以上就是我的系统和我的想法的简要总结。但是,我不在中国,我的国家到目前为止也没有实施类似的系统,所以我没有任何参考来源。
如果你们能给我一些关于这个新想法的方向或任何相关参考资料,我将不胜感激。
- 有可能吗?
- 里面是否隐藏着一些危险的逻辑?
- 如果是的话,你能帮我一些提示吗?例如,服务器数据库和设备数据库之间同步数据的最佳时间是什么时候?
- 在服务器端,我使用 ASP.net 编写 API,通过使用实体框架处理乘客数据并不难(查找、编辑、更新)。但是我怎样才能在 Raspberry Pi 中做类似的事情来进行本地处理呢?