2013-01-07 3 views
0

Flex에서 기계 통합을 수행하는 AIR 프로젝트를 개발 중입니다. 하나의 컴퓨터에서, 내 앱은 내가 원하는대로 컴퓨터에서 데이터를받을 수 있다는 점에서 정말 효과적이다. 두번째로, 나는 우리가 'READY'kind off 시그널을 머신에 보내야만하는 것처럼 보인다고 생각한다. 그 시그널은 우리가 '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 핀 미니 DIN (남자) ... 시스템에이입니다 db9 핀 (보통) .. 직렬 포트 통신은 외부 도구 'SerProxy'에 의해 수행됩니다. SerProxy는 machine-System과 데이터를 송수신합니다. 이 앱을 사용하면 Socket을 사용하는 시스템의 포트에 연결하고 Read & 쓰기 작업을 수행해야합니다.

여기 내 문제는 내 onSocketData 기능의 데이터를받지 못합니다. 통신이 시작되기 전에 READY 신호를 보내야합니다. Flex에서이 작업을 수행하는 방법을 알지 못해서 여기에 붙어 있습니다. 어떤 아이디어 나 제안도 열렬히 환영합니다.

답변

0

Socket API을 사용하면 문자열과 바이트를 이진 소켓에 쓸 수 있습니다. 당신 소켓이 연결되면

, 당신이 뭔가를 할 수 있습니다

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

당신은 당신이 그것을 전송해야 정확히 보낼 수 있도록이 코드를 적용해야합니다. writeByte을 사용하여 널 ("\ 0") 문자 나 제어 문자를 쓸 수 있습니다.

데이터를 읽으려면 읽기 방법을 사용해야합니다.

관련 문제