안녕하세요~~
음..회사일이 한가지 문제가 생겨 이렇게 또 질문을 드립니다.
아시는분들은..꼭좀 답변을 해 주셔셔 저좀 도와주시길 ....^^;;;
음..현재 되어잇는 프로그램은요
바코드 스캐너에 있는 데이타를 PC에서 수신할때 생기는 문제입니다.
프로그램은 아크를 보내구염
그게 확인되면 데이타를 받습니다.
데이타 길이는 33자리이구요..
시작과 끝은 #37과 #127입니다.
일단 아크 보내구 다시 받구 데이타를 받구 길이 체크해서 메모장에 저장하는 식으로 되어 잇습니다.
단독으로 프로그램을 실행시키면 아무 문제가 일어나지 않습니다.
그런데 문제는 그 회사는 꼭 자기네 프로그램에서 저희 프로그램을 호출해서
사용한다는것에서 비롯됩니다.
데이타가 다 받지 않았는데 다른 데이타가 넘어와 버리는 현상이 일어납니다.
그래서 데이타가 깨지는 현상이 일어나죠..
123456789012345678901234567890123 이런식으로 넘어와야 하는데
123456%다음 데이타.(123456789012345678901234567890123 ) 이렇게 되어버립니다.
혹시나 해서 아크를 보내구 0.5초의 SLEEP을 1.5초로 늘렸는데 에러가 조금은 덜 일어나는듯하지만 없어지지는 않습니다.
어떻게 처리해야 하는지..꼭좀 부탁합니다.
만약 버퍼를 클리어가 됐다면 다음 데이타를 잡아오게 하는게 가능한지요?
비동기식으로 데이타를 수신한다면..
어떻게 코딩해야 하는지..음..그럼 수고하세요~
일단 소스를 봐야 어느정도 알수 있겠지만 필요한 부분에서
Application.ProcessMessages 를 처리해주시는것이 필요할 듯 합니다.
또, 어떤식으로 그 데이타를 저장하시는지 알아야 하는데 전역변수를 사용하고 계신다면 아래와 같은 문제 발생의 소지가 많습니다.
꼭 지역변수로 만들어서 그곳에 데이타를 저장하셔야 합니다. 그리고 텍스트로 옮기셔야 겠죠.
저쪽 기계를 컴퓨터에서 콘트롤이 가능하다면 이런식으로 해도 되겠죠.
#37이 들어오면 #127이 들어올때까진 그 기계에서 다시 읽어버리지 못하게 막게 하는 방법.. 즉 컴퓨터와 기계를 씽크를 시키는것이죠.
예를들어 저쪽에서 A를 보내면 이쪽에서 다시 A를 보내줄때까지 저쪽은 그 다음일을 처리하지 못하게 하는, 즉 기계가 한일을 컴퓨터가 받아들였다는 응답이 들어오게 하는것이죠. 그렇게 하려면 루프와 위처럼 Application.ProcessMessages를 같이 사용하셔야 합니다...
조금이라도 도움이 되셨기를...
정성훈 wrote:
> 안녕하세요~~
> 음..회사일이 한가지 문제가 생겨 이렇게 또 질문을 드립니다.
> 아시는분들은..꼭좀 답변을 해 주셔셔 저좀 도와주시길 ....^^;;;
>
> 음..현재 되어잇는 프로그램은요
> 바코드 스캐너에 있는 데이타를 PC에서 수신할때 생기는 문제입니다.
>
> 프로그램은 아크를 보내구염
> 그게 확인되면 데이타를 받습니다.
> 데이타 길이는 33자리이구요..
> 시작과 끝은 #37과 #127입니다.
> 일단 아크 보내구 다시 받구 데이타를 받구 길이 체크해서 메모장에 저장하는 식으로 되어 잇습니다.
>
> 단독으로 프로그램을 실행시키면 아무 문제가 일어나지 않습니다.
> 그런데 문제는 그 회사는 꼭 자기네 프로그램에서 저희 프로그램을 호출해서
> 사용한다는것에서 비롯됩니다.
> 데이타가 다 받지 않았는데 다른 데이타가 넘어와 버리는 현상이 일어납니다.
> 그래서 데이타가 깨지는 현상이 일어나죠..
> 123456789012345678901234567890123 이런식으로 넘어와야 하는데
> 123456%다음 데이타.(123456789012345678901234567890123 ) 이렇게 되어버립니다.
> 혹시나 해서 아크를 보내구 0.5초의 SLEEP을 1.5초로 늘렸는데 에러가 조금은 덜 일어나는듯하지만 없어지지는 않습니다.
> 어떻게 처리해야 하는지..꼭좀 부탁합니다.
>
> 만약 버퍼를 클리어가 됐다면 다음 데이타를 잡아오게 하는게 가능한지요?
> 비동기식으로 데이타를 수신한다면..
> 어떻게 코딩해야 하는지..음..그럼 수고하세요~
>