最近项目遇到需要Flex端与单片机的通信需求。单片机的开发语言为C语言,所以我们传统的通信方式(采用XML或者json格式传送数据)就不能用了,因为C语言不能解析,只有直接使用包装字节数组的方式来与C通信。
Flex没有byte类型,所以这里需要采用令为一种方式,也是FlexSDK提供了接口的。
Flex的UDP通信类为DatagramSocket。在接收数据的时候不能向以往一样直接全部读出,然后解析。这里需要按照byte子节点的节点,一个一个的往外读出数据。用到的方法有:
event.data.readUnsignedByte();从字节流中读取无符号的字节。返回值的范围是从 0 到 255。
event.data.readBytes(bytes:ByteArray, offset:uint=0, length:uint=0);从字节流中读取 length
参数指定的数据字节数。从 offset
指定的位置开始,将字节读入 bytes
参数指定的 ByteArray 对象中,并将字节写入目标 ByteArray 中。
这个方法很重要,他可以帮助我们读出byte[],chart[]。
event.data.readUnsignedInt();从字节流中读取一个无符号的 32 位整数。返回值的范围是从 0 到 4294967295。
event.data.readUnsignedShort();从字节流中读取一个无符号的 16 位整数。返回值的范围是从 0 到 65535。
这是几种常用的方法,当然还有很多方法帮助我们获取字节流中的数据。需要注意的是,使用什么方法来读数据取决于C端的数据类型,长整型,短整形,byte数组,chart数组等等,不能使用混淆,否则容易出现错误和内存泄漏。
这里强调一下event.data.readBytes(bytes:ByteArray, offset:uint=0, length:uint=0);这个方法,Flex对于这个方法的帮助文档很是坑爹,我们也走了不少弯路。 offset偏移量是指在bytes中的偏移量,而不是我们接收的字节流的偏移量,这里一定要注意。
彭亚欧个人博客原创文章,转载请注明出处
文章关键词:Flex与C的UDP通信 FlexUDP
文章固定链接:https://www.pengyaou.com/homeart/Mzg=.html
上一篇 SQLserver数据备份与还原
下一篇 Js生成3D饼状图