Q&A

  • [질문-아주급해염]pc와 장비의 데이타 문제..
안녕하세요~~

음..회사일이 한가지 문제가 생겨 이렇게 또 질문을 드립니다.

아시는분들은..꼭좀 답변을 해 주셔셔 저좀 도와주시길 ....^^;;;



음..현재 되어잇는 프로그램은요

바코드 스캐너에 있는 데이타를 PC에서 수신할때 생기는 문제입니다.



프로그램은 아크를 보내구염

그게 확인되면 데이타를 받습니다.

데이타 길이는 33자리이구요..

시작과 끝은 #37과 #127입니다.

일단 아크 보내구 다시 받구 데이타를 받구 길이 체크해서 메모장에 저장하는 식으로 되어 잇습니다.



단독으로 프로그램을 실행시키면 아무 문제가 일어나지 않습니다.

그런데 문제는 그 회사는 꼭 자기네 프로그램에서 저희 프로그램을 호출해서

사용한다는것에서 비롯됩니다.

데이타가 다 받지 않았는데 다른 데이타가 넘어와 버리는 현상이 일어납니다.

그래서 데이타가 깨지는 현상이 일어나죠..

123456789012345678901234567890123 이런식으로 넘어와야 하는데

123456%다음 데이타.(123456789012345678901234567890123 ) 이렇게 되어버립니다.

혹시나 해서 아크를 보내구 0.5초의 SLEEP을 1.5초로 늘렸는데 에러가 조금은 덜 일어나는듯하지만 없어지지는 않습니다.

어떻게 처리해야 하는지..꼭좀 부탁합니다.



만약 버퍼를 클리어가 됐다면 다음 데이타를 잡아오게 하는게 가능한지요?

비동기식으로 데이타를 수신한다면..

어떻게 코딩해야 하는지..음..그럼 수고하세요~



1  COMMENTS
  • Profile
    이정욱 2000.09.25 00:29
    음.. 이 문제는 이벤트 Driven 프로그래밍의 전형적인 문제중 하나입니다.



    일단 소스를 봐야 어느정도 알수 있겠지만 필요한 부분에서



    Application.ProcessMessages 를 처리해주시는것이 필요할 듯 합니다.



    또, 어떤식으로 그 데이타를 저장하시는지 알아야 하는데 전역변수를 사용하고 계신다면 아래와 같은 문제 발생의 소지가 많습니다.

    꼭 지역변수로 만들어서 그곳에 데이타를 저장하셔야 합니다. 그리고 텍스트로 옮기셔야 겠죠.



    저쪽 기계를 컴퓨터에서 콘트롤이 가능하다면 이런식으로 해도 되겠죠.



    #37이 들어오면 #127이 들어올때까진 그 기계에서 다시 읽어버리지 못하게 막게 하는 방법.. 즉 컴퓨터와 기계를 씽크를 시키는것이죠.



    예를들어 저쪽에서 A를 보내면 이쪽에서 다시 A를 보내줄때까지 저쪽은 그 다음일을 처리하지 못하게 하는, 즉 기계가 한일을 컴퓨터가 받아들였다는 응답이 들어오게 하는것이죠. 그렇게 하려면 루프와 위처럼 Application.ProcessMessages를 같이 사용하셔야 합니다...



    조금이라도 도움이 되셨기를...





    정성훈 wrote:

    > 안녕하세요~~

    > 음..회사일이 한가지 문제가 생겨 이렇게 또 질문을 드립니다.

    > 아시는분들은..꼭좀 답변을 해 주셔셔 저좀 도와주시길 ....^^;;;

    >

    > 음..현재 되어잇는 프로그램은요

    > 바코드 스캐너에 있는 데이타를 PC에서 수신할때 생기는 문제입니다.

    >

    > 프로그램은 아크를 보내구염

    > 그게 확인되면 데이타를 받습니다.

    > 데이타 길이는 33자리이구요..

    > 시작과 끝은 #37과 #127입니다.

    > 일단 아크 보내구 다시 받구 데이타를 받구 길이 체크해서 메모장에 저장하는 식으로 되어 잇습니다.

    >

    > 단독으로 프로그램을 실행시키면 아무 문제가 일어나지 않습니다.

    > 그런데 문제는 그 회사는 꼭 자기네 프로그램에서 저희 프로그램을 호출해서

    > 사용한다는것에서 비롯됩니다.

    > 데이타가 다 받지 않았는데 다른 데이타가 넘어와 버리는 현상이 일어납니다.

    > 그래서 데이타가 깨지는 현상이 일어나죠..

    > 123456789012345678901234567890123 이런식으로 넘어와야 하는데

    > 123456%다음 데이타.(123456789012345678901234567890123 ) 이렇게 되어버립니다.

    > 혹시나 해서 아크를 보내구 0.5초의 SLEEP을 1.5초로 늘렸는데 에러가 조금은 덜 일어나는듯하지만 없어지지는 않습니다.

    > 어떻게 처리해야 하는지..꼭좀 부탁합니다.

    >

    > 만약 버퍼를 클리어가 됐다면 다음 데이타를 잡아오게 하는게 가능한지요?

    > 비동기식으로 데이타를 수신한다면..

    > 어떻게 코딩해야 하는지..음..그럼 수고하세요~

    >