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

时间:2010-11-04 17:36:35

标签: air serial-port byte

我遇到过这个问题,我需要一个简单的医疗设备来输出一串逗号分隔的数字给我的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''53¬3±。 ±¬·¸.¸±6±。±|¸.0¬03¬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中我从未学过的东西。

data

[溶液]

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

现在,为了解决这个奇怪的问题,我们只需要确保如果将奇偶校验位翻转为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);

所以你有它。

[/溶液

1 个答案:

答案 0 :(得分:3)

48十进制= 0(零)

所以,你是一个正确的轨道;相反,打印它们的数值(并在奇偶校验位上花费一些时间)

[编辑]
另请注意,46十进制=。 (期间)
54十进制= 6(六)
51十进制= 3(三)

最后,请注意 0,1,71.0,234.2,453,31.1,72.8,161.4,118.2,30,32.7,9336 ±.0-的非巧合连接²3².6¬933..

所以你实际上比你想象的要近一些 [/编辑]