TIL_230307

Today Jeeho Learned·2023년 3월 7일
0

TIL

목록 보기
194/249
post-thumbnail

공부한 것

  • 프로젝트 SW 기능 구현

회고

  • 오전에는 팀장님께서 지시하신 프로젝트에 대한 코드분석과 디버깅을 하려고했다. 그런데 팀장님께서 출장을 가시지않고 계셨었고, 직접한번해보시겠다고 하셔서 가지고 가셨다. 연결도와드리고 디버깅하시는 것을 같이보고싶었는데, 본인이 하시겠다고 가서 일보라고 하셨다 ㅋㅋ,, 그래서 돌아와서 오늘은 온전히 내프로젝트를 계속 진행할 수 있었다.

  • 약 130byte의 배열을 받아서 bin파일로 내 pc에 저장하는 기능을 구현하고 있었다.
    저번주부터 파일을 저장(쓰기), 불러오기(읽기)에 대한 학습과 테스트를 진행했었기에 구현자체는 어렵지 않았다. 그런데 파일명 변경을 어떻게 해줘야 할지 몰라서, 계속 동일한 파일에 덮어쓰기 형식으로 파일이 저장되고 있었다.

  • 이렇게 받은 데이터에서 필요한 부분만을 추출하기위해서 BlockCopy를 사용해서 필요한 부분만을 받아 새로운 배열에 담아주었고, 이 배열을 이제 BIN파일로 저장하려고 한다.
    C#에서는 파일을 쓰고 읽는데, 여러가지 라이브러리를 제공해주는데 그중에서 FileStream를 선택해서 진행했다.

Stream stream = new FileStream(DateTime.Now.ToString("yyyyMMddHHmmss") + "_record.bin", FileMode.OpenOrCreate);
  • 이부분에서 new FileStream(String,FileMode,OpenOrCreate) 형식으로 String에는 파일명이 들어가야 한다.
    내가 구현하는 부분에서는 초 단위로 계속해서 데이터가 바뀌기 때문에, 기록버튼을 누른 그 시점에 데이터를 저장해야하는 기능이다. 그래서 파일명을 같게하면 그전의 데이터가 없어지고, 그냥 덮어써지기 때문에 파일명을 변경해줄 필요가 있었다. 어떻게 해주면 좋을까를 생각하다가
    record1, record2 이런식으로 저장을 하면서 구분을 해주었다. 그런데! 프로그램이 다시 시작될때도 1부터 시작하기때문에 이전의 데이터를 저장할 수 없고, 덮어써지는 구조가 반복되었다. 아주 확실하게 구분하기 위해서는 저장하는 시간정보를 파일명에 입력하여 저장해줘야겠다고 생각했다. 이렇게하면 모든 파일을 충분히 구분해줄 수 있기때문이다.

  • 그래서 Datetime을 사용해서 구분을 하려고하는데, stream문에 들어갈 수 있는 형식이 있고, 들어갈 수 없어서 에러처리가 나는 형식들이 있었다. 여러가지 형식들을 구분하다가 "yyyyMMddHHmmss"으로 입력하여 파일명들을 구분할 수 있었다.

  • 결과로 로그를 남길때에도 시간정보로 남겨주었고, 파일명도 제대로 잘들어갔다.

  • 내가 생각했을때 필요한 기능들은 어느정도 구현이 되었고, 이제는 다른 장비와 함께 연동해서 테스트를 진행하며 수정과 보완을 해가야하는 상태라고 생각한다. 연동하는 SW구현은 아직 만들어지지 않아서 조금 기다리면서 현재 까지 작성한 코드를 보완할 예정이닭

profile
기록해야 (살아)남는다 !

1개의 댓글

comment-user-thumbnail
2023년 3월 8일

c#이 좋다니까요~ 마지막 닭은 좀... 뿌링클 먹고싶다

답글 달기