"C#을 통해 NetworkStream에서 데이터를 쓰는 좋은 방법을 찾고 텍스트 파일에"quasi 동시에 텍스트 파일에서 새로 작성된 데이터를 Matlab으로 읽어들입니다."실시간"C# write-to-file 및 MATLAB 읽기 - 파일 작업을 최적화하는 방법
기본적으로 읽기 작업이 쓰기 작업을 차단하지 않으며 그 반대의 경우 쓰기 및 읽기 작업을 조정하는 좋은 방법이나 기술이 있으며 (그 반대의 경우) 연속 쓰기/읽기 간의 지연은 최소화 된?
현재 네트워크 스트림의 데이터를 WriteLine 루프를 통해 텍스트 파일에 쓰는 중입니다 (추가). 마지막 요소를 읽은 Matlab의 fscanf 함수를 반복하여 데이터를 읽고 해당 파일 포인터를 다시 배치합니다. 자리. C# 코드의
관련 부분 :
(참고 :. 내가 사용 루프 조건이 난 그냥 지금 당장 작동을 확인하기 위해 노력하고있어, 임의적)
NetworkStream network_stream = tcp_client.GetStream();
string path = @"C:\Matlab\serial_data.txt";
FileInfo file_info = new FileInfo(path);
using (StreamWriter writer = file_info.CreateText())
{
string foo = "";
writer.WriteLine(foo);
}
using (StreamWriter writer = File.AppendText(path))
{
byte[] buffer = new byte[1];
int maxlines = 100000;
int lines = 0;
while (lines <= maxlines)
{
network_stream.Read(buffer, 0, buffer.Length);
byte byte2string = buffer[0];
writer.WriteLine(byte2string);
lines++;
}
}
관련 matlab에 코드 : I 실제 데이터 사이의 제로의 큰 뻗어 거기에 matlab에 판독 된 데이터를 보면, 언제
i=0;
while i<100;
a = fopen('serial_data.txt');
b = fscanf(a, '%g', [1000 1]);
fclose(a);
i=i+1;
end
가장 안좋은 부분은 연속적인 데이터 포인트의 수는 재 이 "거짓 제로"뻗기 사이의 광고는 크게 다릅니다.
나는 C#과 Matlab에 약간의 지연 (Thread.sleep과 wait (timerObject))을 넣으려는 생각을하고 있었지만, 그때도 나는 항상 데이터를 얻는 것을 보장 할 것이라고 확신하지 못한다. 네트워크 스트림, 필수적입니다.
어떤 조언이나 제안을 주시면 감사하겠습니다.
char 형식으로의 암시 적 변환은 없지만 byte에서 int 사이의 변환이 있습니다.테스트되지는 않았지만 해당 논리에 따라 WriteLine (Int32) 호출을 얻을 수 있습니다. – Voo
좋아, 그건 내가 처음 단락에서 생각한 것처럼 변환 문제가 아니라는 것을 의미한다. 아마도'fscanf '사용 문제 일 것입니다. –
@Voo : 바이트 -> int32 대 char 변환에 관한 내용을 제거했습니다. –