0

我正在开发一个 AIR 项目来在 Flex 中进行机器集成。在一台机器上,我的应用程序运行得非常好,我能够根据需要从机器接收数据。在第二个中,我认为就像我们必须向机器发送“READY”类关闭信号,我们将获得“ACK”作为回报(握手),然后才开始通信。

如何使用 Socket 从 ActionAcript 发送这个 'READY' 信号。

我的 ActionScript 类文件将如下所示..

protected var socket:Socket;
public function init():void
{
    socket = new Socket;
    socket.addEventListener(Event.CONNECT, onConnect);
    socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
    socket.addEventListener(Event.CLOSE, onClose);
}

/*** connect to the socket */
public function connect():void
{
    if(socket.connected)
    {
        Status = "Socket is already listening to Port " + socket.remotePort + " in " + socket.remoteAddress;
        return;
    }
    socket.connect("localhost", 5331);
}

/*** handles socket connect event */
private function onConnect(event:Event):void
{
    if(socket.connected)
        Status = "Connection established successfully from " + Capabilities.os;
    else
        Status = "Connection failure!";
}

/*** manipulation of received data */
private function onSocketData(event:ProgressEvent):void
{
    //Data Recieved
}

/*** handles socket close event */
protected function onClose(event:Event):void
{
    Status = "Socket Connection is being closed..";
}

机器(KR-8900)的输出是 RS232.. 8 pin mini din(男).. 系统是 db9 pin(和往常一样).. 串行端口通信由外部工具“SerProxy”完成. SerProxy 将向机器系统发送和接收数据。使用该应用程序,我必须使用 Socket 连接到系统中的端口并执行读写操作。

我的问题是我的onSocketData函数中没有收到任何数据。在通信开始之前,我需要发送 READY 信号。我被困在这里,因为我不知道如何在 Flex 中执行此操作。任何想法或建议都受到热烈欢迎。

4

1 回答 1

0

Socket API允许您将字符串和字节写入二进制套接字。

连接套接字后,您可以执行以下操作:

socket.writeUTFBytes("READY");
socket.flush();

您必须调整此代码,以便它准确发送您需要发送的内容。您也可以使用writeByte写入空 ("\0") 字符或任何控制字符。

要读取数据,您需要使用读取方法。

于 2013-01-07T09:43:55.203 回答