2014-05-15 6 views
0

Enfora MT4000 장치로 작업하고 있습니다. 특정 이벤트가 발생하면 장치가 tcp 또는 udp 서버로 데이터를 보냅니다. 데이터는 바이너리 또는 ASCII 형식으로 보낼 수 있지만 바이너리를 사용해야합니다. AT로 구성되어노드 TCP 소켓 : Enfora MT4000에서 이진 데이터 읽기

엔포 장치는 다음과 같이 명령 :

AT$EVENT=14,0,7,1,1 
AT$EVENT=14,3,52,14,1578098 

내가 ASCII와 장치를 구성 할 때, 서버가이 형식으로 데이터를 수신 : 나는 이진 사용하는 경우,

r  13 0 0 $GPRMC,211533.00,A,3321.856934,S,07040.240234,W,0.0,0.0,120514,2.3,W,A*2B 

그러나 , 데이터는 다음과 같습니다 :

$2K� �Dk����a�H 

누구나 Node.js가 어떻게 바이너리 da 소켓에서? 아주 간단한 스크립트로이 작업을 수행하려고합니다.

감사합니다.

답변

2

'data'이벤트 핸들러의 인수는 이미 Buffer입니다. data.toString()을 호출하면 해당 버퍼가 (기본적으로 UTF-8) 문자열로 변환됩니다. 원래 바이너리 데이터가 필요한 경우 Buffer로 유지하고 사용하는 것이 좋습니다.

+0

자바 스크립트로 버퍼의 데이터를'string'으로 변환 할 수 있습니까? –

+0

ASCII는 UTF-8의 하위 집합이므로 기본 buffer.toString()이 올바른 결과를 반환해야합니다. – levi

+0

@DaniloAburto 기대하는 문자열의 종류가 명확하지 않습니다. 데이터가 부분 바이너리 및 부분 문자열 인 경우 encoding, start 및 end 인수가있는 [. toString()] (http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) 데이터를 사용할 수 있습니다. – mscdex