2012-05-16 1 views

답변

0

관리되는 C++을 작성하는 경우 C# 또는 Visual Basic 프로젝트에서와 마찬가지로 .NET 라이브러리 DLL을 사용할 수 있습니다. 자세한 내용은 Zaber Console source code을 참조하십시오. 예제는 모두 C# 또는 Visual Basic에 있지만 관리되는 C++에서 동일한 작업을 수행 할 수 있습니다.

관리되는 C++을 쓰지 않는다면 직렬 포트에 직접 작성해야합니다. 명령을 바이트 스트림으로 변환하는 방법을 보여주는 example C code이 있습니다. 이 스 니펫은 6 바이트를 직렬 포트에 쓸 수 있도록 준비합니다.

txBuffer[0] = deviceNum; 
txBuffer[1] = command; 
// Position 2 is LSB; Position 5 is MSB 
txBuffer[2] = (data  & 0x000000FF); 
txBuffer[3] = ((data >> 8) & 0x000000FF); 
txBuffer[4] = ((data >> 16) & 0x000000FF); 
txBuffer[5] = ((data >> 24) & 0x000000FF); 

이 스 니펫은 직렬 포트에서 수신 한 6 바이트를 처리합니다.

deviceNum = rxBuffer[0]; 
command = rxBuffer[1]; 
// Position 2 is LSB; Position 5 is MSB 
data = (rxBuffer[2]  & 0x000000FF) 
    + ((rxBuffer[3] << 8) & 0x0000FF00) 
    + ((rxBuffer[4] << 16) & 0x00FF0000) 
    + ((rxBuffer[5] << 24) & 0xFF000000); 

직렬 포트에 연결하는 방법은 예제와 다를 수 있지만 C++ 컴파일러 설명서가 도움이 될 것입니다. 프로토콜이 동기화되지 않을 경우 재설정하는 타이머와 같은 세부 정보를 보려면 예제 코드를 다운로드하십시오.

직렬 통신 프로토콜에 대한 자세한 내용은 the user manual을 참조하십시오.

아직 C++ 스크립트 템플릿을 만들지 않았지만 C++을 사용하여 Zaber Console scripts을 작성할 수도 있습니다.

0

Zaber 프로토콜을 사용하여 베어 트랩을 조심하십시오 : 마이크로 컨트롤러가 Zaber 모터와 동기화되지 않으면 하나의 패킷의 뒤쪽 절반과 다음의 앞쪽 절반을 읽지 못할 수 있습니다 (타이머를 사용하여 프로토콜 간 상태 갭을 재설정하기위한 패킷 간 타이밍 갭)

+0

켄 (Ken) 내 답변에있는 [예제 C 코드] (http://www.zaber.com/software/Zaber_C_Win32_Demo.zip)에는 프로토콜을 재설정하는 타이머가 포함되어 있습니다. 그래도 내용이 너무 자세하다고 생각했습니다. –