[0033] 下面结合附图对本发明的技术方案作进一步详细描述:
[0034] 图1示出了按照通信协议对数据进行处理的流程图。主要包括可见光信号发送端1的流程和接收端2的流程。发送端的流程包括数据编码、添加帧头部和LED点阵显示。接收端的流程包括捕获图像、提取数据帧和数据解码。发送端的具体步骤如下:
[0035] 步骤一、对需要传输的数据以字符串形式表示,即用一个8个二进制位的ASCII码来表示一个字符。经ASCII编码后,得到由0与1组成的二进制串。
[0036] 步骤二、以6个二进制位为一个单位,对所述二进制串进行Base64编码,得到Base64字符串。
[0037] 步骤三、对得到的字符串,以单个字符为单位,表示成ASCII码。
[0038] 步骤四、以56个二进制位为单位,将其作为一个数据帧的数据内容,为其添加8位帧头部。
[0039] 步骤五、用LED点阵来表示该64位的数据帧。
[0040] 接收端的具体步骤如下:
[0041] 步骤一、通过手机相机获取LED点阵的图像,提取图像中的数据帧。
[0042] 步骤二、判断该帧的类型,根据不同的帧类型进行不同的处理。如果是传输帧则有下述步骤。
[0043] 步骤三、对于56位的数据内容,根据ASCII码的表示方式,得出该数据内容表示的字符串信息。
[0044] 步骤四、对所述字符串信息进行Base64解码,得出原始需要传输字符串的ASCII码。
[0045] 步骤五、利用得出的ASCII码,还原出原始传输的字符串。
[0046] 图2示出了数据帧的帧结构。LED点阵的第一排LED灯用于表示帧的头部,其余部分用于表示该帧的数据内容。
[0047] 图3示出了帧头部所划分的字段。帧头部有8个比特位,包含:
[0048] 重复指示器,第1个比特位,用于区分相邻的两个数据帧。
[0049] 帧类型字段,第2至5个比特位,用于表示该数据帧的类型;以及[0050] 空白字段,第6至8个比特位,未使用。
[0051] 所述重复指示器,用于区分相邻的两个数据帧,以防止手机对同一个数据帧进行多次数据提取。
[0052] 所述帧类型,包括:
[0053] 定位帧,用于检测LED点阵与手机相机之间的旋转角度;
[0054] 起始帧,用于表示该帧为数据传输开始的第一个帧;
[0055] 传输帧,用于表示该怎为书传输过程中的帧;
[0056] 结束帧,用于表示该帧为数据传输的最后一个帧;
[0057] 错误帧,用于表示该帧发发生编码错误。
[0058] 各个帧在数据传输过程中出现的先后顺序如图4所示,传输过程中可能出现错误帧。
[0059] 所述旋转角度检测的过程中,将定位帧进一步构造为校正帧。通过对校正帧进行识别就可得出旋转角度,并对后续相机所捕获到的图像,一致旋转该角度,以此保证数据的正确读取。图5为校正帧的示意图。
[0060] 所述校正帧在传输过程中有两种出现方式:
[0061] 在传输的最开始出现,将这时的旋转角度用于校正后续所有帧,如图6;
[0062] 定期在传输过程中出现,如图7。
[0063] 本发明在可见光系统中的应用能够使得数据稳定并安全地传输,而且有能力处理LED点阵与手机相机呈现不同旋转角度时的情况。