当前位置:  开发笔记 > 编程语言 > 正文

让我的串口与我的Adobe Air应用程序通信

如何解决《让我的串口与我的AdobeAir应用程序通信》经验,为你挑选了0个好方法。

我遇到过这个问题,我需要一个简单的医疗设备来输出一串逗号分隔的数字到我的Adobe Air应用程序.我很高兴与网络服务之外的其他事情交谈!

所以,我有一个USB转串口适配器,插入我的电脑,并使用一个名为Cornflake的程序从机器上读取:

0,1,71.0,234.2,453,31.1,72.8,161.4,118.2,30,32.7,9336

成功!所以我做了一些谷歌搜索,似乎serproxy是一个方便的工具,Arduino buff正在使用它来完成我所需要的:串行到闪存.所以我下载,安装和配置如下:

newlines_to_nils=false

serial_device1=/dev/cu.usbserial


comm_ports=1,2,3,4

comm_baud=2400
comm_databits=7
comm_stopbits=1
comm_parity=even

timeout=300

net_port1=5331 
...

这些与我在Cornflake中使用的设置相同.我插入一些简单的actionscript来监听事件,当我捕获数据事件时,我这样做:

private function onSocketData(event:Event):void {
  var data:String = socket.readUTFBytes(socket.bytesAvailable);
  trace(data);
}

这输出了胡言乱语:

¬±¬·±.0¬²3'0-0'53¬3±.±¬·¸.¸±6±.±¬¸ω30¬3².6¬933±

所以我假设我没有阅读正确的编码.好像它应该是ascii,所以我这样做:

var data:String = socket.readMultiByte(bytes.bytesAvailable, "us-ascii");

没有骰子.所以我开始尝试一堆不同的编码并得到同样的胡言乱语.我将串口改为tty.usbserial,尝试翻转换行标志,所有都具有相同的结果.所以,很沮丧,我读了前几个字节,看看我从serproxy中得到了什么:

trace(socket.readByte().toString());

看起来我得到的是负数:

48 -84 -79 -84 -73 -79 46 48 -84 -78 51 -76 46 -78 -84 -76 53 48 -84 51 48 46 57 -84 -73 -78 46 -76 -84 -79 54 - 79 46 -72 -84 -79 -79 -72 46 -76 -84 51 48 -84 51 -78 46 -73 -84 57 51 51 54 -115 10

不知道这意味着什么,我垂头丧气,徘徊到stackoverflow,希望那里的人可以教我在seriports101中我从未学过的东西.

数据

[解]

我遇到的问题是ActionScript无法读取奇偶校验位.因此,当它看到10101100(偶数奇偶校验位翻转44)时,它读为-84.现在这可能看起来很奇怪,就像它对我一样,所以你想在维基百科上阅读所有关于它的内容.

现在,为了解决这个奇怪的问题,我们只需要确保如果将奇偶校验位翻转为1,我们将其翻转回零.这样做很简单,因为ActionScript将奇偶校验位读取为字节.

var text:String = "";
var tmp:int = socket.readByte();
var charCode:int code;
if(tmp < 0)  //check to see if the parity bit was flipped to 1
{
     code=tmp & 0x7F;  //reset the parity bit to 0
}
else
{
     code=tmp;  //nothing to do if parity bit is 0
}
text+=String.fromCharCode(code);

所以你有它.

[/解]

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有