코드가 작성된 OS에 따라 두 가지 솔루션이 있습니다. * nix OS serial.rs 라이브러리는 녹 0.11.0 빌드에서 제대로 작동하지만 rust-0.12.0을 지원하기 위해 문제가 열렸지만 아직 닫히지 않았습니다.
Windows 용 (mingw-w64)의 경우 serial.rs는 mingw 용으로 쉽게 설정할 수없는 termios 호출을 기반으로하기 때문에 간단한 해결책이 아닙니다. 그것은 mingw가 msvcrt에 대해 glibc에 대해 만들어지지 않았다는 점에서 비롯됩니다 (자세한 내용은 here 참조). Windows에서 간단한 솔루션은 teuniz가 rust FFI를 사용하여 rs232과 같은 라이브러리의 래퍼를 작성하는 것입니다.
mingw gcc를 사용하여 빌드 라이브러리 rs232;
녹이있는 래퍼를 만듭니다. Windows 용
짧은 예는 다음과 같습니다
extern crate libc;
use libc::{c_int,c_uchar,c_uint};
use std::os;
//
#[link(name = "rs232")]
extern {
fn RS232_OpenComport(comport_number:c_int, baudrate:c_int) ->c_int;
fn RS232_SendByte(comport_number:c_int, byte:c_uchar)->c_int;
fn RS232_CloseComport(comport_number:c_int);
}
static COM10:c_int=9;
fn main() {
let y=unsafe{RS232_OpenComport(COM10, 115200)};
unsafe{
RS232_SendByte(COM10,101);
RS232_SendByte(COM10,100);
}
let cl=unsafe{RS232_CloseComport(COM10)};
}
표준 라이브러리에 없으므로 FFI를 통해 C 함수를 직접 사용해야하거나 다른 사람이 작성한 라이브러리를 사용해야합니다. 해당 라이브러리에만 문제가 있습니까? 더 이상 컴파일되지 않습니다. 그렇다면 아마도 Rust 버전으로 컴파일하도록 업데이트 할 수 있습니다. (해당 도서관에는 (a 옵션) ['FileDesc']가 들어있는 [public field] (https://github.com/japaric/serial.rs/blob/master/src/serial.rs#L24)가 있습니다. (http://doc.rust-lang.org/master/native/io/file/struct.FileDesc.html).이 페이지는 해당 페이지에서 언급 된 특성을 통해 읽고 쓸 수 있습니다.) – huon