하나 이상의 데이터 프레임을 포함 할 수있는 Byte[]
버퍼가 있습니다. 실제 프레임의 길이를 알기 위해 첫 번째 바이트를 읽어야합니다.F # 배열의 시작과 일치
let extractFrame (buffer:byte[]) =
match buffer with
| [|head1;head2;head3;..|] when head2 < (byte)128 -> processDataFrame buffer head2
| <...others....>
| _ -> raise(new System.Exception())
는 기본적으로, 처음 세 바이트를 평가 한 후 버퍼와 실제 길이와 processDataFrame
를 호출해야합니다
이 내가 뭘 원하는지의 "비 작업"버전입니다 프레임. 헤더에 따라 프레임은 데이터, 컨트롤 등이 될 수 있습니다.
모든 종류의 일치 (목록, 시퀀스, ... 등 ...)로 수행 할 수 있습니까? 아니면 헤더의 길이가 다른 작은 배열을 만들어야합니까? (나는 이것을 피하고 싶습니다).
if/then을 사용하여 처음 세 바이트를 평가하는 것이 더 쉽지 않을까요? –
그게 내가 알아 내려고 노력하고 ... 많은 경우가 있고, 나는 F 에서이 일을하는 올바른 방법을 궁금 해서요. – vtortola