Flex でマシン統合を行う AIR プロジェクトを開発しています。あるマシンでは、私のアプリは非常にうまく機能し、マシンから必要なデータを受け取ることができます。2つ目は、「READY」という種類のオフ信号をマシンに送信し、それに対して「ACK」を返す(ハンドシェイク)必要があると思います。その後、通信のみが開始されます。
この 'READY' シグナルは、Socket を使用して ActionAcript からどのように送信できますか。
私の 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 ピンのミニ DIN (オス) で、システムには db9 ピン (通常どおり) です.. シリアル ポート通信は、外部ツール 'SerProxy' によって行われます。 . SerProxy は、マシン システムとの間でデータを送受信します。アプリを使用して、ソケットを使用してシステムのポートに接続し、読み取りおよび書き込み操作を実行する必要があります。
onSocketData
ここでの問題は、関数でデータを受信しないことです。通信を開始する前に、READY 信号を送信する必要があります。Flex でこれを行う方法がわからないため、ここで立ち往生しています。どんなアイデアや提案も大歓迎です。