2015-02-03 3 views
3

터미널에서 screen 명령을 사용하는 것과 같은 방법으로 USB 장치와 통신하는 응용 프로그램을 만들려고합니다. IOKit을 사용하여 USB 장치와 통신하기

내 질문 이해하기 쉽게하려면, 이것이 내가 일반적으로 터미널에서 할 것입니다 :

명령을

ls /dev/tty.usb* 

반환 :

/dev/tty.usbmodem1411 /dev/tty.usbmodem1451 

다음, 내가 전화 :

screen /dev/tty.usbmodem1411 

그런 다음 장치에 명령을 보낼 수 있습니다 (예 : 'U'를 입력하면 응답 받기)

지금 Xcode에서이 작업을 수행하려고합니다. IOKit를 사용

가, 내가 USB 포트의 목록을 반환 첫 번째 명령에 해당 무엇을 실행하기 위해 관리했습니다 : 심지어 지금

@IBAction func testPressed(sender: AnyObject) { 

     var portIterator: io_iterator_t = 0 
     let kernResult = findSerialDevices(kIOSerialBSDModemType, serialPortIterator: &portIterator) 
     if kernResult == KERN_SUCCESS { 
      printSerialPaths(portIterator) 
     } 

    } 

    func findSerialDevices(deviceType: String, inout serialPortIterator: io_iterator_t) -> kern_return_t { 
     var result: kern_return_t = KERN_FAILURE 
     var classesToMatch = IOServiceMatching(kIOSerialBSDServiceValue).takeUnretainedValue() 
     var classesToMatchDict = (classesToMatch as NSDictionary) as Dictionary<String, AnyObject> 
     classesToMatchDict[kIOSerialBSDTypeKey] = deviceType 
     let classesToMatchCFDictRef = (classesToMatchDict as NSDictionary) as CFDictionaryRef 
     result = IOServiceGetMatchingServices(kIOMasterPortDefault, classesToMatchCFDictRef, &serialPortIterator); 
     return result 
    } 

    func printSerialPaths(portIterator: io_iterator_t) { 
     var serialService: io_object_t 
     do { 
      serialService = IOIteratorNext(portIterator) 
      if (serialService != 0) { 
       let key: CFString! = "IOCalloutDevice" 
       let bsdPathAsCFtring: AnyObject? = IORegistryEntryCreateCFProperty(serialService, key, kCFAllocatorDefault, 0).takeUnretainedValue() 
       var bsdPath = bsdPathAsCFtring as String? 
       if let path = bsdPath { 
        println(path) 
       } 
      } 
     } while serialService != 0; 
    } 
} 

:

/dev/tty.usbmodem1411 /dev/tty.usbmodem1451 

이 코드입니다 Apple의 IOKit 설명서를 읽은 후에는 앞으로 나아갈 수 없습니다. IOKit을 사용하여 명령을 보내려면 어떻게해야합니까?

답변

0

Apple Performing Serial I/O 샘플 프로젝트를 참조하십시오.

+0

감사합니다. 나는 그것을 들여다 보니 당신에게 돌아갈 것입니다. – kmn

+1

안녕하십니까, 링크 주셔서 감사합니다. 나는 이것을 빨리 할 길을 찾고있다. C에 있습니다. 당신의 도움에 감사드립니다. – kmn

+0

@ kmn 당신이 이것을 얻었습니까? 나는 똑같은 것을 찾고있다! – Boggartfly

관련 문제