답변

4

RS-232/USB 어댑터를 사용 중이라고 가정합니다. 만약 내가하고 있었다면, 나는 어떤 장치가 나타나는지 파악하고, open ("/ dev/ttyS0", etc) 함수를 사용하여 열어 보았다. 그런 다음 파일 설명자와 액세스 함수를 객체로 마무리 할 수 ​​있습니다. 여기

는 POSIX 환경에서 시리얼 포트와 함께 연주에 대한 페이지입니다 : 내가 뜸에서 "시리얼 디바이스 서버 소위"사용 http://www.easysw.com/~mike/serial/serial.html

+0

을 어디서 것 이 기능에 대한 설명서를 찾으십니까? 죄송합니다.이 언어로 시작해야합니다. – eastydude5

+0

또한 baud, tx/rx 차단 등을 구성하는 방법은 무엇입니까? – eastydude5

+0

내가 링크 된 페이지는 그 정보와 몇 가지 예제 코드를 제공해야합니다. open() 시스템 호출은 터미널을 열고 "man 2 open"을 입력하십시오. –

0

하고 그것이 마치 마법처럼 일했다. USB 직렬 변환기 위에

장점 :

  • 장치는 단지 잘 문서화 네트워크 프로그래밍을 일반

디바이스 서버 인 네트워크 애플리케이션 측

  • 어딘가에 통합 될 수있다 LAN 또는 WiFi과 같은 네트워크를 사용하여 직렬 장치에 연결할 수 있습니다.

    소프트웨어 측면이 같은 아주 쉽게 네트워크/소켓 프로그래밍, 다음과 같습니다

    (GCDAsyncSocket 사용)

    준비 데이터

    static u_int8_t cmd1[] = { 0x1a, 0x73, 0x10 }; //defined by the serial device's protocol 
    static u_int8_t cmd2[] = { 0x1b, 0x51, 0x01 }; 
    
    self.data = [NSMutableData dataWithBytes:&cmd1 length:sizeof(cmd1)]; 
    [self.data appendData:[string dataUsingEncoding:NSUTF8StringEncoding]]; 
    [self.data appendBytes:&cmd2 length:sizeof(cmd2)]; 
    

    전송 데이터

    -(IBAction)buttonAction:(id)sender 
    { 
        NSError *error = nil; 
        [self.socket connectToHost:@"192.168.1.9" onPort:1234 withTimeout:-1 error:&error]; 
        if (error) { 
         NSLog(@"error: %@", error); 
        } 
    } 
    
    
    -(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port 
    { 
        [self.socket writeData:self.data withTimeout:-1 tag:23]; 
    }